最近下载了一款游戏“XXX.app”,它的游戏好像是模仿psp的 XXXXXXX
可惜游戏中的画面还是没有PSP做的好,有在网上看到这款游戏的安卓破解版,但是看到的都是什么内购破解,无限金币,无限砖石什么的,就想着既然那么多金币钻石什么的都是用来升级武器啥的,最终也就是升级他的攻击力,杀怪伤害,那我们能不能修改他的攻击力呢?
那我们就开始着手试下:
一:需要的工具如下:
Android killer
IDA pro
arm_asm
010Editor
要破解它首先先把它拖入Androidkiller中反编译一下,得到的目录结构,如下图:
随便浏览了一下发现这是用cocos2d-x游戏引擎制作的,那么它的很多数据初始化应该就是在 lib 文件夹里,那我们就着手试下,打开后缀名为.so文件所在的目录
以我的习惯就是先从比较大的文件开始看,因为游戏中初始化的东西多了,逻辑多了,那么它的so文件肯定也大(个人观点,猜的,我也没使用cocos2d-x开发过游戏,也不太懂,就靠推断和经验),那我们就从大
的文件入手了,直接拖入ida中查看此文件,映入眼帘的是这样的一种格式,如下图:
那么一般我都会在Exports栏下搜索关键字,因为Exports栏下都是一些方法的输出,如果游戏中一般要获取钻石啊,金币什么的,正常的习惯就是getCoin,getDiamond。。。但是一般我都直接搜Coin,Diamond。。。(因为如果写这个游戏的人他写的是get_Coin,get_Diamond。。。或者别的,那我们就搜不到了,因为有下划线或其他的)
那么我们直接在此栏下面Ctrl+F搜索attack(攻击),得到一堆的结果。。。如下图:
那么我们怎么判断哪个是真的获取攻击值呢,一般就直接找那种有getXXX什么的,当然可能也有别的情况,这里可能需要点英文基础,不懂的也可以立马百度查,看懂一些关键字,有时候也能大概猜到哪个函数的作用。。。
看到heroAttack,猜想有可能,点进去看下。。。一脸懵逼,其实汇编我也看不太懂,还在学习中。。。哈哈哈。。
再继续看以下的方法看到有getWeaponAttack,这个极有可能就是获取攻击力的方法,点进去看看,按空格键,切换到试图模式
一般我看这种方法,都会大致浏览下整个方法,看起来不是很复杂,虽然也看不太懂,但是如果它要输出的话,肯定在最后获取一个数值,最后就是给R0赋值了,那我们就直接给它赋固定值吧,变成不管它上面的逻辑怎么处理,到最后一定是执行我们给的固定值。
那么我们找到关键点了,点击此处,然后切换到Hex-view-1查看它的16进制码,如下图:
复制它的地址及对应的16进制码,先放到txt文件中,然后关闭这个文件,
这里说明一点,怎么直接给R0赋值,这里需要用到一个工具arm_asm.exe(后面会给出下载地址),感谢制作此工具的人,这是一个汇编转16进制码的工具,此工具有些是无法转换的,例如。。。
然后关闭ida之后,然后我们再使用010Editor打开刚才的那个so文件,可直接把so文件拖入010Editor,因为我们刚才已经知道那个最后获取攻击力的地址了,所以这里直接Ctrl+G跳转到那个地址,如下图:
修改完之后,保存,然后重新再次编译生成apk,运行之后,杀怪伤害如下图:
一击必杀,破解成功,,999999真的是6翻了。
最后贴上已经破解的游戏和arm_asm工具:链接:http://pan.baidu.com/s/xxxxxxxxx 密码:xxxxx
累死了,,写一篇要各种整理,累累累。。。
总结:这里主要讲到so文件的修改方式,和利用一些关键词去修改,这只是我的一些思路,如果你有搞怪的方法,还请留言一起探讨下,最后还是那句:以上只是用来技术交流,如果您使用该已经破解的游戏用于任何非法用途,均与本作者无关。