ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

一文搭建免费的AI逆向工具链:TRAE+MCP+JADX+IDA Pro 实战

一文搭建免费的AI逆向工具链:TRAE+MCP+JADX+IDA Pro 实战 1. 为什么我要把 TRAE、MCP、JADX、IDA Pro 串成一条链做 Android 逆向和二进制分析的人大概都有过这种体验JADX 里翻到一个可疑方法想追它的调用链得手动复制类名、切到搜索框、一层层点进去IDA Pro 里对着一个 so 文件想搞清楚某个导出函数到底干了什么又得自己看反汇编、猜参数、手动重命名。整个过程高度依赖人的记忆和耐心稍微复杂一点的样本光是找入口就能耗掉大半天。我真正想解决的问题不是让 AI 替我逆向而是让 AI 帮我把那些重复的、机械的检索和整理动作接过去。比如这个类里所有调用Cipher.getInstance的地方列出来、把libnative.so里JNI_OnLoad的反编译结果贴出来并解释参数含义——这类请求如果每次都要人肉操作效率极低但如果能让 AI 直接调用 JADX 和 IDA 的能力就能把精力集中在真正的逻辑判断上。这就是 MCPModel Context Protocol的价值所在。它本质上是一套让 AI 客户端这里是 TRAE和外部工具服务端通信的协议。JADX 有对应的jadx-ai-mcp插件IDA Pro 有ida-pro-mcp它们各自把反编译、反汇编、交叉引用、重命名等能力暴露成 MCP 工具。TRAE 作为客户端把这些工具注册进来再配合 SKILLS 和 AGENT就能形成一个我说需求、它调工具、结果回传的闭环。适合谁看这篇已经会用 JADX 看 Java 层、会用 IDA 看 so 层但想把这套流程自动化、想让 AI 帮忙做初步梳理的 Android 逆向和二进制分析从业者。如果你完全没接触过逆向建议先把 JADX 和 IDA 的基本操作过一遍否则配置通了也不知道让 AI 干什么。我实测下来的感受是这套链路搭好之后最明显的收益不是AI 帮我找到了漏洞而是我不用再在三个窗口之间反复横跳了。下面把完整搭建过程拆开讲包括我踩过的坑。2. 前置准备TRAE、JADX、IDA Pro 与 MCP 服务端的版本对齐在动手配 MCP 之前有几件事必须先确认否则后面报错会很难定位。我踩过的第一个坑就是版本不匹配——JADX 插件和 MCP 服务端版本差了一个大版本工具列表能出来但调用直接超时。先说 TRAE。它是字节做的 AI 原生 IDE个人开发者版本免费SOLO 模式日常够用。官网在https://www.trae.cn/下载安装后登录即可。MCP 的注册入口在设置里后面会具体讲。TRAE 在这里的角色是 MCP 客户端它本身不负责反编译只负责把自然语言请求翻译成对 MCP 工具的调用。然后是 JADX 侧。需要两个东西JADX 本体和jadx-ai-mcp插件。我的环境是 JADX 1.5.5、JAVA 17.0.12、Python 3.12.10。JADX 从 GitHub releases 下载jadx-1.5.5.zip跨平台命令行和 GUI 包jadx-ai-mcp同样从 releases 下载需要的是jadx-ai-mcp-6.2.0.jar和jadx-mcp-server-v6.2.0.zip两个文件。注意这里有个容易忽略的点jar 是装进 JADX 的插件zip 是独立的 MCP 服务端两者版本号要对齐。JADX 默认内存给得比较低分析大 apk 容易卡死。Windows 下改jadx-gui.bat把-Xmx4g改成-Xmx12g或更高按你机器内存来。这一步不做的话后面 MCP 调用反编译大方法时可能直接 OOM。IDA Pro 侧需要ida-pro-mcp。我的环境是 Python 3.12.10、IDA Pro 9.3。这里要提醒一句IDA Pro MCP 不支持免费版 IDA必须是正版或你有对应授权。安装命令是pip install https://github.com/mrexodia/ida-pro-mcp/archive/refs/heads/main.zip装完后执行ida-pro-mcp --install把插件装进 IDA。打开一个 so 文件后在菜单栏【编辑 - 插件 - MCP】能看到入口说明插件生效了。还有一个前置是 Python 依赖。jadx-mcp-server-v6.2.0.zip解压后进目录执行pip install -r requirements.txt这一步如果网络慢可以换国内源。依赖装不上后面 MCP 服务端起不来TRAE 里会显示工具连接失败。最后是 SKILLS 和 AGENT 的准备。SKILLS 我用的是开源项目里的技能文件上传路径在 TRAE 的【设置 - 技能和规则 - 技能 - 创建 - 上传进行智能解析】。AGENT 则在 TRAE 里创建注意单个智能体的工具上限是 40 个所以建议按功能拆分比如一个专门管 JADX 的 Java 层分析一个专门管 IDA 的 so 层分析SOLO 模式会根据场景去调不同的智能体。把这些版本和环境对齐之后再进入配置环节报错会少很多。3. 可复制配置TRAE 里注册 JADX MCP 与 IDA Pro MCP这一节是整篇的核心配置片段我都按实际路径写出来你替换成自己的路径即可。先配 JADX MCP。第一步是把jadx-ai-mcp-6.2.0.jar装进 JADX打开 JADX菜单栏【插件 - 管理插件 - 安装插件】选这个 jar装完会出现JADX-AI-MCP Plugin。打开一个 apk 后在 Plugins 里能看到服务状态。第二步是启动 MCP 服务端。解压jadx-mcp-server-v6.2.0.zip进目录确认requirements.txt依赖已装然后启动服务。服务端跑起来后回到 TRAE在 MCP 配置里手动添加。TRAE 的 MCP 配置是 JSON 格式JADX 这段大概长这样{ mcpServers: { jadx-mcp-server: { command: python, args: [ D:/tools/jadx-mcp-server-v6.2.0/jadx_mcp_server.py ], env: { JADX_MCP_PORT: 8765 } } } }command和args一定要按你自己的环境改。Windows 下如果python不在 PATH 里就写 python 的绝对路径。args指向你解压出来的服务端脚本。端口默认即可冲突了再改。再配 IDA Pro MCP。装好插件后在 IDA 里打开一个 so 文件确认【编辑 - 插件 - MCP】可用。然后执行ida-pro-mcp --config这条命令会输出一段mcpServers配置直接复制到 TRAE 的 MCP 配置里。它大概是这样{ mcpServers: { ida-pro-mcp: { command: python, args: [ C:/Users/yourname/AppData/Roaming/Python/Python312/site-packages/ida_pro_mcp/server.py ] } } }注意 IDA MCP 的服务端是跟着 IDA 进程走的也就是说 IDA 必须开着并且加载了目标文件MCP 工具才能调用成功。这一点和 JADX 类似JADX 也得开着并加载了 apk。把两段合并到一个配置文件里TRAE 就能同时看到 JADX 和 IDA 的工具。合并后结构是{ mcpServers: { jadx-mcp-server: { command: python, args: [D:/tools/jadx-mcp-server-v6.2.0/jadx_mcp_server.py] }, ida-pro-mcp: { command: python, args: [C:/Users/yourname/AppData/Roaming/Python/Python312/site-packages/ida_pro_mcp/server.py] } } }这里有个关键点如果你用的是 Claude Code 或 Cline 这类客户端配置文件的路径和字段名会不一样。比如 Claude Code 的配置在~/.claude/settings.json或项目级.mcp.jsonCodex 则用auth.json管认证。但不管哪个客户端MCP 服务端的核心三件套是不变的Base URL本地服务端就是脚本路径、Key本地一般不需要、Model ID由客户端侧决定。TRAE 这边不需要额外填 Key因为服务端是本地进程。配置保存后TRAE 会尝试连接。连接成功的标志是工具列表里能看到 JADX 和 IDA 暴露的方法比如 JADX 的类搜索、方法反编译IDA 的函数列表、反编译、交叉引用等。如果列表是空的先去看服务端进程有没有起来。4. 验证请求用一段示例样本跑通反编译与反汇编回传配置通了不代表能用得实际发一个请求验证工具调用链路。我用的验证样本是一个自己写的测试 apk 和一个测试 so你也可以拿手头的样本。先验证 JADX 侧。在 TRAE 的对话里输入类似这样的请求用 jadx 工具搜索当前加载的 apk 里所有包含Cipher的类列出类名和所在包。如果链路正常TRAE 会调用 JADX MCP 的搜索工具返回类列表。这一步验证的是工具能被发现并调用。如果返回的是空或者报错说明 JADX 没加载 apk或者 MCP 服务端没连上。再验证反编译回传。请求把com.example.test.MainActivity的onCreate方法反编译结果贴出来并解释它做了什么。正常的话TRAE 会调用 JADX 的反编译工具把 Java 代码回传然后基于代码给出解释。这一步验证的是结果能回传到模型上下文。我实测时第一次失败报的是reading choices相关错误后来发现是服务端返回格式和客户端预期不一致换回对应版本的jadx-mcp-server就好了。再验证 IDA 侧。确保 IDA 开着并加载了 so然后请求用 ida 工具列出libnative.so里所有导出函数并反编译JNI_OnLoad。正常返回是函数列表加反编译伪代码。IDA MCP 支持获取函数、字符串、交叉引用、反编译、重命名、注释等所以你也可以让它把sub_1234重命名为decrypt_data验证写操作是否生效。这里有个细节IDA 的反编译依赖 Hex-Rays 反编译器如果你的 IDA 授权里没有这个组件反编译工具会失败但反汇编和函数列表仍然可用。所以验证时先确认你的 IDA 版本带不带 Hex-Rays。验证通过后可以进一步测 AGENT 编排。在 TRAE 里建两个智能体一个挂 JADX 工具一个挂 IDA 工具然后用 SOLO 模式发一个跨层请求先在 Java 层找到调用 native 方法的地方再去 so 层看对应实现。SOLO 会根据场景调不同智能体这就是前面说的多建几个不同功能的智能体的用处。单个智能体工具上限 40 个拆开之后每个智能体的工具集更聚焦模型选择工具的准确率也更高。5. 常见报错排查401、local proxy failed、reading choices、OAuth这一节把我踩过的和社群里常见的报错列出来对照着查能省不少时间。401 未授权。这个在本地 MCP 场景下一般不是真的鉴权失败而是客户端把请求发到了错误的端点。检查你的 MCP 配置里command和args是否指向了正确的服务端脚本。如果你用的是远程 MCP 服务那 401 通常是 Key 没填或填错这时候要回到对应平台的 API Keys 页面重新生成。本地服务端不需要 Key出现 401 多半是配置串了。local proxy failed。这个报错通常出现在客户端尝试通过本地代理转发 MCP 请求时。原因可能是服务端进程没起来或者端口被占用。排查顺序先确认jadx_mcp_server.py或 IDA 的 server 进程在跑再确认端口没冲突最后看防火墙有没有拦本地回环。我遇到过一次是 JADX 没加载 apk服务端起来了但没有目标客户端调用时超时表现类似 proxy failed。reading choices。这个报错说明客户端在解析服务端返回时期望的字段结构里没有choices。MCP 协议和 OpenAI 的 chat completions 格式不是一回事出现这个多半是版本不匹配——客户端按旧格式解析服务端返回新格式或者反过来。解决办法是把jadx-mcp-server和jadx-ai-mcp插件升到同一版本IDA 侧同理ida-pro-mcp和 IDA 插件版本对齐。OAuth 相关报错。如果你在配置里误加了 OAuth 流程或者客户端默认走了 OAuth 发现会报这个。本地 MCP 不需要 OAuth检查配置里有没有多余的 auth 字段删掉即可。如果是远程 MCP 平台按平台文档走 OAuth 授权别手动拼 token。工具列表为空。配置保存了但 TRAE 里看不到工具。先看服务端日志有没有报错再看 TRAE 的 MCP 连接状态。常见原因是 Python 依赖没装全requirements.txt里某个包缺失服务端启动就退了。重新pip install -r requirements.txt并确认没有报错。IDA 工具调用失败但 JADX 正常。检查 IDA 是否开着并加载了目标文件。IDA MCP 的服务端是依附于 IDA 进程的IDA 关了工具就不可用。另外确认 IDA 版本和ida-pro-mcp兼容9.x 一般没问题太老的版本可能不支持。反编译结果为空。JADX 侧可能是方法太大或混淆太严重反编译超时IDA 侧可能是没有 Hex-Rays。分别确认 JADX 内存调够了、IDA 授权带反编译器。排查的核心思路就一条先确认服务端进程活着再确认目标文件加载了最后确认版本对齐。这三步过了大部分报错都能定位。6. 把这条链路用起来从工具调用到 AGENT 编排配置和验证都通了之后真正决定效率的是怎么用。我自己的用法是分三层工具层、技能层、智能体层。工具层就是 JADX MCP 和 IDA MCP 暴露的那些方法它们是原子能力。技能层是 SKILLS用来规范 AI 在 TRAE 内的行为比如分析 Java 层时先搜类再反编译再追调用链这种流程可以写成技能文件。智能体层是 AGENT把特定工具和技能组合起来SOLO 模式按场景调度。提示词这块我试过几种写法比较有效的是分步提问。先问如何定位代码再问如何解析逻辑最后问如何还原避免一次提问过于宽泛。比如不要一上来就说帮我分析这个 apk而是先列出所有使用反射的类拿到结果后再对这几个类反编译并找动态加载的 dex。另外提示词里明确告知工具操作步骤比如用 jadx 搜索路径 X用 ida 在函数 Y 下断点落地执行会顺很多。如果你需要更多 MCP 和 SKILLS可以去几个聚合站找比如mcpworld.com、mcpmarket.com、skillhub.tencent.com、skillsmp.com按需装。需要结合 frida 就配frida_mcp做 web 分析可以用chromeDevToolsMCP或js-reverse-mcp。最后说下这套链路的边界。它不会替你做判断反编译出来的代码对不对、逻辑有没有被混淆误导还是得人来把关。它的价值在于把检索、整理、初步解释这些动作自动化让你把时间花在真正的分析上。我实测下来搭好之后处理中等复杂度样本的初步梳理时间大概能省一半但复杂样本的核心逻辑还是得自己啃。如果你在配置过程中卡在某个报错优先按第 5 节的顺序排查如果工具调用通了但不知道怎么组织提示词参考第 6 节的分步思路。整套环境搭一次后面复用成本很低。
返回列表