记一次so修改无条件使用货币
【示例游戏】羽毛球高高手,某Tap平台上下载,(如果这句话涉嫌推广,请通知本人,本人会修改相关词汇)【所需工具】IDA(爱盘里面有下载)
【开始操作】
经过本人的试验,这游戏有联网的dex验证,去除联网权限会闪退,所以把内容放到so文件上了
我们先解压出lib文件里面的libMyGame.so文件,用IDA打开分析
单击左边函数窗口,按Ctrl+F打开搜索窗口
我先搜过很多关键词,例如gold,coin,gem,diamond
在我搜索coin的时候,并没有发现getCoin类似的方法,所以没法直接修改大量货币,但是我看到如下这个方法
getNeededDiamondsCountToBuyCoins(CommonUtils *__hidden this, int)
翻译过来的意思是,获取购买金币所需要的钻石的数量
【修改思路】让这个方法返回0,或者负数,这样购买金币就可以不需要钻石了
【修改操作】
同步到对应的十六进制代码,按F2开始编辑
因为不确定是arm汇编还是THUMB汇编,所以我直接实验,先试试arm汇编
0000 A0E3---MOV R0,#0
1EFF 2FE1---BX LR
按F2保存后看见汇编代码出错了,所以判断不是arm汇编
现在换成THUMB汇编
0020---MOV R0,#0
7047---BX LR
多余的用00补齐
我们再来看看汇编代码,这次没问题了
然后保存后退出,替换掉原本的so文件,进入游戏测试一下,修改成功
【总结】
修改所需要钻石购买金币的数量为0,可以实现无条件使用钻石购买金币 奇奇小霸王龙 发表于 2019-10-30 16:42
请问 修改代码部分 怎么确定补0补多少?
BX LR是跳出返回的意思?
bx lr 是返回R0寄存器里面的值的意思,如果你不是很懂,可以去找找arm汇编指令的教程看看 feob 发表于 2019-9-17 07:36
感谢楼主,问下能修改联网游戏吗
看游戏数据是不是存在服务器的,如果本地有数据的话才能改 有成品嘛{:1_937:} 有成品嘛 真的是学习了 感谢楼主,问下能修改联网游戏吗 这游戏跟QQ和微信的那个羽毛球小游戏真是一个模子。。
学习了,,,{:1_893:} 很厉害哦~教练,我想学 可以的下再来玩试试 谢谢分享