什么都只会一点 发表于 2019-9-17 00:14

记一次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 19:33

奇奇小霸王龙 发表于 2019-10-30 16:42
请问 修改代码部分 怎么确定补0补多少?
BX LR是跳出返回的意思?

bx lr 是返回R0寄存器里面的值的意思,如果你不是很懂,可以去找找arm汇编指令的教程看看

什么都只会一点 发表于 2019-9-17 11:36

feob 发表于 2019-9-17 07:36
感谢楼主,问下能修改联网游戏吗

看游戏数据是不是存在服务器的,如果本地有数据的话才能改

tzwdj01 发表于 2019-9-17 02:21

有成品嘛{:1_937:}

gotu110 发表于 2019-9-17 03:05

有成品嘛

a3322a 发表于 2019-9-17 05:27

真的是学习了

feob 发表于 2019-9-17 07:36

感谢楼主,问下能修改联网游戏吗

sylainy 发表于 2019-9-17 08:28

这游戏跟QQ和微信的那个羽毛球小游戏真是一个模子。。

情有独钟 发表于 2019-9-17 09:18

学习了,,,{:1_893:}

共你山今 发表于 2019-9-17 10:36

很厉害哦~教练,我想学

佚丶名 发表于 2019-9-17 10:48

可以的下再来玩试试

971105587 发表于 2019-9-17 11:00

谢谢分享
页: [1] 2 3 4 5
查看完整版本: 记一次so修改无条件使用货币