看完了《游戏安全-手游安全技术入门》,里面的样例破解了一个2048,遂上网挑了个简单的2048的APP,开始尝试。
挑选的APP是无壳、无反调试,且代码量非常少的一款2048。破解的目标定为直接生成一个2048。
首先为了能方便的查看源代码,使用jadx这款工具进行反编译。
搜索score关键字,发现生成逻辑在com.cloudy.game.logic.world。
查看生成方块的代码,发现生成逻辑是,随机生成2或者4的方块,2的概率大,2的方块对应的资源文件是0.png 4的方块对应的资源文件是1.png ,2048对应的资源文件是10.png
为了达到预期效果,return值一律设置为10。
同时为了将2048重打包,需要在apktool反编译出的smali文件上的对应语句处修改,执行反编译命令apktool.bat d -f 2048.apk -o 2048
此处Smali语句改为const/16 v1,0xA
然后执行重打包命令apktool.bat b 2048
执行重签名命令java -jar signapk.jar testkey.x509.pem testkey.pk8 2048.apk 2048_signed.apk
测试效果如下↓
参考链接及感谢:
Smali修改和重打包
https://blog.youkuaiyun.com/sxk874890728/article/details/80486223
Apktool使用
https://blog.youkuaiyun.com/qq_27292113/article/details/79931268