你能想象吗?对着 AI 说一句"帮我分析这个 APK",它就自己打开 IDA、拆解代码、Hook 运行时、提取密钥、还原源码……全程不用你碰一下鼠标。
先说结论
我给 AI 编程助手 Antigravity 装上了 4 把"瑞士军刀",让它从一个只会写代码的助手,变成了一个能独立完成逆向分析的安全研究员。
整个过程的核心只有一件事:通过 MCP 协议,把本地逆向工具的能力"喂"给 AI。
这事儿的背景
Antigravity 是 Google DeepMind 做的 AI 编程助手,你可以把它理解为一个住在你电脑里的"超级程序员"。它能写代码、调 bug、搜文档,但有个致命短板——它不会用逆向工具。
就好比请了一位顶级厨师,但厨房里没有刀和锅。
而我手上有这些"刀和锅":
| IDA Pro | |
| AndroidKiller | |
| Frida | |
| ADB |
问题是:这些都是独立的桌面软件,AI 根本不知道它们的存在。
MCP:给 AI 装上"手"
这里要介绍一个关键概念——MCP(Model Context Protocol,模型上下文协议)。
说人话就是:一套让 AI 调用外部工具的标准接口。
你可以把 MCP 想象成一个"万能遥控器"。每个工具是一台不同的电器,MCP 就是那个能控制所有电器的遥控器。AI 拿着这个遥控器,就能操作任何接入的工具。
┌─────────────┐ MCP 协议 ┌──────────────┐│ │ ◄──────────────► │ IDA Pro ││ │ ◄──────────────► │ AndroidKiller││ Antigravity │ ◄──────────────► │ Frida ││ (AI 助手) │ ◄──────────────► │ ADB ││ │ ◄──────────────► │ 更多工具... │└─────────────┘ └──────────────┘怎么接入?三步搞定
第一步:给每个工具写一个"翻译官"
就是一个 Python 小脚本,告诉 AI 这个工具能做什么、怎么调用。比如 IDA Pro 的翻译官长这样(简化版):
# 注册一个叫 "ida-pro" 的工具服务mcp = FastMCP("ida-pro", instructions="二进制静态分析工具")# 告诉 AI:你可以用这个功能反编译函数@mcp.tool()asyncdefdecompile_function(binary_path, function_name):"""把编译后的代码翻译回人能读的版本"""# 后台调用 IDA Pro 完成分析 ...一共写了 4 个翻译官,注册了 35 个能力。
第二步:登记到 Antigravity
在配置文件里告诉 AI:"嘿,你现在有这 4 个新工具可以用了。"
第三步:重启 AI,完事
重启后,AI 的工具栏里就多了 35 个新按钮。
35 个新能力,都能干嘛?
直接上图:
🔬 IDA Pro — "代码翻译机"
能把编译后的二进制程序翻译回接近源代码的形式。就像把一本被翻译成外星语的书重新翻译回中文。
反编译函数、列出所有函数名 提取程序中的字符串(比如密钥、URL) 追踪某个函数被谁调用了
📦 AndroidKiller — "APK 拆解工"
能把 Android 安装包拆成零件,看清里面的每一行代码。
反编译 APK、重新打包 阅读和搜索底层代码(smali) 解析应用的配置清单
🎯 Frida — "运行时侦探"
能在 App 运行的时候,实时拦截和修改它的行为。就像给正在运转的机器装上透视镜。
注入自定义脚本 拦截函数调用,看参数和返回值 枚举所有加载的类和方法
📱 ADB — "手机遥控器"
远程控制 Android 设备的一切。
安装/卸载 App 传文件、执行命令 截屏、看日志
实战:AI 自主完成一次完整逆向
工具装好后,我们拿一个真实的 Cocos2d-x 游戏 App 做了测试。
注意:以下全过程由 AI 自主完成,我只负责看着。
🔍 第一步:AI 先"看"了一眼 APK
AI 自动解析了应用清单,搞清楚了应用的基本信息(包名、入口、权限),然后把 APK 解压,找到了核心的引擎库文件。
🔐 第二步:AI 发现代码被加密了
应用的 JavaScript 源码被加密成了 .jsc 文件。AI 在 22MB 的引擎库里搜索字符串,找到了 xxtea_decrypt 和 jsb_set_xxtea_key——确认使用了 XXTEA 加密算法。
🗝️ 第三步:AI 用两种方式找到了密钥
方法一(静态分析):AI 调用 IDA Pro 反编译了应用的启动函数,在代码里看到了密钥的一部分。但由于编译器优化,密钥被截断了。
方法二(动态分析):AI 立刻切换策略,通过 Frida Hook 了密钥设置函数,在 App 运行时捕获到了完整密钥。
两条路线交叉验证,最终确认了加密密钥。
💡 这里最让我惊讶的是:AI 在静态分析遇到困难时,自己决定切换到动态分析方案。不是我告诉它的。
📂 第四步:AI 批量解密了所有源码
AI 写了一个 Python 脚本,用提取到的密钥一次性解密了 27 个加密文件。解密流程是:
加密文件 → XXTEA 解密 → Gzip 解压 → 可读的 JavaScript 源码 ✅📊 第五步:AI 分析了源码结构
还原出源码后,AI 自动分析了应用的完整架构——模块系统、网络协议、调试接口,甚至找到了开发者遗留在代码中的内部调试系统。
过程中踩的坑(也是最有意思的部分)
坑 1:路径里有空格
IDA Pro 装在 C:\Program Files\...,空格导致命令行解析出错。AI 自己发现了问题,给路径加上了引号修复。
坑 2:SDK 版本 API 变了
MCP SDK 更新后构造函数的参数名改了(description → instructions)。AI 用 Python 的反射机制自动检测了正确的参数名。
坑 3:线程安全问题(最精彩的一个)
Frida 脚本在自己的线程运行,但 Cocos2d-x 的 JS 引擎函数必须在"GL 渲染线程"调用。直接调用 = 程序崩溃。
AI 的解决方案非常巧妙:Hook 了引擎的帧更新函数(每秒调用 60 次),把要执行的代码排队,在下一帧由正确的线程安全执行。
这就像你不能在高速路上突然停车修轮胎,但可以在下一个服务区停下来修。
坑 4:内存结构未知
AI 需要读取 JS 引擎的返回值,但不知道返回值在内存中长什么样。
解决方法:先让引擎计算 42(已知结果),再计算 "hello"(已知类型),通过对比内存 dump 推导出数据结构。就像用已知答案的数学题来推导公式。
这套方案的意义
🚀 效率飞跃
传统逆向分析:在 5 个软件窗口之间来回切换,手动复制粘贴数据。
现在:对 AI 说一句话,它自己协调所有工具完成分析。
🔧 即插即用
这 4 个 MCP Server 脚本是通用的,换个 App 照样能用。就像你买了一套厨具,做中餐能用,做西餐也能用。
🧠 AI 的"判断力"
最让人印象深刻的不是工具本身,而是 AI 在工具之间做出的决策:
静态分析遇到瓶颈 → 自动切换动态分析 一种 Hook 方式崩溃 → 自动尝试替代方案 字符串搜索没结果 → 改用二进制模式搜索
最后
工具的能力边界,就是 AI 的能力边界。
通过 MCP 协议,我们只是把 AI 的"能力边界"往外推了一步。但就是这一步,让 AI 从"会写代码"变成了"能拆程序"。
如果把这个思路推广开来——安全审计、固件分析、协议逆向、漏洞挖掘——每个领域的专业工具,都可以用同样的方式接入 AI。
这不是未来,这是已经发生的事情。
欢迎关注协议分析与还原,一起用AI实现各项能力的全面跃升。
夜雨聆风