无聊耍水果忍者,对于这类单击游戏,习惯性产生一个想法,作弊- –
安装目录下有个文件fruit.bin,越43M,除此之外,没有什么敏感性文件。应该是存储了水果忍者用到的主要资源文件等物质。随便拿个winrar尝试打开,居然正常打开文件- -,果然猜的没错,不过文件被加密了。揪心。。。
由于最初安装程序,启动的时候,提示无法找到zlib1.dll,后经过一番百度,google,确认,该程序采用zlib库对zip文件进行解压处理
基本思路:既然文件被加密,那么,无论怎么样,程序要解压的时候,一定要告诉zlib库解压密码,否则,他自己就不能解压出需要的资源文件。所以只要找到程序设置zlib解压密码的地方,不出意外,应该能找到明文密码。继续- –
于是准备工具,OllyDbg,notepad++
首先OllyDbg打开FruitNinja.exe,个人习惯问题,将所有反汇编出来的代码复制到txt文档,采用notepad++分析
一段时间过去,找到如下代码
0042FDD2 |. 50 push eax ; /Arg3
0042FDD3 |. 33FF xor edi,edi ; |
0042FDD5 |. 57 push edi ; |Arg2 => 00000000
0042FDD6 |. 68 2CBD5400 push FruitNin.0054BD2C ; |Arg1 = 0054BD2C ASCII “fruit.bin”
0042FDDB |. 897C24 24 mov dword ptr ss:[esp+24],edi ; |
0042FDDF |. E8 4CAF0200 call FruitNin.zip_open ; zip_open
0042FDE4 |. 83C4 0C add esp,0C
0042FDE7 |. 68 D8BC5400 push FruitNin.0054BCD8 ; ASCII “f83j#j;.!nZ+94(mB523+=+*vaeuq4TyU2bxoe,bcuy%zXz3719#YDWb531&^724h3#12b34”
0042FDEC |. 50 push eax
0042FDED |. 8946 0C mov dword ptr ds:[esi+C],eax
0042FDF0 |. E8 5BBB0200 call FruitNin.zip_set_default_password
这段代码大致意思,采用zip方式打开文件(当然,这个函数名他自己定义的),后面紧跟了一句,设置默认密码。这个应该就是传说中的密码了吧,也太长了点- –
直接用winrar解压fruit.bin,输入密码
f83j#j;.!nZ+94(mB523+=+*vaeuq4TyU2bxoe,bcuy%zXz3719#YDWb531&^724h3#12b34
成功解压。(不同版本的也许会不一样,这个就要看反汇编出来的代码了)
现在资源文件已经成功获取,要思考如果修改达到作弊的目的了,好比修改水果分值之类的,只是一个思路。
代码写久了,偶尔搞搞逆向分析,有点意思。有兴趣的可以一起研究,分享下经验。
文章知识点与官方知识档案匹配,可进一步学习相关知识C技能树首页概览113281 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!