
Part1 前言
最近,关于 IDA Pro MCP 的强大能力传得沸沸扬扬。作为一个对新技术始终抱有好奇心的技术人,我决定亲自上手测试一番。起初我抱着半信半疑的态度,但实际体验过后,AI 的发展速度再次刷新了我的认知。为了充分验证其能力,我特意挑选了一个颇具挑战性的目标:一个 Java 代码经过混淆、核心 so 文件也做了加密和混淆的 APK。令人惊讶的是,在 AI 的辅助下,不到一个小时就完成了核心逆向分析,甚至连加密数据包的解密函数都被自动还原并写出了 Python 代码,整个过程高效得不可思议。
Part2 技术研究过程
前期准备工作
首先,经过一系列抓包操作,成功获取到了目标 APK 的通信数据包,如下图所示。

随后,使用 jadx 打开该 APK,并以数据包中的参数名 rOSwHu 作为关键字进行全局搜索,成功定位到了关键的 Java 代码逻辑。

通过分析可知,核心的数据处理逻辑被封装在 BeinasongTowerHelper 这个类中。

最终,数据处理依赖于 drj 和 epj 两个函数,它们都是通过 System.loadLibrary 加载本地 so 库来实现的。这意味着真正的加解密算法隐藏在 so 文件内部。

接着,我将 APK 文件作为压缩包打开,在 lib 目录下寻找可疑的 so 文件。经过比对,libbeinasongtower.so 极有可能是包含自定义加密逻辑的文件,而其他 so 文件多为系统或第三方标准库。

准备工作就绪,我使用 IDA Pro 9.3 打开 libbeinasongtower.so 文件。等待初始分析完成后,在 Plugins 菜单中启动 MCP Server 服务。

随后,在 Claude 中配置好 MCP 客户端,准备联动 IDA Pro 对 so 文件进行逆向工程分析。在开始前,首先确认 IDA Pro MCP 的连接与配置状态,这一步至关重要。

构造AI提示词
确认配置无误后,开始对 APK 中的加密函数进行自动化分析。我向 AI 提供了以下提示词:“这个是apk反编译后的代码,epj是加密函数,drj是解密函数,请参考这段代码,从IDA Pro MCP中分析的so文件中,找到这两个函数的具体实现”。

接下来,AI 利用 IDA Pro MCP 提供的 list_funcs 等功能,快速梳理了 JNI 函数的注册情况。通过 decompile 功能,逐步分析了函数调用链,最终定位到了两个核心函数的实际实现地址。

经过 Claude 与 IDA Pro MCP 的联动分析,仅用了几分钟就明确了两个函数的映射关系:加密函数 epj 对应的 JNI 入口是 sub_1AF34;解密函数 drj 对应的 JNI 入口是 sub_1B534。

AI 继续深入,分析了 sub_14B5C 这个函数。通过 MCP 的 analyze_function 和 decompile 功能,快速解析了其内部逻辑,包括对 sub_165D8、sub_177F0 等子函数的调用,逐步揭开了 Base64 编码处理的面纱。

此时,我们回到 IDA Pro 界面,手动查看一下 sub_1B534 函数的伪代码。可以看到,其内部充满了各种混淆和复杂的控制流,如果依靠传统人工逆向分析方法,理解起来非常困难,通常需要借助动态调试才能厘清算法逻辑。

但在 AI 的帮助下,我们无需深入理解这些令人头疼的细节。直接给出新的提示词:“使用python还原sub_1B534函数”。

AI 最初生成的 Python 代码未能成功解密。于是我调整策略,提供了从 APK 中抓取的真实加密数据包作为样本,并给出更明确的指引:“这个是需要解密的从apk中抓到的文本,可能需要url解码一次”。这让 AI 有了“试错”和修正的依据。

经过几轮迭代,AI 最终输出了完整的分析报告、可运行的 Python 解密脚本,甚至还包括了对应的加密函数实现。

最后,执行定稿的 Python 解密脚本,成功将 APK 通信中的加密数据包还原为结构清晰的明文 JSON 数据。

Part3 总结
- 技术演进的速度超乎想象,AI 正在深刻改变传统逆向工程的工作模式,将分析师从繁琐的代码理解中解放出来,更专注于策略和逻辑。
- 本次实战案例完整演示了如何结合静态分析(定位 so 文件)、AI 辅助逆向(解析函数映射与 Base64/Salt 机制)以及 JNI 调用追踪,最终还原出完整的加密函数
epj 与解密函数 drj。
- Claude + IDA Pro + MCP 的组合,能够极大提升对复杂混淆的 Android APK 或 so 文件的分析效率,快速定位关键逻辑,节省大量手动分析的时间。
这次体验让我深刻感受到,善用人工智能工具,能够让我们在技术探索的道路上走得更快、更远。希望这篇实战记录能给你带来一些启发。如果你想了解更多类似的技术拆解与实践分享,欢迎关注 云栈社区 上的技术动态。