我的单机游戏破解之路
目标:破解这个单机游戏,实现无线资源和无限金币和star (金幣 coin,經驗 exp, 星星 star, 商品 shop)
实际:进入游戏后金币越消耗越多,金币越多,经验就越多,star重置为80,刚好够用,商店商品设置为99,消耗之后不减
破解后:



此时虽然不是无限,但是你只要打一两把,经验再消耗都不会减少,足以可以买到所有武器,至于后边打多了经验值是否会因为太大导致游戏闪退或显示负值,那我就不清楚了
工具安装:
apk解压打包签名: apktool 和uber-apk-signer-1.3.0.jar
反编译查看伪代码并修改二进制文件: ghidra, java ,hxd
解压apk到xxx
apktool d xxx.apk -o xxx
将xxx下的所有文件打包成xxx1unsign.apk
apktool b xxx -o xxx1unsign.apk
对xxx1unsign.apk签名
java -jar uber-apk-signer-1.3.0.jar --apks xxx1unsign.apk
电脑上的安卓模拟器我用的是夜神模拟器
地址 机器码 汇编指令 伪代码注释
0015a3d0 f7 b5 push {this,param_1,r2,r4,r5,r6,r7,lr} 0015a3d2 07 1c adds r7,this,#0x0

踩坑之路:
GG修改器,精确和模糊搜索改了都不生效,有些甚至是闪退
\assets\data\config.bin 用AI分析这里边的内容,发现确实是一些初始值,但改了之后打开游戏闪退,或者报错闪退,用ghidra搜索config.bin,然后点开搜索出来的内容,在此搜索报错的信息The file xxx,用AI分析代码,校验config.bin失败后忽略错误继续,但之后还是进不去游戏
lib\armeabi\libgame.so用AI分析ghidra反编译这个之后的伪代码,搜索coin,然后修改getcoin个getexp函数对应地址的物理地址的值,模拟器里金币修改成功,经验却无法使用,真机全是负值
最终,由于getcoin里金币已经修改成功,修改getexp,改为金币的偏移地址,实际效果就是只要经验有变动,经验就会变为和金币数量一样
如何使用ghidra



我们要修改的是金币,所以搜coin即可,搜到相关函数后将搜索结果和部分伪代码贴给AI让他帮忙分析你的需求,然后修改测试
注意:ghidra里的偏移地址跟HXD里的偏移地址是不一样的,我都是在HXD里搜ghidra里偏移地址右侧的值然后修改保存.so的,保存好之后上边的步骤重新生成apk并修改签名
如何修改star?
这部分我找了好几天star相关函数,改了都没用或者闪退
导出所有伪代码,分析目标函数
Ghidra里File->Export program
Format:C\C++
Output:xxx.c
在.c搜索star可以搜到好多,其中IUpgradeMenu::UpdateStar()是控制游戏页面显示,GameData::UpdateStar()是实际star数量
然后在Listing这个窗口ctrl+f搜索这两个函数,找到Listing窗口的代码,比如
**************************************************************
* GameData::UpdateStar() *
**************************************************************
UpdateStar:00161e9c(c)
0013d224 f0 b5 push {r4,r5,r6,r7,lr}
0013d226 03 1c adds r3,this,#0x0
然后将这两部分都喂给AI,让他帮忙把star修改为80,然后参考AI提供的思路用HXD去修改.so文件,之后重新打包签名,模拟器里安装后,只要通关游戏第一关后就会触发更新star为80,即可对所有舰船全部完成升级


如何修改無限商品?
在僞代碼裏搜索shop,會找到好多,UIShopMenu::RefreshItemNum 和 ItemsBar::RefreshItemNum,
-
GameData::GetItemHp -
GameData::GetItemShip -
GameData::GetItemNuke然後詢問AI如何設置成數量99,消耗之後數量不會減少,注意,修改的字節位數要和原先的位數一致,否則會閃退 -
如修改 GetItemNuke (地址 0013d894)可以實現無限核彈
原 10 字节:
08 b5 4c 30 f9 f7 93 fa 08 bd
改为:63 20 70 47 00 00 00 00 00 00 -

浙公网安备 33010602011771号