# apk-java-reverse **Repository Path**: wufeifei_admin/android-reverse-skill ## Basic Information - **Project Name**: apk-java-reverse - **Description**: 用于android java逆向的 Agent Sskill - **Primary Language**: Python - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-02-11 - **Last Updated**: 2026-02-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # APK Java逆向分析 - 大模型Agent Skill [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Python 3.x](https://img.shields.io/badge/python-3.x-blue.svg)](https://www.python.org/downloads/) [![Androguard](https://img.shields.io/badge/androguard-4.x-green.svg)](https://github.com/androguard/androguard) [![Agent Skills](https://img.shields.io/badge/Agent-Skills-orange.svg)](https://agentskills.io/) 一个专为AI Agent设计的APK逆向分析技能包,让大模型能够自动化分析Android应用的Java代码。基于androguard实现,支持精确提取方法代码和调用链分析。 ## 🎯 什么是Agent Skill? Agent Skill是一种标准化的AI能力扩展包,让大模型能够执行特定领域的专业任务。本项目遵循[Agent Skills规范](https://agentskills.io/),为AI Agent提供APK逆向分析能力。 **适用场景:** - 🤖 让AI Agent自动化分析Android应用安全性 - 🔍 通过自然语言指令进行APK代码审计 - 📊 批量分析多个APK并生成结构化报告 - 🛡️ 结合大模型进行智能漏洞检测 ## ✨ 核心能力 - 🔍 **精确定位**:通过类名、方法名和签名精确定位APK中的方法 - 📝 **代码反编译**:将Dalvik字节码反编译为可读的Java代码 - 🔗 **调用链分析**:递归提取方法调用链(可配置深度) - 📊 **清晰展示**:层级缩进显示调用关系和代码结构 - 🎯 **智能过滤**:自动标记系统API,只关注应用代码 - 💾 **AI友好输出**:专为大模型设计的Markdown格式输出 - 📄 **灵活导出**:支持控制台输出和文件保存 ## 🤖 与AI Agent集成 ### 方式1:作为Agent Skill加载 如果你的AI Agent支持Agent Skills规范,可以直接加载本Skill: ```bash # 克隆仓库到Agent的skills目录 git clone https://gitee.com/your-repo/apk-java-reverse.git ~/.kiro/skills/apk-java-reverse # Agent会自动识别SKILL.md并加载能力 ``` ### 方式2:通过命令行集成 AI Agent可以通过执行命令行来调用本工具: ```python # Agent执行示例 import subprocess result = subprocess.run([ 'python', 'scripts/apk_reverse.py', 'app.apk', 'com.example.MainActivity', 'onCreate', '(Landroid/os/Bundle;)V', '-f', 'llm' # 使用AI友好格式 ], capture_output=True, text=True) # 将结果传递给大模型分析 analysis = llm.analyze(result.stdout) ``` ### 方式3:通过管道传递 ```bash # 直接将输出传递给AI工具 python scripts/apk_reverse.py app.apk com.example.MainActivity onCreate \ "(Landroid/os/Bundle;)V" -f llm | your-ai-tool analyze # 或者保存后让AI读取 python scripts/apk_reverse.py app.apk com.example.MainActivity onCreate \ "(Landroid/os/Bundle;)V" -f llm -o analysis.md ``` ## 🎨 AI Agent使用示例 ### 示例1:安全审计Agent ```python # Agent工作流程 def security_audit_workflow(apk_path, target_methods): """AI Agent自动化安全审计流程""" for method_info in target_methods: # 1. 提取方法代码 code = extract_method_code(apk_path, method_info) # 2. 让大模型分析安全问题 security_issues = llm.analyze_security(code) # 3. 生成审计报告 generate_report(method_info, security_issues) # 使用示例 target_methods = [ {'class': 'com.example.LoginActivity', 'method': 'login', 'sig': '(Ljava/lang/String;Ljava/lang/String;)Z'}, {'class': 'com.example.NetworkHelper', 'method': 'sendRequest', 'sig': '(Ljava/lang/String;)Ljava/lang/String;'} ] security_audit_workflow('app.apk', target_methods) ``` ### 示例2:代码理解Agent ```bash # 用户:请分析这个APK的登录流程 # Agent执行: # 1. 提取登录方法 python scripts/apk_reverse.py app.apk com.example.LoginActivity login \ "(Ljava/lang/String;Ljava/lang/String;)Z" -f llm -d 5 -o login_flow.md # 2. 大模型分析login_flow.md # 3. 生成流程图和说明文档 ``` ### 示例3:漏洞检测Agent ```python # Agent自动检测常见漏洞 vulnerabilities = [ 'SQL注入', '硬编码密钥', '不安全的网络请求', '敏感信息泄露', '不安全的加密算法' ] for vuln_type in vulnerabilities: # 提取相关方法代码 code = extract_relevant_methods(apk_path, vuln_type) # 让大模型检测该类型漏洞 findings = llm.detect_vulnerability(code, vuln_type) if findings: report_vulnerability(vuln_type, findings) ``` ## 🚀 快速开始 ### 安装依赖 ```bash pip install androguard ``` ### 基本使用 ```bash # 1. 查找方法签名(如果不知道完整签名) python scripts/find_method.py app.apk com.example.MainActivity onCreate # 2. 分析方法 python scripts/apk_reverse.py app.apk com.example.MainActivity onCreate "(Landroid/os/Bundle;)V" ``` ## 📖 使用示例 ### 示例1:分析Activity生命周期方法 ```bash python scripts/apk_reverse.py app.apk com.example.MainActivity onCreate "(Landroid/os/Bundle;)V" ``` ### 示例2:自定义递归深度 ```bash # 分析5层调用链 python scripts/apk_reverse.py app.apk com.example.MainActivity onCreate "(Landroid/os/Bundle;)V" -d 5 ``` ### 示例3:输出到文件 ```bash # 人类可读格式 python scripts/apk_reverse.py app.apk com.example.MainActivity onCreate "(Landroid/os/Bundle;)V" -o result.txt # 大模型友好格式(Markdown) python scripts/apk_reverse.py app.apk com.example.MainActivity onCreate "(Landroid/os/Bundle;)V" -f llm -o result.md ``` ### 示例4:与AI工具集成 ```bash # 通过管道传递给大模型进行分析 python scripts/apk_reverse.py app.apk com.example.MainActivity onCreate "(Landroid/os/Bundle;)V" -f llm | your-ai-tool ``` ## 📋 命令行参数 ``` python scripts/apk_reverse.py [选项] 必需参数: apk_path APK文件路径 class_name 目标类名(完整包名) method_name 目标方法名 method_signature 方法签名(Dalvik格式) 可选参数: -d, --max-depth N 递归最大深度(默认: 3) -o, --output FILE 输出文件路径 -f, --format FMT 输出格式: human(默认)或 llm -v, --verbose 显示详细输出 -h, --help 显示帮助信息 --version 显示版本信息 ``` ## 🔧 方法签名格式 方法签名使用Dalvik字节码格式: | Java类型 | Dalvik签名 | 示例 | |---------|-----------|------| | void | V | `()V` | | int | I | `(I)V` | | String | Ljava/lang/String; | `(Ljava/lang/String;)I` | | Bundle | Landroid/os/Bundle; | `(Landroid/os/Bundle;)V` | | int[] | [I | `([I)V` | **常用方法签名示例:** ``` ()V - void method() (I)V - void method(int) (Ljava/lang/String;)I - int method(String) (Landroid/os/Bundle;)V - void method(Bundle) (II)Ljava/lang/String; - String method(int, int) ``` 详细说明请参考:[references/METHOD_SIGNATURES.md](references/METHOD_SIGNATURES.md) ## 📊 输出格式 ### Human格式(默认) 人类可读的格式,使用中文标签和清晰的分隔线: ``` ================================================================================ [深度 0] 类名: Lcom/example/MainActivity; 方法: onCreate(Landroid/os/Bundle;)V ================================================================================ Java逆向代码: -------------------------------------------------------------------------------- public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } -------------------------------------------------------------------------------- ``` ### LLM格式 大模型友好的Markdown格式: ```markdown ## Method Analysis (Depth 0) **Class:** `Lcom/example/MainActivity;` **Method:** `onCreate(Landroid/os/Bundle;)V` **Decompiled Java Code:** \`\`\`java public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } \`\`\` ``` 详细说明请参考:[references/OUTPUT_FORMATS.md](references/OUTPUT_FORMATS.md) ## 🛠️ 辅助工具 ### find_method.py - 方法签名查找工具 当你不知道完整的方法签名时,使用此工具查找: ```bash # 列出类中所有方法 python scripts/find_method.py app.apk com.example.MainActivity # 查找特定方法 python scripts/find_method.py app.apk com.example.MainActivity onCreate ``` 输出示例: ``` [+] 找到类: Lcom/example/MainActivity; 方法名: onCreate 签名: (Landroid/os/Bundle;)V 访问修饰符: public 完整命令: python scripts/apk_reverse.py app.apk com.example.MainActivity onCreate "(Landroid/os/Bundle;)V" ``` ## 📁 项目结构 ``` apk-java-reverse/ ├── SKILL.md # Agent Skills规范文档 ├── README.md # 项目说明文档 ├── LICENSE # MIT许可证 ├── scripts/ │ ├── apk_reverse.py # 主分析脚本 │ └── find_method.py # 方法签名查找工具 └── references/ ├── METHOD_SIGNATURES.md # 方法签名参考 ├── OUTPUT_FORMATS.md # 输出格式说明 └── TECHNICAL.md # 技术实现细节 ``` ## 🎯 典型应用场景 ### 场景1:AI驱动的安全审计 **用户指令:** "分析这个APK的登录模块是否存在安全问题" **Agent工作流:** 1. 识别登录相关的类和方法 2. 使用本Skill提取代码 3. 大模型分析安全风险 4. 生成审计报告 ### 场景2:自动化代码审查 **用户指令:** "检查这个APK是否有硬编码的API密钥" **Agent工作流:** 1. 提取所有网络请求相关方法 2. 分析代码中的字符串常量 3. 识别可疑的密钥模式 4. 输出发现结果 ### 场景3:应用行为分析 **用户指令:** "这个APK在启动时做了什么?" **Agent工作流:** 1. 分析Application和MainActivity的生命周期方法 2. 追踪初始化调用链 3. 总结启动流程 4. 生成流程图 ### 场景4:批量APK对比 **用户指令:** "对比这两个版本的APK,找出代码变化" **Agent工作流:** 1. 分别提取两个版本的关键方法 2. 对比代码差异 3. 分析变更影响 4. 生成对比报告 ## 🛠️ 使用场景 - **安全审计**:分析APK中的敏感方法实现 - **逆向工程**:理解应用的业务逻辑 - **漏洞分析**:追踪方法调用链,发现潜在问题 - **代码审查**:结合AI工具进行自动化代码审查 - **学习研究**:学习Android应用的实现方式 - **合规检测**:检查应用是否符合安全规范 - **恶意代码检测**:识别可疑的代码模式 ## 🤖 与AI工具集成 ### 集成Claude进行安全分析 ```bash python scripts/apk_reverse.py app.apk com.example.LoginActivity login \ "(Ljava/lang/String;Ljava/lang/String;)Z" -f llm | \ claude "请分析这段登录代码的安全性问题,重点关注:1.密码存储 2.网络传输 3.输入验证" ``` ### 集成ChatGPT进行代码解释 ```bash python scripts/apk_reverse.py app.apk com.example.CryptoHelper encrypt \ "(Ljava/lang/String;)Ljava/lang/String;" -f llm -o crypto.md # 然后将crypto.md内容发送给ChatGPT # 提示词:"请解释这段加密代码的实现原理,并评估其安全性" ``` ### 批量分析并生成报告 ```bash #!/bin/bash # 分析所有生命周期方法 for method in onCreate onStart onResume onPause onStop onDestroy; do python scripts/apk_reverse.py app.apk com.example.MainActivity $method \ "(Landroid/os/Bundle;)V" -f llm -o "analysis_${method}.md" done # 合并报告 cat analysis_*.md > full_lifecycle_analysis.md # 让AI生成总结 your-ai-tool summarize full_lifecycle_analysis.md ``` ### 构建自动化审计流程 ```python #!/usr/bin/env python3 """AI Agent自动化APK审计示例""" import subprocess import json def extract_method_code(apk_path, class_name, method_name, signature): """提取方法代码""" result = subprocess.run([ 'python', 'scripts/apk_reverse.py', apk_path, class_name, method_name, signature, '-f', 'llm' ], capture_output=True, text=True) return result.stdout def ai_analyze(code, prompt): """调用AI分析代码""" # 这里接入你的AI API # response = your_ai_api.analyze(code, prompt) return response # 定义审计目标 audit_targets = [ { 'class': 'com.example.LoginActivity', 'method': 'login', 'signature': '(Ljava/lang/String;Ljava/lang/String;)Z', 'check': '检查是否存在SQL注入、密码明文存储等问题' }, { 'class': 'com.example.NetworkHelper', 'method': 'sendRequest', 'signature': '(Ljava/lang/String;)Ljava/lang/String;', 'check': '检查是否使用HTTPS、是否验证证书' } ] # 执行审计 report = [] for target in audit_targets: code = extract_method_code( 'app.apk', target['class'], target['method'], target['signature'] ) findings = ai_analyze(code, target['check']) report.append({ 'target': f"{target['class']}.{target['method']}", 'findings': findings }) # 生成报告 print(json.dumps(report, indent=2, ensure_ascii=False)) ``` ## ⚙️ 高级配置 ### 修改递归深度 ```bash # 深度分析(10层) python scripts/apk_reverse.py app.apk com.example.Class method "(I)V" -d 10 # 只分析目标方法(不递归) python scripts/apk_reverse.py app.apk com.example.Class method "(I)V" -d 0 ``` ### 处理混淆代码 对于混淆的APK,类名和方法名可能是`a`、`b`、`c`等: ```bash python scripts/find_method.py obfuscated.apk com.example.a python scripts/apk_reverse.py obfuscated.apk com.example.a b "(I)V" ``` ## 🐛 常见问题 ### Q: 提示"未找到方法"怎么办? A: 1. 使用`find_method.py`查看类中所有方法 2. 确认类名、方法名和签名是否正确 3. 注意区分大小写 ### Q: 反编译失败怎么办? A: - 某些混淆或加固的APK可能无法完全反编译 - 尝试降低递归深度:`-d 1` - 查看错误日志获取更多信息 ### Q: 如何分析加固的APK? A: - 需要先脱壳处理 - 使用专业的脱壳工具(如Frida、Xposed等) - 脱壳后再使用本工具分析 ## 📚 技术架构 ### Agent Skill规范 本项目完全遵循[Agent Skills规范](https://agentskills.io/specification): ```yaml --- name: apk-java-reverse description: Extract and decompile Java code from APK files license: MIT compatibility: Requires Python 3.x and androguard package metadata: author: wufeifei version: "1.0.0" --- ``` ### 核心技术栈 1. **androguard 4.x**:APK解析和反编译引擎 2. **Python 3.x**:脚本运行环境 3. **argparse**:命令行参数解析 4. **Markdown**:AI友好的输出格式 ### 工作原理 1. 使用androguard加载APK和DEX文件 2. 解析Dalvik字节码定位目标方法 3. 使用反编译器将字节码转换为Java代码 4. 通过交叉引用分析方法调用关系 5. 递归提取调用链中的所有方法代码 6. 格式化输出为AI友好的Markdown格式 详细技术实现请参考:[references/TECHNICAL.md](references/TECHNICAL.md) ## 📄 许可证 本项目采用 [MIT License](LICENSE) 开源协议。 ``` MIT License Copyright (c) 2024 wufeifei Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. ``` ## 🤝 贡献指南 欢迎为本Agent Skill贡献代码! ### 贡献方式 1. Fork本仓库 2. 创建特性分支 (`git checkout -b feature/AmazingFeature`) 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 提交Pull Request ### 开发建议 - 保持与Agent Skills规范的兼容性 - 优化AI友好的输出格式 - 添加更多实用的分析功能 - 改进错误处理和用户体验 - 补充文档和使用示例 ## 🔗 相关资源 - [Agent Skills官方规范](https://agentskills.io/specification) - [Androguard官方文档](https://androguard.readthedocs.io/) - [Dalvik字节码规范](https://source.android.com/docs/core/runtime/dalvik-bytecode) - [Android逆向工程指南](https://github.com/android-reverse-engineering) ## 📞 联系方式 - 作者:wufeifei - Gitee:[项目主页](https://gitee.com/your-repo/apk-java-reverse) - Issues:[问题反馈](https://gitee.com/your-repo/apk-java-reverse/issues) ## ⭐ Star支持 如果这个Agent Skill对你有帮助,请给个Star支持一下!让更多的AI Agent能够获得APK逆向分析能力。 --- **重要提示**: - ⚖️ 本工具仅用于学习、研究和合法的安全审计目的 - 🔒 使用本工具分析APK时,请确保你有合法的授权 - 🚫 禁止将本工具用于任何非法活动 - 📋 使用本工具即表示你同意遵守相关法律法规 **AI Agent开发者注意**: - 🤖 集成本Skill时,请确保遵守目标APK的使用条款 - 📝 建议在Agent的输出中注明分析结果的来源 - 🛡️ 对于敏感信息,请做好脱敏处理 - ⚠️ 建议添加使用限制,防止滥用