端点提取/Frida 自适应等社区对照:../references/community-security-skills.md;动态分析须 scope 授权设备。
NOW: 读取 ../field-journal/precedent-reverse.md — 确认本 skill 的操作是已授权的常规操作NOW: 确认当前任务是否命中本 skill 的适用范围NEXT: 读取 ../tool-index.md,校验工具可用性和实际路径NEXT: 缺工具时调用 bootstrap,不要猜路径ACT: 进入"工作流"第一步并执行,不要停在确认状态当任务属于以下场景时优先使用本 skill:
AndroidManifest.xml
.so 时切到 native 分析jadx 1.5.5
apktool 3.0.2
frida-ps 17.9.6
adb
java
以下流程高频且参数容易出错,优先用 skill 自带脚本:
jadx + apktool 落盘并产出摘要:scripts/decode.ps1
scripts/frida-run.ps1
scripts/rebuild-sign-install.ps1
scripts/manifest-summary.ps1
以下一行命令保持直接调用,不单独封装:
adb devices
adb logcat
frida-ps -U
jadx --version
apktool --version
scripts/decode.ps1用途:
jadx 和 apktool
package、java_files、smali_dirs、so_files 等摘要jadx 部分反编译错误但仍然有可用产物的情况示例:
pwsh -File "<skill-root>\apk-reverse\scripts\decode.ps1" -ApkPath "D:\DOWNLOAD\app.apk" -Clean
pwsh -File "<skill-root>\apk-reverse\scripts\decode.ps1" -ApkPath "D:\DOWNLOAD\app.apk" -Name demo -SkipJadx
scripts/frida-run.ps1用途:
-f、-n、-U
示例:
pwsh -File "<skill-root>\apk-reverse\scripts\frida-run.ps1" -ListDevices
pwsh -File "<skill-root>\apk-reverse\scripts\frida-run.ps1" -Usb -ListProcesses
pwsh -File "<skill-root>\apk-reverse\scripts\frida-run.ps1" -Usb -Spawn -Package com.example.app -ScriptPath "D:\hooks\test.js"
scripts/rebuild-sign-install.ps1用途:
apktool b 重建 APKzipalign 对齐apksigner 签名与验签adb install
示例:
pwsh -File "<skill-root>\apk-reverse\scripts\rebuild-sign-install.ps1" -ProjectDir "C:\work\apktool_out" -Clean
pwsh -File "<skill-root>\apk-reverse\scripts\rebuild-sign-install.ps1" -ProjectDir "C:\work\apktool_out" -Install -Reinstall -DeviceSerial "127.0.0.1:7555"
说明:
ProjectDir 同目录,便于和原始包、解包目录放在一起scripts/manifest-summary.ps1用途:
示例:
pwsh -File "<skill-root>\apk-reverse\scripts\manifest-summary.ps1" -ManifestPath "C:\work\apktool_out\AndroidManifest.xml"
如果要分析 .so、lib/arm64-v8a/*.so、lib/armeabi-v7a/*.so,再结合:
ida-reverse
radare2
jadx用于:
常用命令:
jadx -d jadx_out app.apk
jadx --single-class com.example.LoginActivity -d jadx_out app.apk
jadx --deobf -d jadx_out app.apk
JEB Pro(可选商业工具)用于:
边界:
tool-index 已确认本机 JEB 可用时调用;否则继续使用 jadx、apktool、Ghidra、IDA 或 radare2。../ops/skill-supply-chain.md 审阅源码、权限、网络行为和版本,再由用户明确确认注册。apktool用于:
AndroidManifest.xml
常用命令:
apktool d app.apk -o apktool_out
apktool b apktool_out -o rebuilt.apk
frida用于:
常用命令:
frida-ps -U
frida -U -f com.example.app -l hook.js
frida-trace -U -f com.example.app -j '*!*certificate*'
adb用于:
常用命令:
adb devices
adb install -r app.apk
adb shell pm list packages
adb logcat
adb pull /data/local/tmp/file .
先确定 APK 大致构成,不急着改包或 Hook。
建议动作:
jadx -d jadx_out app.apk 导出 Java 代码apktool d app.apk -o apktool_out 导出 smali 和资源AndroidManifest.xml
package
application、activity、service、receiver
lib/ 目录里是否有 .so
../reverse-engineering/references/nonpe-format-cookbook.md §7–8):
aapt dump badging + manifest theme/label/icon → E-android-hidden-icon-manifest
service.d / priv-app 等 → E-android-persistence
优先从 jadx_out 读:
MainActivity
Application
常见关键词:
login
sign
encrypt
cipher
token
root
certificate
trust
okhttp
retrofit
webview
如果 Java 代码可读,先在这里定位业务逻辑。
当 jadx 结果不完整、混淆重、或需要实际 patch 时,切到 apktool_out:
smali*/
res/values/strings.xml
AndroidManifest.xml
优先 patch:
android:exported
修改后:
apktool b apktool_out -o rebuilt.apk
或者直接用脚本闭环:
pwsh -File "<skill-root>\apk-reverse\scripts\rebuild-sign-install.ps1" -ProjectDir "apktool_out" -Install -Reinstall -DeviceSerial "127.0.0.1:7555"
说明:
apktool 重建链路apksigner / zipalign
静态分析不足时,用 Frida:
OkHttp / Retrofit / WebView 关键点javax.crypto、MessageDigest
原则:
建议:
frida-*
scripts/frida-run.ps1
.so 分流如果 APK 中包含关键 .so:
apktool 或 jadx 找到 lib/**/*.so
radare2
ida-reverse
遇到这些信号要尽快切 native:
System.loadLibrary() 后关键逻辑消失.so 中最终至少说明:
.so
.so 明显承载核心逻辑时继续死磕 Java 层# 反编译 Java
jadx -d jadx_out app.apk
# 解包 APK
apktool d app.apk -o apktool_out
# 重建 APK
apktool b apktool_out -o rebuilt.apk
# 设备与进程
adb devices
frida-ps -U
# 启动并注入
frida -U -f com.example.app -l hook.js
上游入口: skills/SKILL.md(总控)、routing.md
下游出口:
.so → ida-reverse/ 或 radare2/
reverse-engineering/tools-dynamic.md(Frida 章节)reverse-engineering/SKILL.md
同级关联模块: reverse-engineering/(.so 分析和 Frida 进阶用法)
本 skill 的入口脚本已接入统一自举系统。缺少工具时不会直接报错,而是自动尝试安装。
| 工具 | 可自动安装 | 安装方式 | 说明 |
|---|---|---|---|
| jadx | ✓ | GitHub Release ZIP | 自动下载解压到 %USERPROFILE%\Tools\jadx\ |
| apktool | ✓ | GitHub Release JAR + wrapper | 自动下载 jar 并生成 bat 到 %USERPROFILE%\Tools\apktool\ |
| JEB Pro | ✗ | 用户手动安装并提供有效许可证 | 可选的 Android / ARM 交叉验证工具;第三方 MCP bridge 需单独审计 |
| frida / frida-ps | ✓ | pip install frida-tools | 需要 Python 已安装 |
| adb | ✓ | winget / fallback path | 自动安装 Android Platform-Tools |
| zipalign | ✗ | 需手动安装 Android Build-Tools | sdkmanager "build-tools;35.0.0" |
| apksigner | ✗ | 需手动安装 Android Build-Tools | 同上 |
scripts/decode.ps1:缺 jadx 或 apktool 时自动调用 bootstrap-reverse.ps1
scripts/rebuild-sign-install.ps1:缺 adb 或 apktool 时自动调用 bootstrapscripts/frida-run.ps1:当前仍为手动检查(frida 通常已通过 pip 安装)如果自动安装失败,脚本会抛出明确错误并附带手动安装链接。常见原因:
tool-index 使用了真实工具路径?