跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
JavaAIjava算法

AI 辅助安卓逆向:JADX-AI-MCP 插件配置与实战

利用大模型辅助安卓逆向工程,通过 JADX-AI-MCP 插件实现反编译代码与 AI 助手的无缝连接。教程涵盖环境搭建、插件安装、MCP 服务端配置及主流 AI 客户端设置方法。实战部分展示了如何使用 AI 进行代码审计、混淆识别、加密算法分析及自动化脚本生成,有效降低逆向门槛并提升分析效率。

宁静发布于 2026/4/10更新于 2026/7/2456 浏览

AI 辅助安卓逆向:JADX-AI-MCP 插件实战

前言:随着大模型(LLM)的爆发,编程辅助工具层出不穷。但在安卓逆向领域,如何将 AI 的理解能力直接嵌入到我们熟悉的工具链中?今天介绍的 JADX-AI-MCP 就是这样一个革命性的插件,它是 Zin MCP Suite 的一部分,通过 MCP(Model Context Protocol)协议,将 JADX 与 Claude/Cursor 等 AI 助手无缝连接,实现了'反编译 -> AI 代码审计 -> 自动重命名/分析'的闭环工作流。

🛠️ 什么是 JADX-AI-MCP?

JADX-AI-MCP 是 JADX 的一个插件,它配合 JADX-MCP-SERVER(一个 Python 服务端),让你的 LLM(如 Claude Desktop, Cursor, 或其他支持 MCP 的客户端)能够'看'到 JADX 中反编译的代码,并直接对代码进行操作。

工作原理:

用户在 LLM 客户端发起请求 -> JADX MCP Server 转发请求 -> JADX 插件执行操作(如获取代码、重命名) -> 结果返回给 LLM。

核心能力:

  • 代码获取与搜索:
    • fetch_current_class() / get_class_source(): 获取类源码。
    • search_classes_by_keyword(): 全局搜索包含特定关键字的类。
    • get_android_manifest(): 直接读取 Manifest 文件。
    • get_strings(): 获取 strings.xml 资源。
  • 重构与反混淆:
    • rename_class(), rename_method(), rename_field(): 自动重命名混淆的类、方法和字段。
    • rename_package(): 重命名整个包。
  • 交叉引用分析:
    • xrefs_to_method(): 查找方法的调用位置。
    • xrefs_to_field(): 查找字段的访问位置。
  • 调试辅助:
    • debug_get_stack_frames(): 获取调试时的堆栈信息。
    • debug_get_variables(): 获取调试时的变量值。

项目地址:GitHub - zinja-coder/jadx-ai-mcp


🚀 环境搭建

安装配置主要分为三个步骤:下载资源、插件安装和服务端配置。

1. 资源下载

前往 GitHub Releases 页面,下载以下两个文件:

  1. jadx-ai-mcp-<version>.jar (插件本体,如果使用命令行安装可跳过)
  2. jadx-mcp-server-<version>.zip (MCP 服务端,必须下载)
2. 安装 JADX 插件

方法一:命令行一键安装(推荐)

确保 jadx 命令在环境变量中,运行:

jadx plugins --install "github:zinja-coder:jadx-ai-mcp"

方法二:GUI 手动安装(推荐)

打开 JADX-GUI,进入插件管理界面,选择下载好的 .jar 文件进行安装。

3. 配置 MCP 服务端

本项目推荐使用 uv 进行 Python 依赖管理,这比传统的 pip 更快且环境隔离更好。当然,你也可以使用传统的 pip 或 Anaconda。

方式一:使用 uv (推荐)

  1. 解压 jadx-mcp-server-<version>.zip。
  2. 安装 uv (如果尚未安装):
    • Mac/Linux: curl -LsSf https://astral.sh/uv/install.sh | sh
    • Windows: powershell -c "irm https://astral.sh/uv/install.ps1 | iex"

方式二:使用 pip / Anaconda

如果你习惯使用传统的 Python 环境管理,可以直接执行以下命令安装依赖:

pip install -r requirements.txt 

如果出现依赖问题,建议通过 Anaconda 管理虚拟环境。笔者使用的是 Python 3.13 版本,实测兼容性良好。

4. 配置 AI 客户端

支持 Claude Desktop、Cherry Studio、LM Studio 等多种客户端。

选项 A: TRAE

方式一:使用 uv (推荐)

{"mcpServers":{"jadx-mcp-server":{"command":"uv","args":["--directory","D:\\jadx-mcp-server-v6.1.0\\jadx-mcp-server\\","run","jadx_mcp_server.py"]}}}

方式二:使用系统 Python

注意:如果使用自带的 Python,需要先安装 httpx 和 fastmcp 两个包。

pip install httpx fastmcp 

配置如下:

{"mcpServers":{"jadx-mcp-server":{"command":"E:\\tools\\path\\python\\python313\\python.exe","args":["E:\\tools\\Reverse\\Android\\jadx-mcp-server-v6.1.0\\jadx-mcp-server\\jadx_mcp_server.py"]}}}
选项 B: Claude Desktop (官方推荐)

编辑配置文件:

  • Windows: %APPDATA%\Claude\claude_desktop_config.json
  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

添加如下配置(注意替换实际路径):

{"mcpServers":{"jadx-mcp-server":{"command":"/path/to/uv","args":["--directory","/absolute/path/to/jadx-mcp-server/","run","jadx_mcp_server.py"]}}}
选项 C: Cherry Studio

在 Cherry Studio 的 MCP 设置中添加工具:

  • Type: stdio
  • Command: uv

Arguments:

--directory /absolute/path/to/jadx-mcp-server run jadx_mcp_server.py 
5. (进阶) HTTP 模式与自定义端口

如果需要通过 HTTP 远程调用,或解决端口冲突,可以使用以下命令启动服务端:

# 开启 HTTP 模式
uv run jadx_mcp_server.py --http 
# 指定 JADX 端口 (默认 9999)
uv run jadx_mcp_server.py --jadx-port 8652

💡 常用提示词 (Sample Prompts)

配置好后,你可以直接对 AI 说出以下指令:

  • 🔍 基础理解:
    • 'Explain what this class does in one paragraph.' (一句话解释这个类在做什么)
    • 'Is there any obfuscation in this class?' (这里面有混淆代码吗?)
  • 🛡️ 漏洞检测:
    • 'Check this class for hardcoded secrets or credentials.' (检查硬编码密钥)
    • 'Does this method sanitize user input before using it?' (检查输入清洗)
  • 🛠️ 逆向辅助:
    • 'Deobfuscate and rename the classes and methods to something readable.' (反混淆并重命名)
    • 'Tell me which classes contains code related to 'encryption'?' (哪些类和加密有关?)
  • 🐞 调试辅助:
    • 'Fetch stack frames and variables from debugger and provide summary.' (获取调试堆栈和变量并总结)

⚔️ 逆向实战:破解 CTF 题目 (Find the Flag)

为了演示 AI 如何辅助逆向,我们以一道典型的 CTF 题目为例。目标是从 APK 中找到隐藏的 Flag。

第一步:定位关键逻辑

打开 JADX,我们通常会先看 MainActivity。但 CTF 题目往往会在点击按钮时触发校验。

提示词:

'请分析 MainActivity,找到点击按钮后触发的校验方法。'

AI 执行操作:

  1. 调用 get_class_source(className="com.testjava.jack.pingan1.MainActivity")。
  2. 分析 onClick 监听器,识别出关键调用。

返回结果:

'点击按钮后,程序会立即执行 onClick 方法,该方法读取用户输入,使用 自定义的 Base64 算法 (由 Base64New 类实现)进行加密,然后检查加密结果是否等于 5rFf7E2K6rqN7Hpiyush7E6S5fJg6rsi5NBf6NGT5rs= 。'

第二步:分析加密算法

我们需要搞清楚 Base64New 类到底做了什么。

提示词:

'分析 Base64New 类,详细解释其编码逻辑,并检查它使用的字符表是否为标准 Base64 字符表。'

AI 执行操作:

  1. 调用 get_class_source(className="com.testjava.jack.pingan1.Base64New")。
  2. 读取代码,对比标准 Base64 算法。

返回结果:

'经过分析,Base64New 类实现了标准的 Base64 编码算法,但替换了字符映射表。

自定义字符表:vwxrstuopq34567ABCDEFGHIJyz012PQRSTKLMNOZabcdUVWXYefghijklmn89+/
标准字符表:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/

这是一个典型的换表 Base64 混淆。解密时需要先将密文按自定义表还原数值,再按标准 Base64 解码。'

第三步:编写解题脚本 (Solver)

既然搞懂了逻辑,就让 AI 直接帮我们写出解密脚本拿到 Flag。

提示词:

'根据分析出的自定义 Base64 字符表和 MainActivity 中的密文,请帮我写一个 Python 脚本来还原出 Flag。'

AI 执行操作:

  1. 提取密文 5rFf7E2K6rqN7Hpiyush7E6S5fJg6rsi5NBf6NGT5rs=。
  2. 提取自定义字符表。
  3. 生成 Python 解密代码(使用 str.translate 映射回标准表,再解码)。

AI 生成代码:

import base64 
# 自定义字符表 (从 Base64New 类提取) 
custom_table = "vwxrstuopq34567ABCDEFGHIJyz012PQRSTKLMNOZabcdUVWXYefghijklmn89+/"
# 标准 Base64 字符表 
std_table = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
# 密文 (从 MainActivity 提取) 
cipher = "5rFf7E2K6rqN7Hpiyush7E6S5fJg6rsi5NBf6NGT5rs="
# 建立映射并转换 
trans_map = str.maketrans(custom_table, std_table) 
std_cipher = cipher.translate(trans_map)
# 标准 Base64 解码 
flag = base64.b64decode(std_cipher).decode('utf-8')
print(f"Flag: {flag}")
第四步:一键重命名优化

为了让代码以后更好看,我们可以顺手把类名改了,使其符合其实际功能。

提示词:

'把 Base64New 类重命名为 CustomBase64,表明它是一个自定义的 Base64 实现。'

AI 执行操作:

  1. 调用 rename_class("com.testjava.jack.pingan1.Base64New", "CustomBase64")。
  2. JADX 界面中的引用自动更新,MainActivity 中的代码变为 CustomBase64 nb = new CustomBase64();,可读性显著提升。

💡 总结与思考

通过 JADX-AI-MCP,逆向工程的门槛被进一步降低:

  1. 效率提升:不再需要人肉翻译每一个混淆变量,AI 能基于语义快速重构代码可读性。
  2. 交互式分析:你可以像问同事一样问 AI:'这里为什么会崩溃?'、'这个字符串是在哪里定义的?',AI 会自动去调 xrefs 或 resources 接口找答案。
  3. 动态调试结合:甚至在调试时,AI 都能帮你分析当前的堆栈帧(Stack Frames)和变量值。

未来展望:
这种 'IDE + MCP + LLM' 的模式将是未来的主流。对于逆向工程师来说,学会如何用 Prompt 驱动工具去干脏活累活,将成为核心竞争力之一。

目录

  1. AI 辅助安卓逆向:JADX-AI-MCP 插件实战
  2. 🛠️ 什么是 JADX-AI-MCP?
  3. 🚀 环境搭建
  4. 1. 资源下载
  5. 2. 安装 JADX 插件
  6. 3. 配置 MCP 服务端
  7. 4. 配置 AI 客户端
  8. 选项 A: TRAE
  9. 选项 B: Claude Desktop (官方推荐)
  10. 选项 C: Cherry Studio
  11. 5. (进阶) HTTP 模式与自定义端口
  12. 开启 HTTP 模式
  13. 指定 JADX 端口 (默认 9999)
  14. 💡 常用提示词 (Sample Prompts)
  15. ⚔️ 逆向实战:破解 CTF 题目 (Find the Flag)
  16. 第一步:定位关键逻辑
  17. 第二步:分析加密算法
  18. 第三步:编写解题脚本 (Solver)
  19. 自定义字符表 (从 Base64New 类提取)
  20. 标准 Base64 字符表
  21. 密文 (从 MainActivity 提取)
  22. 建立映射并转换
  23. 标准 Base64 解码
  24. 第四步:一键重命名优化
  25. 💡 总结与思考
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 前端面试核心考点整理:HTML、JS、框架及网络协议详解
  • DeepSeek-R1-Distill-Llama-8B 部署:Docker Compose 编排多模型推理服务
  • GitHub 精选:LLM 管道优化与 AI 聊天框架工具指南
  • Stable Diffusion 图生图功能入门详解
  • 在 macOS 上给 Steam 游戏配置手柄
  • 非原生应用技术全解析:Web、混合与跨平台
  • kubectl port-forward 端口转发配置与突破本地限制
  • 【火】Spatial Joy 2025 全球 AR&AI 赛事:开发者要的资源、玩法、避坑攻略都在这
  • 全球老龄化背景下的护理机器人发展现状与趋势
  • LangChain.js 搭配 LangSmith 实现调试、监控与测试
  • Spring Cloud 微服务环境与工程搭建指南
  • 基于 LLaMA-Factory 的大模型部署与微调实战
  • DeepSeek 隐藏玩法与高阶提示词使用指南
  • 基于 RAG 架构的本地智能问答系统构建指南
  • 深入解析 MySQL:基于 Apache ShardingSphere 的高性能架构详解
  • 大语言模型长文本推理自我进化与激活稀疏性研究
  • 基于 Docker 的 Web 应用一键打包为 Android APK 方案
  • 2026 年知网 AIGC 检测算法升级要点解析
  • Python 数据可视化实战:环境搭建与数据读取入门
  • vi/vim 基础操作速查

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online