吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 7659|回复: 13
收起左侧

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

  [复制链接]
yimsong 发表于 2019-5-6 10:41
本帖最后由 yimsong 于 2019-5-7 20:57 编辑

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

原帖内容:

Snipaste_2019-05-06_07-27-24.png


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

修改过程:

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

Snipaste_2019-05-06_09-19-55.png

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

Snipaste_2019-05-06_07-35-44.png


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

Snipaste_2019-05-06_07-36-12.png


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

Snipaste_2019-05-06_07-45-32.png


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

Snipaste_2019-05-06_07-54-56.png


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

Snipaste_2019-05-06_07-59-33.png


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

Snipaste_2019-05-06_08-16-18.png


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

Snipaste_2019-05-06_08-26-32.png


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

Snipaste_2019-05-06_08-30-14.png


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

Snipaste_2019-05-06_08-33-22.png


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

Snipaste_2019-05-06_08-36-46.png


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

Snipaste_2019-05-06_08-38-26.png


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

Snipaste_2019-05-06_08-43-18.png


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

Snipaste_2019-05-06_08-46-15.png


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

Snipaste_2019-05-06_08-52-39.png

Snipaste_2019-05-06_08-53-20.png

Snipaste_2019-05-06_08-53-28.png



补充:发现 IDA 可以直接修改指令

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


Snipaste_2019-05-07_20-46-56.png


Snipaste_2019-05-07_20-47-52.png


Snipaste_2019-05-07_20-48-11.png

免费评分

参与人数 9威望 +1 吾爱币 +20 热心值 +7 收起 理由
Minesa + 1 + 1 热心回复!
qtfreet00 + 1 + 12 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
多幸运遇见baby + 1 + 1 鼓励转贴优秀软件安全工具和文档!
连晋 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
王小雨 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
夜步城 + 1 我是从mt论坛过来的😄
lzc090 + 1 + 1 谢谢@Thanks!
sushangyu + 1 + 1 就这恒心,我就够佩服了,用winhexji解开so文件就望而却步
bailandi + 1 + 1 谢谢@Thanks!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

恐山凌 发表于 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
我等小白,只能说不明觉厉,
3134222b 发表于 2019-5-6 16:36
感谢分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 23:11

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表