本帖最后由 淡然出尘 于 2014-9-10 20:40 编辑
前言 第一版的时候我就对捕鱼达人进行过简单的分析,详见:http://blog.sina.com.cn/s/blog_92b6d74d0102uyz1.html。
对于第二版感觉应该大同小异,但是我具体做的时候 还是遇到各种各样的问题,在好友 @晴天 的指点下,慢慢的完成了 特意记录下来,
也为新的博客增加一些内容。
Dump dex 这个步骤遇到的问题是:到最后会dump到一个a.smali文件过不去。过不去就过不去吧,提取出samli文件夹照样用。 其实我们平常反编译出的smali文件有很多是无用的 即可有可无。之所以存在有时是备用,有时是第三方SDK的冗杂, 所以当意识到dump出的smali文件不完整时,就提取出来试试,能够编译成功就是成功的一半了。
修复 编译时,会出现和第一版同样的错误,同样的方法修复即可。安装运行后发现,会闪退。 一开始我没想过看程序LOG,感觉可能是Dump不完整造成的。是 @晴天 提醒了,看了LogCat一目了然。
关键词“fuck exit1”,并不知道具体在哪个文件里,那就用Notepad++全词匹配全文件夹搜索,出现了armeabi、armeabi-v7a两个文件夹下的libfishingjoy3.so中,
表示对应不同的cpu指令集,鬼哥的说法是删除-v7a 只修改armeabi的那个就行,这里我们就不偷懒,一个一个的来。IDA出马:
[Asm] 纯文本查看 复制代码 00200C30 00DO //修改为 00EA
接下来修改armeabi-v7a下的libfishingjoy3.so, [Asm] 纯文本查看 复制代码 00200150 40F07281 //修改为90909090 修改完之后,运行倒是可以打开了,但是加载完100%后,还是会退出,小米弹出了下面的Log
a 可以推断是org.cocos2dx.Controller.ChinaMobileIAPSwitch$1中的CMGCIAP初始化失败
破解内购
破解内购的方法跟第一版的一样。鉴于很多童鞋问我绕过支付界面的方法,这里我就先笼统的说几个常见的,
以后有时间就专门写个帖子:
1、有限额的游戏,就直接修改限额提示的方法,让它执行到“已经购买”的操作;
2、在onbillingfinash的方法中 找到成功跳到的方法,稍作修改 或赋值、或改跳,
然后复制到支付界面的方法下,一般的标识是addpayment、pay、dopay等。
后记
1、试想一下,如果作者将明显输出的LogCat抹去 恐怕比较难分析出来,但须处处留心,以前我记得Native层退出的代码:
[Asm] 纯文本查看 复制代码 loc_50AC20
MOV R0, #0
BL nativeExit
BL getpid
MOV R1, #2 ; sig
BL kill
2、一定要认真看程序输出的Log,看懂了 修复的时候就知道从哪下手了。
|