导语:常见于谷歌商店内的一些游戏

一开始的思路为解决Java上的一个线程调用,解决Java的退出。该方法成功让我们的存活时间延长了30秒。且java层再无其他调用



最后抓出了几个线程的创建进行ret,游戏存活时间延长10秒,弹窗消失[滑稽]
胜利不远了,这时的退出非常有趣了,Java层、c层都拦截不到。只能一路看调用找到了最终的线程开始处51500,这个地址。伪代码达到了1000多条在这个不到1m的文件下。这个代码量绝对核心。
两眼一闭[呵呵]继续看c代码。一些关键的代码:
strcpy((char *)(v16 - 520), "magisk(Alpha)");
sub_24218(0x1B8Eu, 0x100u, v16 - 520); 好了一个面具的检测,终于让我百分之八十确定了这个方法是个主要的初始化代码可能用于生成动态dex?注册native?建立大量检测线程?
如果直接ret她会导致我们的游戏进入不了,为此只能转为分析出所有关键线程启动位置进行ret。
最终总共耗时1个小时完成整个游戏的过签。
该加固最终总结是不难,但是烦人以我对游戏逆向的习惯。纯靠手动去分析的游戏我是最烦的(所以一些混淆方法名的游戏我很烦),更喜欢分析完成后可以写出自动化的功能脚本 一运行cmd滑滑出现大量成功日志那种[滑稽]所以本次教程我们没有什么自动化脚本提供,全部都是针对性某一个位置或者分析需求写的一些分析代码。个人能力有限找不到共同点以作锚点
分析结束[呵呵]
