使用AI联动IDA,Feida进行APK的分析.脱壳

admin 2026-04-28 06:29:32 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文详细介绍了利用AI工具(Claude)联动IDAPro和Frida进行APK安全分析的完整流程,涵盖静态分析、动态脱壳、接口发现、加密还原及漏洞测试全链路。核心方法包括通过IDAMCP插件实现自动化代码审计,使用Frida进行内存脱壳获取加固应用的真实DEX,并提供了完整的APK安全审计技能模板,可实现从资源提取到安全测试的自动化渗透测试流程。 综合评分: 88 文章分类: 移动安全,安全工具,渗透测试,代码审计,安全运营


cover_image

使用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一顿库库分析

![](https://mmbiz.qpic.cn/sz_mmbiz_png/dmBq6ibDT5fGVm4jibDZb0CWXMBxdJjb4qgc6KySOibQiaFicgWMLzePDfjhicUIDdXZSGQ3pM71ibdBaGSevLl69yRiaf4BO2ic8bXYzxic7Uia4SJDhw/640?wx_fmt=png&from=appmsg&watermark=1#imgIndex=1)

![](https://mmbiz.qpic.cn/mmbiz_png/dmBq6ibDT5fFdSf6HjSAhnl10xe9TeWxjuNrxU7k1rVgKSyEoCFno6GtNoQ3yJIRnHeqj0AXUPgT991rqDUAoEmVJ66NMSBibPnBMKbIF3pIk/640?wx_fmt=png&from=appmsg&watermark=1#imgIndex=2)

成果大概就是这样

![](https://mmbiz.qpic.cn/mmbiz_png/dmBq6ibDT5fE0g3Z0dHxR0ARwFumChVZuAVeDzmjHmJemibZ9h38Sb9hHAIXMLSd7tmcLCvqx2ic8lsKKnMLBzY7GUgCXqpuZAK4ALicbocmG3E/640?wx_fmt=png&from=appmsg&watermark=1#imgIndex=3)

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

2.frida动态hook,脱壳

![](https://mmbiz.qpic.cn/sz_mmbiz_png/dmBq6ibDT5fF1tbLdZHTH3SQefBibq7j9m2OqERhudKYK7dYaQOXUnoFXosaZmO7YiarL6N8icCyQiboaqds7gOZibKwEmVcN816ibzbNxJwx5icDEg/640?wx_fmt=png&from=appmsg&watermark=1#imgIndex=4)

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

![](https://mmbiz.qpic.cn/sz_mmbiz_png/dmBq6ibDT5fFQJQDRI6uSJV62TibZRibHycuyP2sXUYdgctH1Cv2BvWBtECMPmlDd0eib7P3iawib57dIIGx3zxHoYC89TWnxH1jVEMBtvWibYyWibU/640?wx_fmt=png&from=appmsg&watermark=1#imgIndex=5)

![](https://mmbiz.qpic.cn/mmbiz_png/dmBq6ibDT5fHrq5n86zBQm7Kk1T2JC8tg1NdzP8kkLdyFbG1mGXmiboTC6ZeJZwkAAicenUoxo8wQeL2kbHNicqnu4LcolebXicicNEJBgNHyckD8/640?wx_fmt=png&from=appmsg&watermark=1#imgIndex=6)

![](https://mmbiz.qpic.cn/mmbiz_png/dmBq6ibDT5fHl0VHd7j06ZCChvBKggzkZZaibYUMm1GKRjic1hToPy6gqUUrLz61xuib4iatfic3pmYS7sAHG7ALsiaSxF0GYWXdg2nRXTNVqAdZKM/640?wx_fmt=png&from=appmsg&watermark=1#imgIndex=7)

然后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&nbsp;"\.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&nbsp;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&nbsp;'/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. 识别加密方案

检查顺序:

  1. 请求体是否为 Base64 字符串(Content-Type 为 text/plain 或 application/json 但值是 base64)2. 搜索 AES/DES/RSA 关键字   bash&nbsp; &nbsp;grep -r&nbsp;"AES\|DES\|RSA\|Cipher\|encrypt\|decrypt"&nbsp;app-service.js&nbsp; &nbsp;grep -r&nbsp;"AES\|SecretKeySpec\|IvParameterSpec"&nbsp;jadx_out/&nbsp; &nbsp;3. 提取硬编码 Key/IV   bash&nbsp; &nbsp;# JS 中通常是字符串赋值&nbsp; &nbsp;grep -P&nbsp;'"[0-9a-f]{32}"'&nbsp;app-service.js &nbsp; &nbsp;# 32位hex = AES-128 key&nbsp; &nbsp;grep -P&nbsp;'"[0-9a-f]{64}"'&nbsp;app-service.js &nbsp; &nbsp;# 64位hex = AES-256 key&nbsp; &nbsp;grep -P&nbsp;'"[0-9a-f]{16}"'&nbsp;app-service.js &nbsp; &nbsp;# 16位hex = IV&nbsp; &nbsp;4. SO 中找 Key(原生加密)   bash&nbsp; &nbsp;strings lib/arm64-v8a/libxxx.so | grep -P&nbsp;'[0-9a-f]{32,64}'&nbsp; &nbsp;# 或通过 IDA / Ghidra 逆向 JNI 加密函数&nbsp; &nbsp;

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&nbsp; /api/user/login &nbsp; &nbsp; &nbsp; [POST]&nbsp; /api/order/list &nbsp; &nbsp; &nbsp; [GET]&nbsp; ...

加密方案还原结论

| 字段 | 值 ||—|—|| 算法 | 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的分析.脱壳》

评论:0   参与:  0