Skip to content
Debugging
Skill

/apk-reverse

在 CLI 环境下做 Android APK 逆向时使用。适用于 APK 解包、Java 反编译、smali 修改、重打包、Frida 动态 Hook,以及按需切换到 so/native 分析。优先使用本机已安装的 jadx、apktool、frida、adb、ida-reverse、radare2。

BOOST
From plugin
claude-reverse-skills
1245 skills
Install
$ npx -y skills add haikow/claude-reverse-skills --skill apk-reverse --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/apk-reverse

Context preview

The summary Claude sees to decide when to auto-load this skill.

在 CLI 环境下做 Android APK 逆向时使用。适用于 APK 解包、Java 反编译、smali 修改、重打包、Frida 动态 Hook,以及按需切换到 so/native 分析。优先使用本机已安装的 jadx、apktool、frida、adb、ida-reverse、radare2。

SKILL.md

apk-reverse.SKILL.md
name: apk-reverse
description: 在 CLI 环境下做 Android APK 逆向时使用。适用于 APK 解包、Java 反编译、smali 修改、重打包、Frida 动态 Hook,以及按需切换到 so/native 分析。优先使用本机已安装的 jadx、apktool、frida、adb、ida-reverse、radare2。

APK 逆向 CLI 作业规范

适用范围

当任务属于以下场景时优先使用本 skill:

  • 分析 APK 的 Java 业务逻辑
  • 定位登录、签名、风控、证书校验、root 检测
  • 查看与修改 `AndroidManifest.xml`
  • 查看与修改 smali
  • 重打包 APK
  • 用 Frida 做 Java/native 动态 Hook
  • APK 内含 `.so` 时切到 native 分析

当前机器已验证可用的 CLI 工具

  • `jadx` `1.5.5`
  • `apktool` `3.0.2`
  • `frida-ps` `17.9.6`
  • `adb`
  • `java`

优先使用脚本的场景

以下流程高频且参数容易出错,优先用 skill 自带脚本:

  • 一次性完成 `jadx + apktool` 落盘并产出摘要:`scripts/decode.ps1`
  • Frida 设备检查、进程列举、spawn/attach 注入:`scripts/frida-run.ps1`
  • 重建、对齐、签名、安装 APK:`scripts/rebuild-sign-install.ps1`
  • 快速抽取 Manifest 关键组件与权限:`scripts/manifest-summary.ps1`

以下一行命令保持直接调用,不单独封装:

  • `adb devices`
  • `adb logcat`
  • `frida-ps -U`
  • `jadx --version`
  • `apktool --version`

自带脚本

`scripts/decode.ps1`

用途:

  • 统一跑 `jadx` 和 `apktool`
  • 默认在原 APK 同目录创建任务输出目录
  • 输出 `package`、`java_files`、`smali_dirs`、`so_files` 等摘要
  • 兼容 `jadx` 部分反编译错误但仍然有可用产物的情况

示例:

pwsh -File "C:\Users\YOURNAME\.config\opencode\skills\apk-reverse\scripts\decode.ps1" -ApkPath "D:\DOWNLOAD\app.apk" -Clean
pwsh -File "C:\Users\YOURNAME\.config\opencode\skills\apk-reverse\scripts\decode.ps1" -ApkPath "D:\DOWNLOAD\app.apk" -Name demo -SkipJadx

`scripts/frida-run.ps1`

用途:

  • 统一 Frida 的设备、进程、spawn/attach 入口
  • 避免手写参数时混淆 `-f`、`-n`、`-U`

示例:

pwsh -File "C:\Users\YOURNAME\.config\opencode\skills\apk-reverse\scripts\frida-run.ps1" -ListDevices
pwsh -File "C:\Users\YOURNAME\.config\opencode\skills\apk-reverse\scripts\frida-run.ps1" -Usb -ListProcesses
pwsh -File "C:\Users\YOURNAME\.config\opencode\skills\apk-reverse\scripts\frida-run.ps1" -Usb -Spawn -Package com.example.app -ScriptPath "D:\hooks\test.js"

`scripts/rebuild-sign-install.ps1`

用途:

  • `apktool b` 重建 APK
  • `zipalign` 对齐
  • `apksigner` 签名与验签
  • 可选直接 `adb install`

示例:

pwsh -File "C:\Users\YOURNAME\.config\opencode\skills\apk-reverse\scripts\rebuild-sign-install.ps1" -ProjectDir "C:\work\apktool_out" -Clean
pwsh -File "C:\Users\YOURNAME\.config\opencode\skills\apk-reverse\scripts\rebuild-sign-install.ps1" -ProjectDir "C:\work\apktool_out" -Install -Reinstall -DeviceSerial "127.0.0.1:7555"

说明:

  • 默认生成并复用调试 keystore
  • 默认输出到 `ProjectDir` 同目录,便于和原始包、解包目录放在一起

`scripts/manifest-summary.ps1`

用途:

  • 抽取包名
  • 列权限
  • 列 activity/service/receiver/provider
  • 标出主启动 activity

示例:

pwsh -File "C:\Users\YOURNAME\.config\opencode\skills\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`

用于:

  • Java 反编译阅读
  • 包名、类名、方法名搜索
  • 先从高层逻辑理解 APK

常用命令:

jadx -d jadx_out app.apk
jadx --single-class com.example.LoginActivity -d jadx_out app.apk
jadx --deobf -d jadx_out app.apk

`apktool`

用于:

  • 解包 APK
  • 查看和修改 `AndroidManifest.xml`
  • 查看和修改 smali
  • 重建 APK

常用命令:

apktool d app.apk -o apktool_out
apktool b apktool_out -o rebuilt.apk

`frida`

用于:

  • 动态观察 Java 方法调用
  • Hook native 导出函数
  • 绕过 root 检测、证书校验、调试检测

常用命令:

frida-ps -U
frida -U -f com.example.app -l hook.js
frida-trace -U -f com.example.app -j '*!*certificate*'

`adb`

用于:

  • 设备连接
  • 安装 APK
  • 查看日志
  • 拉取文件

常用命令:

adb devices
adb install -r app.apk
adb shell pm list packages
adb logcat
adb pull /data/local/tmp/file .

推荐工作流

1. Triage

先确定 APK 大致构成,不急着改包或 Hook。

建议动作:

1. 用 `jadx -d jadx_out app.apk` 导出 Java 代码 2. 用 `apktool d app.apk -o apktool_out` 导出 smali 和资源 3. 先看:

  • `AndroidManifest.xml`
  • 主 `package`
  • `application`、`activity`、`service`、`receiver`
  • `lib/` 目录里是否有 `.so`

2. Java 逻辑观察

优先从 `jadx_out` 读:

  • `MainActivity`
  • `Application`
  • 登录、网络、加密、风控相关类
  • 第三方 SDK 初始化类

常见关键词:

  • `login`
  • `sign`
  • `encrypt`
  • `cipher`
  • `token`
  • `root`
  • `certificate`
  • `trust`
  • `okhttp`
  • `retrofit`
  • `webview`

如果 Java 代码可读,先在这里定位业务逻辑。

3. Smali 与资源层确认

当 `jadx` 结果不完整、混淆重、或需要实际 patch 时,切到 `apktool_out`:

  • 看 `smali*/`
  • 看 `res/values/strings.xml`
  • 看 `AndroidManifest.xml`

优先 patch:

  • `android:exported`
  • 调试标记
  • root 检测返回值
  • 登录验证逻辑
  • 证书校验分支

4. 重建与安装

修改后:

apktool b apktool_out -o rebuilt.apk

或者直接用脚本闭环:

pwsh -File "C:\Users\YOURNAME\.config\opencode\skills\apk-reverse\scripts\rebuild-sign-install.ps1" -ProjectDir "apktool_out" -Install -Reinstall -DeviceSerial "127.0.0.1:7555"

说明:

  • 本 skill 只保证 `apktool` 重建链路
  • 若后续需要正式安装到设备,通常还需要签名流程
  • 如果任务进入签名/对齐,补充 `apksigner` / `zipalign`

5. 动态 Hook

静态分析不足时,用 Frida:

  • Hook 登录函数
  • Hook `OkHttp` / `Retrofit` / `WebView` 关键点
  • Hook `javax.crypto`、`MessageDigest`
  • Hook root 检测函数
  • Hook SSL pinning 逻辑

原则:

  • 先 Hook Java 层,再看是否需要 native Hook
  • 先打印参数与返回值,再决定是否主动修改返回值

建议:

  • 简单一次性命令直接用 `frida-*`
  • 需要稳定复用的注入流程优先走 `scripts/frida-run.ps1`

6. Native `.so` 分流

如果 APK 中包含关键 `.so`:

  • 用 `apktool` 或 `jadx` 找到 `lib/**/*.so`
  • 若只是导出符号、字符串、快速 triage,可用 `radare2`
  • 若要长期深入分析、反编译、改名、类型恢复,用 `ida-reverse`

遇到这些信号要尽快切 native:

  • Java 层只是 JNI 包装
  • 核心签名逻辑不在 Java
  • `System.loadLibrary()` 后关键逻辑消失
  • 证书校验/风控在 `.so` 中

输出要求

最终至少说明:

  • 入口组件与关键类
  • 关键逻辑在 Java、smali 还是 `.so`
  • 已确认的敏感点:登录、签名、root、SSL、WebView、JNI
  • 如果做了 patch,说明改了什么
  • 如果做了 Hook,说明 Hook 了哪个类/方法/导出函数

禁止事项

  • 不要一开始就盲目改 smali
  • 不要在没看 manifest 和主入口前就写 Hook
  • 不要把 Java 反编译不完整直接等同于“逻辑不可分析”
  • 不要在 `.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
Read more
Ships withclaude-reverse-skills

一套面向 Claude Code(及兼容的文件系统型 Agent)的逆向工程 Skill 集合,外加 IDA Pro MCP 的接入说明。跨平台(Linux / macOS / Windows),一条命令装进 ~/.claude/skills/。 🙏 来源:核心 Skill 来自 linux.do 论坛 @hisence 大佬的分享 —— 原帖 👉 。本仓库仅做整理与跨平台适配,致谢原作者(详见文末「许可与致谢」)。

Get the whole plugin

Other skills on claude-reverse-skills.

ida-reverse
Skill

ida-reverse

IDA Pro 逆向分析辅助技能。当用户提到逆向、反编译、分析二进制/PE/ELF/APK/DLL/SO、破解、找密码、漏洞分析、病毒分析、firmware 固件分析,或需要分析 exe/dll/so/elf/macho/sys 等文件时,务必使用此技能。…

mcp-js-reverse-playbook
Skill

mcp-js-reverse-playboo…

在使用 js-reverse-mcp 做前端 JavaScript 逆向时使用,适用于签名链路定位、页面观察取证、运行时采样、本地补环境复现与证据化输出。优先适配当前环境里的 js-reverse_* 工具。