基于dexdump+Objection+Frida的Android动态密文分析实战
字数 1516 2025-09-23 19:27:38
基于 dexdump + Objection + Frida 的 Android 动态密文分析实战
1. 背景与工具概述
在 Android 应用安全分析中,常会遇到动态加载或运行时解密代码的情况(类似 Windows 平台的 SMC 技术)。静态分析难以处理这类问题,需要动态分析手段。本实战通过具体案例演示如何组合使用以下工具进行动态密文分析:
- frida-dexdump: 用于内存 DEX 脱壳
- Objection: 基于 Frida 的动态分析工具,提供内存操作、类方法调用等功能
- Frida: 动态插桩框架,支持自定义 JavaScript 脚本
- CyberChef: 网络版编解码与加密工具
- Python: 辅助脚本编写
注意:案例中应用使用了魔改 RC4 和 AES 加密算法。
2. 工具安装与配置
2.1 安装 Frida 及相关工具
pip install frida-tools objection
2.2 安装 frida-dexdump
pip install frida-dexdump
2.3 准备 CyberChef
访问 https://gchq.github.io/CyberChef/ 即可使用。
3. 实战步骤
3.1 脱壳:使用 frida-dexdump 提取 DEX 文件
- 确保 Android 设备(或模拟器)开启 USB 调试,并安装目标应用。
- 运行以下命令进行脱壳:
frida-dexdump -U -f com.example.targetapp
- 脱壳完成后,当前目录会生成多个
.dex文件。
3.2 静态分析遇到问题及解决
- 问题:将脱壳后的 DEX 文件导入 IDA 时出现报错。
- 解决:在 IDA 加载过程中选择 “No”(不进行校验),即可正常加载分析。
3.3 动态分析获取密文
分析发现密文在运行时动态解密,因此需通过动态方式提取。
方法一:使用 Objection 直接查看内存
- 注入 Objection 到目标进程:
objection -g com.example.targetapp explore
- 在 Objection shell 中搜索或遍历内存中的字符串:
android hooking list classes
android hooking search methods "decrypt"
memory list strings
方法二:使用 Frida 脚本主动调用解密方法
若已知解密函数,可编写 Frida 脚本直接调用:
Java.perform(function () {
var targetClass = Java.use("com.example.targetapp.CryptoUtils");
var decryptedData = targetClass.decryptMethod("encrypted_data_here");
console.log("Decrypted: " + decryptedData);
});
执行脚本:
frida -U -f com.example.targetapp -l decrypt_script.js
获取到的密文
本例中密文为:
MD97pPa8Dd3cAlJSdCHkPTwmtVL64przZk3HFpU5JaiVrD6dMEhq3BKLXuk6iT4F
3.4 解密步骤
第一步:AES 解密
使用 CyberChef 进行 AES 解密:
- 输入密文
- 选择 AES Decrypt
- 设置参数(如模式、密钥、IV等,需根据静态分析结果确定)
第二步:魔改 RC4 解密
由于算法被魔改,需调用应用内的解密函数或自行实现算法:
- 方案一:通过 Frida 调用内置 RC4 解密函数
- 方案二:根据逆向出的算法逻辑用 Python 实现解密
def custom_rc4_decrypt(ciphertext, key):
# 实现魔改RC4逻辑
pass
4. 获取 Flag
经过 AES 解密和魔改 RC4 解密后,最终得到 Flag。
5. 关键点总结
- 脱壳是基础:使用
frida-dexdump可有效处理加固应用的脱壳。 - 动静结合:静态分析发现算法逻辑,动态分析提取运行时数据。
- Objection 实用命令:
android hooking list classesandroid hooking search methodsmemory list strings
- Frida 脚本调用:主动调用解密函数可快速获取解密结果。
- 算法魔改处理:需结合逆向结果自定义解密逻辑或调用原方法。
6. 参考文献与扩展
通过本实战,你可掌握处理 Android 动态密文的基本流程与关键技巧。