yimsong 发表于 2019-5-6 10:41

去除单机游戏《爱丽丝快跑》Dex文件校验过程分享

本帖最后由 yimsong 于 2019-5-7 20:57 编辑

目标APK来自这个帖子:https://bbs.binmt.cc/thread-16558-1-1.html
APK下载地址:http://t.cn/ESQ1mIT

原帖内容:




本人对 ARM 反汇编和 IDA 软件不是很懂,之前有接触过 OllyDbg 也只是略懂皮毛
这是第一次使用 IDA 反汇编修改 Android 应用也是在摸索中完成的,算是一次挑战和学习
同时教程也写的尽量详细,以供新手互相学习借鉴

修改过程:

看到原帖说有 Dex 文件校验,大概想到应该是计算 classes.dex 文件的 MD5 或 SHA1 哈希值来判断
进入 APK 的 lib 目录查看只有两个文件,很明显校验应该是在 libLauncher.so 文件中
然后第一个想法就是尝试在 libLauncher.so 文件中搜索 classes.dex 文件的哈希值



先使用 HASH 工具计算 classes.dex 文件的哈希值




复制 MD5 到 WinHex 中搜索 libLauncher.so 文件,出乎意外一下就找到了




既然找到了那就丢进 IDA 进行分析修改
IDA 打开 libLauncher.so 文件后按 Shift+F12 打开字符串窗口




再按 Ctrl+F 查找字符串 af84c8dd47cc24a724621ffd09ff0eb8,然后双击字符串跳转




跳转到汇编窗口后可以看到是 VerifyApp 函数内部引用了字符串,双击 VerifyApp 进入到函数




进来函数后可以看到
前面调用 zip_fread 读取 classes.dex 文件,然后调用 ComputeMD5Sign 计算 classes.dex 文件的哈希值,后面三条指令是关键指令
BLX    strcmp            // 对比哈希值字符串
CMP    R0, #0            // 判断对比结果是否相等
BNE    loc_A2A3C      // 如果不相等则跳转到 loc_A2A3C要去除校验可以 NOP 掉跳转 或 修改 CMP 结果,这里以修改 CMP 结果为例




IDA 中好像不能直接修改汇编指令,还是我没找到方法?
但是发现 Hex 窗口中可以修改,由于不清楚 ARM 汇编指令的机器码所以使用在线工具进行转换
得到机器码为 8042




回到 IDA 点击 CMP 指令然后切换到 Hex 窗口




光标高亮的地方就是 CMP 指令,鼠标右键选 Edit... 或按 F2 进入编辑模式




把 00 28 修改成 80 42
然后鼠标右键选 Apply changes 或按 F2 应用修改




回到汇编窗口看一下,已经变成了 CMP R0, R0 了




接下来就可以保存修改结果到原文件了
ps:由于是第一次使用 IDA 修改不知道怎么保存,在菜单中随便看了一下
在 Edit 菜单下看到了 Patch program 和 Apply patches to input file...
猜测可能是这个菜单选项就尝试点一下 Apply patches to input file...




然后 ok 保存
结果还真被我猜对了,修改保存成功
至此这次反汇编修改去除 Dex 文件校验到此结束




另外如果不想使用 IDA 进行分析修改,可以使用其它十六进制软件直接修改 libLauncher.so 文件
以 MT2 为例:
十六进制模式打开文件后,点击右上角菜单,选择 跳转到...
输入地址 A2A26 确定
修改 00 28 为 80 42 保存即可









补充:发现 IDA 可以直接修改指令
在指令上鼠标右键选 Keypatch -> patcher 或 按快捷键 Ctrl + Alt + K 然后直接修改即可






恐山凌 发表于 2019-5-6 18:34

12年的时候这游戏在iPhone4S上跑到世界排名第一(当时的)
后来换手机后发现多了一堆花里胡哨的东西

Y阿奴 发表于 2019-5-6 12:10

另外如果不想使用 IDA 进行分析修改,可以使用其它十六进制软件直接修改 libLauncher.so 文件

yimsong 发表于 2019-5-6 10:52

本帖最后由 yimsong 于 2019-5-7 20:56 编辑

第一个帖子就不回复可见了,喜欢的朋友请 回复 + 点赞

bailandi 发表于 2019-5-6 10:59

楼主有心了。点赞。

wjzgl001 发表于 2019-5-6 11:18

看不懂也要为分享精神点赞

隔壁老白 发表于 2019-5-6 13:08

爱丽丝老了跑不动了

qazwert 发表于 2019-5-6 14:47

看不懂也要为分享精神点赞

多幸运遇见baby 发表于 2019-5-6 15:47

新人加油!

水鸟 发表于 2019-5-6 16:22

我等小白,只能说不明觉厉,{:1_893:}

3134222b 发表于 2019-5-6 16:36

感谢分享
页: [1] 2
查看完整版本: 去除单机游戏《爱丽丝快跑》Dex文件校验过程分享