文章总结: 本文详细介绍了利用AI工具(Claude)联动IDAPro和Frida进行APK安全分析的完整流程,涵盖静态分析、动态脱壳、接口发现、加密还原及漏洞测试全链路。核心方法包括通过IDAMCP插件实现自动化代码审计,使用Frida进行内存脱壳获取加固应用的真实DEX,并提供了完整的APK安全审计技能模板,可实现从资源提取到安全测试的自动化渗透测试流程。 综合评分: 88 文章分类: 移动安全,安全工具,渗透测试,代码审计,安全运营
使用AI联动IDA,Feida进行APK的分析.脱壳
原创
xx xx
02安全
2026年4月14日 20:52 广西
在小说阅读器读本章
去阅读
前言
随着时代发展,AI 大模型的能力边界正在以肉眼可见的速度增长,我们可以借助AI自动化完成很多无脑,重复化的任务,加快速度
本文使用的工具
IDA pro + MCP 插件 ida-pro-mcpfrida / frida-dexdumpClaude CodeMuMu模拟器
1.使用IDA进行开启mcp进行静态分析app
ida的安装和对接mcp可以参考IDA-Pro-mcp配置
apk直接拖进ida,选第二个模式,然后ida开启mcp,claude对接mcp就可以进行分析了
分享一下自用skills
---name: app-apk-auditdescription: APK 全链路安全审计流水线。一键完成 APK 提取→接口发现→敏感扫描→安全测试的完整流程。适用于 CTF/授权渗透测试:(1) 自动提取 APK 资源并识别框架,(2) 发现所有 API 接口和域名架构,(3) 扫描硬编码密钥和敏感配置,(4) 批量测试未授权/越权/逻辑漏洞,(5) 生成完整审计报告。支持通过 IDA MCP 辅助分析 native 代码。---
# APK 全链路安全审计流水线
自动编排 4 个子 skill,完成 APK 从静态分析到动态测试的完整安全审计。
## 输入
用户提供:- **apk_path**: APK 文件路径- **output_path**: 输出目录路径(默认 `{apk_dir}/audit_output`)- **proxy** (可选): 代理地址(如 `http://127.0.0.1:7890`)- **ida_mcp** (可选): IDA MCP 地址(如 `http://127.0.0.1:13337/mcp`),用于 DEX/SO 深度分析
## 流程总览
阶段1: 资源提取 (app-apk-extract) ├── 解压 APK ├── 识别框架 (uni-app/RN/Flutter/原生) ├── 分类提取 JS/JSON/HTML/SO └── 输出: 01-资源提取报告.md 阶段2: 接口发现 (app-api-discover) ├── 提取所有 URL/域名 ├── 提取 API 端点和参数 ├── 识别认证机制 ├── 拉取远程配置获取真实域名 ├── [可选] IDA MCP 辅助分析 DEX └── 输出: 02-接口发现报告.md 阶段3: 敏感扫描 (app-sensitive-scan) ├── 硬编码凭据扫描 ├── 远程配置泄露检测 ├── SDK AppID 泄露 ├── SO 库保护/反调试分析 ├── WebRTC 凭据检测和验证 └── 输出: 03-敏感信息报告.md 阶段4: 安全测试 (app-security-test) ├── 信息泄露探测 (Actuator/Swagger/Knife4j) ├── 未授权访问批量测试 ├── 注册/登录逻辑绕过 ├── 验证码安全测试 ├── JWT Token 分析 ├── IDOR/越权测试 └── 输出: 04-安全测试报告.md 汇总: 生成 00-审计总报告.md“`
阶段执行
阶段 1: 资源提取
使用 app-apk-extract skill。
输入: apk_path输出: {output_path}/01-资源提取报告.md + 提取的文件目录
阶段 2: 接口发现
使用 app-api-discover skill。
输入: 阶段1提取的资源目录输出: {output_path}/02-接口发现报告.md
如果提供了 ida_mcp,通过 MCP 工具补充分析:- list_funcs 列出函数- find_regex 搜索字符串- decompile 反编译关键函数
阶段 3: 敏感扫描
使用 app-sensitive-scan skill。
输入: 阶段1提取的资源 + 阶段2发现的域名输出: {output_path}/03-敏感信息报告.md
阶段 4: 安全测试
使用 app-security-test skill。
输入: 阶段2发现的 API 地址和端点 + proxy输出: {output_path}/04-安全测试报告.md
注意: 此阶段仅在用户明确授权(CTF/渗透测试)时执行。
汇总报告
合并所有阶段结果,生成 00-审计总报告.md:
“`markdown# APK 安全审计总报告
目标信息| 项目 | 值 ||—|—|| 应用名 | xxx || 包名/AppID | xxx || 框架 | xxx || 版本 | xxx |
漏洞统计| 级别 | 数量 ||—|—|| Critical | N || High | N || Medium | N || Low | N |
漏洞清单| # | 级别 | 类型 | 描述 | 报告 ||—|—|—|—|—|
域名资产| 域名 | 用途 ||—|—|
API 接口统计| 模块 | 接口数 ||—|—|
建议1. …“`
使用示例
/app-apk-audit /path/to/app.apk --proxy http://127.0.0.1:7890/app-apk-audit /path/to/app.apk --ida-mcp http://127.0.0.1:13337/mcp
然后就是claude一顿库库分析


成果大概就是这样

接下来会碰到一种情况,很多app业务逻辑加密在dex,光靠静态分析无法完全分析完,接下来frida登场
2.frida动态hook,脱壳

frida的安装,可以让ai连接adb然后分析版本,下载包对应的然后让ai全自动安装就行,这里我用的是mumu模拟器



然后apk交给claude全自动安装分析即可
分享一下我自己用的skils
—name: app-mobile-auditdescription: 移动 APP 完整安全审计流程。从 ADB 连接开始,覆盖脱壳、APK 提取、接口分析、加密协议还原、漏洞测试全链路。适用于授权渗透测试和 CTF。—
移动 APP 安全审计
输入
– package: 应用包名(如 com.example.app)- apkpath(可选): 已有 APK 路径,跳过步骤 1-2- outputdir: 输出目录
阶段一:设备连接与 APK 获取
1. ADB 连接
“`bash# 模拟器adb connect 127.0.0.1:5555 # MuMu/雷电默认端口adb connect 127.0.0.1:7555 # 夜神adb devices
真机adb devices # USB 已连接则直接列出“`
2. 从设备拉取 APK
“`bash# 找安装路径adb shell pm path
拉取adb pull app.apk
# 如有 split APK(base + config)adb shell pm path # 会列出多个路径,全部拉取“`
阶段二:保护检测
3. 判断是否加固
bash# 解压 APK,检查 DEX 数量和 libunzip -l app.apk | grep -E "\.dex|\.so"
| 特征 | 说明 ||—|—|| lib/*/libjiagu*.so | 360加固 || lib/*/libtup*.so / libshell*.so | 腾讯乐固 || lib/*/libDexHelper*.so | 梆梆 || lib/*/libprotect*.so | 爱加密 || assets/ 下有 .jar / .zip / .bin | 自定义壳 || classes.dex 极小(<50KB) | Stub DEX,真实代码在壳里 || classes.dex 正常大小且无上述特征 | 无壳 |
4. 无壳 → 直接进入阶段三
5. 有壳 → Frida 内存 Dump
“`bash# 启动 frida-server(需 root)adb shell “su -c ‘/data/local/tmp/frida-server &'”
方式 A:frida-dexdump(推荐)frida-dexdump -U -f -o ./dex_dump/
方式 B:手动 dump(app 运行后)frida -U -f –no-pause -l dexdump.js
方式 C:FART(需刷机版)adb shell “su -c ‘fart ‘”adb pull /sdcard/fart/ ./dex_dump/“`
Dump 后得到多个 .dex 文件,选最大的(业务逻辑通常在最大 DEX)。
阶段三:APK 资源提取
6. 解包 APK
bashmkdir apk_rawunzip app.apk -d apk_raw/
7. 识别框架
| 路径 | 框架 ||—|—|| assets/apps/__UNI__*/www/app-service.js | uni-app || assets/index.android.bundle | React Native || assets/flutter_assets/ | Flutter || 以上均无 | 原生 Android |
8. 提取关键文件
“`bash# uni-app:核心业务逻辑assets/apps/UNI/www/app-service.js # 全部接口和逻辑
React Nativeassets/index.android.bundle
# 原生:反编译 DEXjadx -d jadx_out/ classes.dex # 或 dump 出的最大 dex“`
阶段四:接口与加密分析
9. 提取 API 端点
``bash# 从 JS bundle 提取grep -oP '/api/[^\s"'\'']+’ app-service.js | sort -u
提取 baseUrl / 域名grep -oP ‘https?://[^\s”‘\”`,;)]+’ app-service.js | sort -u
从 DEX/jadx 提取(原生)grep -rP ‘https?://’ jadx_out/ | grep -v import | sort -u“`
10. 识别加密方案
检查顺序:
- 请求体是否为 Base64 字符串(Content-Type 为 text/plain 或 application/json 但值是 base64)2. 搜索 AES/DES/RSA 关键字
bash grep -r "AES\|DES\|RSA\|Cipher\|encrypt\|decrypt" app-service.js grep -r "AES\|SecretKeySpec\|IvParameterSpec" jadx_out/ 3. 提取硬编码 Key/IVbash # JS 中通常是字符串赋值 grep -P '"[0-9a-f]{32}"' app-service.js # 32位hex = AES-128 key grep -P '"[0-9a-f]{64}"' app-service.js # 64位hex = AES-256 key grep -P '"[0-9a-f]{16}"' app-service.js # 16位hex = IV 4. SO 中找 Key(原生加密)bash strings lib/arm64-v8a/libxxx.so | grep -P '[0-9a-f]{32,64}' # 或通过 IDA / Ghidra 逆向 JNI 加密函数
11. 验证加密可还原
写验证脚本,发一个已知请求,解密响应,确认明文 JSON 正常返回: “`pythonfrom Crypto.Cipher import AESfrom Crypto.Util.Padding import pad, unpadimport base64, json, requests KEY = b’<提取的key>‘IV = b’<提取的iv>‘ def enc(data): c = AES.new(KEY, AES.MODE_CBC, IV) return base64.b64encode(c.encrypt(pad(json.dumps(data).encode(), 16))).decode()
def dec(b64): c = AES.new(KEY, AES.MODE_CBC, IV) return unpad(c.decrypt(base64.b64decode(b64.strip(‘”‘))), 16).decode()“`
阶段五:APK 分析结论
完成以上各阶段后,输出以下结论:
APK 基本信息
| 项目 | 内容 ||—|—|| 包名 | <package> || 版本 | <versionName> (<versionCode>) || Android 目标版本 | targetSdkVersion || 框架类型 | uni-app / React Native / Flutter / 原生 || 是否加固 | 是(厂商:xxx) / 否 |
加固与代码保护
- 壳类型及脱壳方式- 混淆程度(ProGuard / R8 / 自定义)- SO 加密情况
发现的接口与域名
列出所有提取到的 API 端点和 Base URL:
https://api.example.com /api/user/login [POST] /api/order/list [GET] ...
加密方案还原结论
| 字段 | 值 ||—|—|| 算法 | AES-128-CBC / RSA-2048 / 无 || Key 来源 | 硬编码 / 动态生成 / 服务端下发 || Key 值 | <hex> || IV 值 | <hex> || 可还原 | 是 / 否 |
敏感信息
列出从 APK 中发现的硬编码敏感数据(Key、Token、内网地址等)。 “`
最后成果
3.通过frida逆向各种加解密
和上面差不多,使用我的skills可以全自动分析出来
结尾
还可以让ai自动写frida的脚本来hook各种检测等等(下篇文章水一下),无脑简单
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:02安全 xx xx《使用AI联动IDA,Feida进行APK的分析.脱壳》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论