移动/游戏
获授权的 Android/iOS 应用逆向与安全测试:从…
在已获授权的 Android 或 iOS 应用安全评估中,用一套四阶段工作流(信息收集→静态分析→动态分析→网络分析)完成反编译、运行时插桩、保护绕过与加密算法/密钥提取。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
获授权的 Android/iOS 应用逆特定
解决思路
- 开工前读取 `../field-journal/precedent-reverse.md`,确认本次操作属于已授权的常规操作
- 确认当前任务命中本 skill 的适用范围(Android APK 或 iOS IPA 逆向、运行时插桩、SSL Pinning/Root/越狱检测绕过、加密算法提取、OWASP MASTG 渗透测试、非 Root/越狱环境测试)
- 读取 `../tool-index.md`,校验所需工具的可用性与实际安装路径
- 缺工具时调用 bootstrap 补齐工具,不要猜路径
- 直接进入工作流第一步开始执行,不要停在确认状态
- Phase 1 Android:获取 APK,渠道为 Google Play、APKMirror 或 `adb pull`
- Phase 1 Android:分析 AndroidManifest,检查权限、导出组件、Intent Filter、backup 标志
- Phase 1 Android:用 androguard analyze APK,提取组件、权限、签名信息
- Phase 1 Android:用 APKLeaks 扫描硬编码的 API Key、Token、Secret
- Phase 1 Android:做加固检测,判断是否被 360/腾讯/梆梆/爱加密等加壳
- Phase 1 iOS:获取 IPA,渠道为 App Store、ipatool 或 Apple Configurator
- Phase 1 iOS:用 frida-ios-dump 或 Clutch 解密 App Store 二进制
- Phase 1 iOS:分析 Info.plist,检查 ATS 配置、URL Scheme、Queries Schemes
- Phase 1 iOS:用 class-dump 导出 ObjC 类结构
- Phase 1 iOS:做加固检测,判断是否使用 Swift/ObjC 混淆
- Phase 2 跨平台:用 JADX-GUI 把 APK 反编译为 Java 源码
- Phase 2 跨平台:用 Ghidra 或 Hopper 反编译 .so 与 Mach-O
- Phase 2 跨平台:用 radare2 或 Cutter 做命令行快速侦察
- Phase 2 Android:执行 `apktool d app.apk` 得到 smali 代码与资源
- Phase 2 Android:用 dex2jar 把 DEX 转成 JAR,再用 JD-GUI 查看
- Phase 2 Android:用 smali/baksmali 修改 Dalvik 字节码
- Phase 2 iOS:用 class-dump 导出 ObjC 头文件
- Phase 2 iOS:用 swift-demangle 恢复 Swift 符号
- Phase 2 iOS:用 dsymutil 提取调试符号
- Phase 2 iOS:用 `otool -L` 查看动态库依赖
- Phase 2 iOS:用 jtool2 分析 Mach-O
- Phase 3 Frida:用 `frida-ps -U` 列出设备进程
- Phase 3 Frida:用 `frida-trace -U -i "open*" com.app` 追踪函数调用
- Phase 3 Frida:编写自定义 Hook 脚本修改参数/返回值、调用私有方法
- Phase 3 Objection:用 `objection -g "com.app" explore` 进入交互式 REPL
- Phase 3 Objection:执行 `android root disable` / `ios jailbreak disable` 关闭 Root 与越狱检测
- Phase 3 Objection:执行 `android sslpinning disable` / `ios sslpinning disable` 绕过证书绑定
- Phase 3 Objection:执行 `android keystore list` / `ios keychain dump` 查看密钥存储
- Phase 3 Objection:使用 `env`、`ls`、`sqlite connect` 探索环境、文件系统与数据库
- Phase 3 Frida Gadget:把 frida-gadget.so / FridaGadget.dylib 注入 APK/IPA
- Phase 3 Frida Gadget:重新签名后安装,从而在免 Root/越狱设备上 Hook
- Phase 3 Frida Gadget:用 `objection patchapk --source app.apk` 全自动完成注入与重打包
- Phase 4:用 Burp Suite 拦截 HTTP/HTTPS 并修改请求与响应
- Phase 4:用 mitmproxy(Python API)做脚本化代理
- Phase 4:用 Wireshark 分析 PCAP 抓包
- Phase 4:安装证书,Android 上把用户证书转为系统证书(Magisk + MoveCert)
- Phase 4:用 Frida、Objection、Xposed 或 SSL Kill Switch 2 绕过 SSL Pinning
- Phase 4:分析 WebSocket 与 gRPC 流量
- 绕过 SSL Pinning:最简做法是 `objection -g "com.app" explore` 后执行 `android sslpinning disable`
- 绕过 SSL Pinning:用通用 Frida 脚本 `frida -U -l ssl_pinning_bypass.js -f com.app`
- 绕过 SSL Pinning:Android 上加载 Xposed 的 TrustMeAlready 模块全局禁用证书校验
- 绕过 Root/越狱检测:执行 `android root disable` 与 `ios jailbreak disable`
- 绕过 Root/越狱检测:用 Frida 自定义 Hook 覆盖多层检测,例如把 `com.scottyab.rootbeer.RootBeer` 的 `isRooted` 实现改为返回 false,并额外绕过 Magisk su 检测、frida-server 检测、/proc/self/maps 检测
- 绕过反调试:Android 执行 `frida -U -l anti_debug_bypass.js -f com.app`,绕过 ptrace(TracerPid)、/proc/self/status、isDebuggerConnected() 等检测
- 绕过反调试:iOS 执行 `frida -U -l ios_anti_debug.js -f com.app`,绕过 PT_DENY_ATTACH 与 sysctl CTL_KERN/KERN_PROC/KERN_PROC_PID 检测
- 提取加密算法(Android):Hook `javax.crypto.Cipher.getInstance`,打印传入的算法名后再调用原实现
- 提取加密密钥(Android):Hook `Cipher.init`,把 `key.getEncoded()` 以十六进制打印出来
- 提取加密密钥(iOS):用 Interceptor.attach 挂钩 libcommonCrypto.dylib 导出的 `CCCrypt`,在 onEnter 打印 op、alg,并用 hexdump 输出 key 及其长度
- 工具链选型:JADX-GUI(Android Java 反编译)、apktool(APK 解包/重建)、Ghidra(A+I 多架构反编译)、Hopper(iOS 反汇编)、Frida(A+I 动态插桩)、Objection(Frida REPL 增强)、MobSF(A+I 自动化 SAST+DAST)、class-dump(iOS ObjC 类导出)、frida-ios-dump(IPA 解密)、jtool2(Mach-O 分析)、Burp Suite(HTTP 拦截)、mitmproxy(脚本化代理)
- 需要更深用法时查阅参考文档:`references/frida-objection-deep.md`、`references/ios-reverse-guide.md`、`references/anti-detection-bypass.md`
- 声称完成前逐项自检:是否真正执行了工作流每一步而非只阅读;是否基于 `tool-index` 使用真实工具路径;是否产出可复现证据(命令/脚本/截图/报告);是否完成并回写 RULES 要求的 Checklist 项
适用边界 · 注意事项
- 目标未获得明确书面授权,或不属于自己拥有/可测试范围的应用
- 目标不是 Android/iOS 移动应用(如纯 Web、后端服务、桌面程序)
- 目标加固与反调试强度极高、无法在可控测试设备上运行 Frida 或重签名安装时,本文档的绕过手段可能失效