一键导入
ai-mobile-reverse-skills
// 面向移动安全分析场景的 6 阶段总控 Skill。用于统一调度 APK 静态侦察、流量与代码对齐、SO/JNI 深度分析、加密与漏洞综合分析、验证设计与报告交付流程。支持 JADX MCP、Burp/Yakit MCP、IDA/Ghidra MCP,采用 AI 主导分析与阶段脚本组合的方式。
// 面向移动安全分析场景的 6 阶段总控 Skill。用于统一调度 APK 静态侦察、流量与代码对齐、SO/JNI 深度分析、加密与漏洞综合分析、验证设计与报告交付流程。支持 JADX MCP、Burp/Yakit MCP、IDA/Ghidra MCP,采用 AI 主导分析与阶段脚本组合的方式。
| name | ai-mobile-reverse-skills |
| description | 面向移动安全分析场景的 6 阶段总控 Skill。用于统一调度 APK 静态侦察、流量与代码对齐、SO/JNI 深度分析、加密与漏洞综合分析、验证设计与报告交付流程。支持 JADX MCP、Burp/Yakit MCP、IDA/Ghidra MCP,采用 AI 主导分析与阶段脚本组合的方式。 |
本 Skill 是整套移动安全分析体系的根入口,也是唯一的阶段调度入口。
它面向以下典型场景:
它不替代具体阶段做细节分析,而是负责:
进入某一步后,必须以对应阶段文件为直接执行标准。
本 Skill 采用固定 6 阶段执行模式。所有模式都从 Phase 1 开始,区别只在于:
运行入口统一分为两大类,且允许用户在开始时显式选择:
用户在开始时可以显式声明:
run_mode: step_by_steprun_mode: auto_chain若 run_mode = auto_chain,则还可以继续声明:
auto_chain_mode: Aauto_chain_mode: Bauto_chain_mode: C总控执行原则:
step_by_stepauto_chainauto_chain 但未声明 auto_chain_mode,总控应根据当前最早可行切入点推断:
ABC对应值:
run_mode: step_by_step适用场景:
运行机制:
人工介入点:
对应值:
run_mode: auto_chain自动链再细分为以下三条链路。三条链路都从 Phase 1 开始,只是自动化生效的起点不同。
对应值:
run_mode: auto_chainauto_chain_mode: A适用场景:
burp-mcp / yakit-mcp 与 ghidra-mcp / ida-mcp 已接通运行范围:
运行机制:
人工介入点:
对应值:
run_mode: auto_chainauto_chain_mode: B适用场景:
运行范围:
运行机制:
vuln_analysis.json、risk_matrix.json 及相关前序材料是否存在。人工介入点:
对应值:
run_mode: auto_chainauto_chain_mode: C适用场景:
jadx-mcp、burp-mcp / yakit-mcp、ghidra-mcp / ida-mcp 已全部接通运行范围:
运行机制:
auto_chain,从 Phase 2 连续推进到 Phase 6。人工介入点:
当用户明确表达“只输入一次,后续自动衔接”“尽量连续推进到报告”“从头跑到尾”时,总控应优先进入 auto_chain 模式。
在 auto_chain 模式下,总控必须:
{output_dir} 下已有中间产物,避免重复询问。默认原则如下:
focusoutput_dir 时,应优先落盘标准产物,而不是只输出对话摘要output_dir 不存在,应先创建后再写入结果补充说明:
以下模板用于在任务开始时显式声明运行模式。
run_mode: step_by_step
说明:
run_mode: auto_chain
auto_chain_mode: A
说明:
run_mode: auto_chain
auto_chain_mode: B
说明:
run_mode: auto_chain
auto_chain_mode: C
说明:
无论选择哪种模式,后续都应先进入第一阶段模板:
step: 1
analysis_mode: local_source/jadx_mcp_session
target_dir: sample_target/decompiled
output_dir: analysis_runs/current_run
jadx_mcp: yes/no
补充说明:
auto_chain_mode: A 或 auto_chain_mode: C,可以在第一阶段模板之后继续补充抓包、Native、报告相关参数auto_chain_mode: B,可先完成第一阶段,后续在进入第四阶段前补充验证与报告参数当用户要分析以下任一材料时,应启用本 Skill:
raw_*.json、*_analysis.json、report.mdraw_*.json 原始命中{target_dir} 与 {output_dir} 时,默认应生成:
file_inventory.jsontech_stack.jsonentrypoints.jsonenv_guard_report.json
除非用户明确要求“只口头分析,不写文件”,否则不得只给对话总结而不落盘。{output_dir} 一旦在第一次输入中确认,就应视为整个会话的统一输出根目录,不得在后续阶段随意变更,除非用户显式覆盖。总控优先识别并沿用以下变量:
{target_name}:目标 App 名称{apk_path}:APK 路径,可选,仅用于补充样本元信息{target_dir}:脱壳后、反编译后的目录{traffic_source}:Burp / Yakit / mitmproxy 导出结果{native_analysis_source}:IDA / Ghidra 工程、伪代码或 so 样本路径{output_dir}:输出目录raw_*.json:脚本索引结果*_analysis.json:阶段分析结果report.md / security_report.md:最终报告类文档一旦用户在当前任务中明确提供了以下路径或标识,总控必须把它们视为当前会话的默认上下文,后续阶段自动继承,除非用户显式覆盖:
{target_name}{apk_path}{target_dir}{traffic_source}{native_analysis_source}{output_dir}继承原则如下:
4/5/6 一体化模式,只需在开始时说明一次 {output_dir},后续 Phase 5、Phase 6 自动继承。{output_dir} 中存在前序文件,则应优先从已知上下文推断,而不是再次要求用户手工填写。当用户第一次提供 {output_dir} 时,总控必须将其视为“统一输出根目录”,并在其下默认创建以下阶段子目录:
{output_dir}/step1{output_dir}/step2{output_dir}/step3{output_dir}/step4{output_dir}/step5{output_dir}/step6各阶段默认输出位置如下:
{output_dir}/step1/{output_dir}/step2/{output_dir}/step3/{output_dir}/step4/{output_dir}/step5/{output_dir}/step6/默认要求:
step1,并建议同时预创建 step2 到 step6。stepN/ 目录中读取,而不是要求用户重新指定文件路径。产物路径别名规则:
{output_dir}/step1/<artifact>。{output_dir}/step2/<artifact>。{output_dir}/step3/<artifact>。{output_dir}/step4/<artifact>。{output_dir}/step5/<artifact>。{output_dir}/step6/<artifact>。推荐同时在根目录维护:
{output_dir}/analysis_state.json用于记录:
analysis_state.json 角色说明analysis_state.json 是整条 1-6 阶段工作流的状态记录文件,不负责保存具体分析结论,而负责记录当前任务的运行状态。
它的主要作用是:
{target_name}、{target_dir}、{output_dir}、运行模式和自动链模式;pending、running、waiting_review、completed、blocked 还是 failed;职责划分如下:
agents/*.md 负责执行各阶段分析;analysis_state.json 负责记录流程状态;最小字段建议包括:
target_namerun_modeauto_chain_modetarget_diroutput_dircurrent_phaseoverall_statusmanual_readyphases总控与各阶段默认应统一使用以下状态值:
pending:尚未开始running:正在执行waiting_review:当前阶段已执行完毕,等待人工确认completed:当前阶段已完成,可供下游消费blocked:缺少输入、条件不满足或被人工要求暂停failed:执行报错或结果不可用默认规则如下:
run_mode = step_by_step 时,阶段执行结束后默认写为 waiting_reviewcompletedrun_mode = auto_chain 时,满足切换条件后,当前阶段写为 completed 并自动进入下一阶段blocked,而不是假装继续推进failed自动链不是“时间到了自动跳转”,而是必须满足前置条件后才能进入下一阶段。
适用逻辑:
最小切换条件:
phase_1.status = completedmanual_ready.traffic_ready = truemanual_ready.mcp_burp_ready = true 或 {traffic_source} 已提供manual_ready.mcp_native_ready = true 或 {native_analysis_source} 已提供适用逻辑:
最小切换条件:
phase_1.status = completedphase_2.status = completedphase_3.status = completed适用逻辑:
最小切换条件:
analysis_mode = local_source 或 manual_ready.mcp_jadx_ready = truemanual_ready.traffic_ready = truemanual_ready.mcp_burp_ready = true 或 {traffic_source} 已提供manual_ready.mcp_native_ready = true 或 {native_analysis_source} 已提供phase_1.status = completed补充要求:
blocked 并等待人工处理,而不是继续跳转blocked 或 failed,不得视为 completed总控只能路由到以下文件:
agents/agent-01-sample-recon.mdagents/agent-02-protocol-mapper.mdagents/agent-03-crypto-native-analyzer.mdagents/agent-04-crypto-vuln-analyzer.mdagents/agent-05-validation-designer.mdagents/agent-06-reporter.md| 阶段 | 用户常见说法 | 主工具方式 | 推荐 MCP | 最低输入要求 | 推荐产物 |
|---|---|---|---|---|---|
| Phase 1 | “开始第一步”“先做静态侦察”“我接好了 jadx-mcp” | jadx-mcp 会话分析或本地目录分析 | jadx-mcp 或无 MCP | jadx_mcp=yes 或 {target_dir} | 默认生成 file_inventory.json tech_stack.json entrypoints.json env_guard_report.json |
| Phase 2 | “开始第二步”“做流量与代码对齐”“我接好了 Burp MCP” | 抓包与代码映射 | Burp MCP / Yakit MCP | {target_dir} + 抓包 MCP 或 {traffic_source} | api_endpoints.json protocol_map.json traffic_alignment.json |
| Phase 3 | “开始第三步”“分析 so/JNI”“我接好了 ida-mcp”“我接好了 ghidra-mcp” | so / JNI 深挖 | ida-mcp / ghidra-mcp | {native_analysis_source} 或 so 相关材料 | crypto_native_analysis.json jni_analysis.json |
| Phase 4 | “开始第四步”“做漏洞筛查” | 汇总风险判断 | 无强制 MCP,必要时回调 jadx-mcp | 前 1-3 阶段结果至少一部分 | vuln_analysis.json risk_matrix.json,并尽量补齐 secrets_report.json jsbridge_analysis.json |
| Phase 5 | “开始第五步”“做最小验证”“设计 POC” | 验证方案设计与最小脚本模板生成 | Burp / Yakit MCP 可选 | Phase 4 结果 | validation_cases.json test_plan.md repro_steps.md poc_scripts_index.json |
| Phase 6 | “开始第六步”“汇总报告”“出报告” | 交付与汇总 | 无强制 MCP | 前 1-5 阶段结果 | security_report.md findings.json 等 |
说明:
stepN/ 目录。{output_dir} 根下。如果用户明确说了“第一步/第二步/第三步/第四步/第五步/第六步”,优先按用户指定阶段路由。
典型说法如下:
若用户只说:
而没有提供足够输入材料,则总控不得直接开始分析,必须先返回该阶段的标准输入模板,等待用户补齐后再执行。
若用户没有明确说第几步,则按以下顺序判断:
{target_dir},优先以“本地反编译/解包源码目录模式”从 Phase 1 开始。jadx-mcp,且目标样本已在 Jadx 中打开,优先以“jadx-mcp 会话模式”从 Phase 1 开始。{target_dir},且也未连接 jadx-mcp,必须明确说明当前仓库不负责自行脱壳或反编译,并要求用户补齐 jadx-mcp 或脱壳后、反编译后的目录。file_inventory.json 或 entrypoints.json)已存在,则可从 Phase 2 开始;否则必须先补做 Phase 1。vuln_analysis.json、risk_matrix.json,可从 Phase 5 或 Phase 6 开始。注意:后续阶段的 Agent 会硬性检查前序阶段产物是否存在。若跳过 Phase 1 直接进入 Phase 2 / 3 / 4,Agent 会因缺少 file_inventory.json、entrypoints.json 等关键输入而终止。
进入某一阶段前,总控至少做如下检查:
满足以下之一即可:
{target_dir}jadx_mcp = yes,且目标样本已在 Jadx 中打开Phase 1 必须显式区分两种分析方式:
analysis_mode = jadx_mcp_session:通过 jadx-mcp 连接当前 Jadx 会话,对已打开样本进行分析analysis_mode = local_source:直接分析反编译源码或 APK 解包后的目录若同时提供 {output_dir},则本阶段默认要在该目录写出:
file_inventory.jsontech_stack.jsonentrypoints.jsonenv_guard_report.json若 {output_dir} 不存在,应先创建该目录,再写入结果文件。
必须有:
{target_dir}{output_dir}/step1/entrypoints.json 或 {output_dir}/step1/file_inventory.json(旧版根目录平铺产物可作兼容兜底)且满足以下之一:
{traffic_source}若缺少 Phase 1 产物,应先提示用户补做 Phase 1,而不是直接进入 Phase 2。
满足以下之一即可:
ida-mcpghidra-mcp{native_analysis_source}若需要启用 SO 自动化链路,包括 resolve_native_target.py 收敛目标 so 以及 ghidra_target_loader.py 自动导入 Ghidra,则必须同时具备:
{target_dir} 或 jadx_mcp_sessionlib/<abi>/*.so缺少反编译代码上下文时,只能做单文件 native 分析,不能声称完成 Java -> JNI -> 业务字段链路分析。
缺少 APK 解包源码目录时,可以收敛候选 so 名称,或分析用户显式提供的 .so,但不能声称已自动化拉取 so。显式 .so 只属于用户指定的 native 分析材料,不属于“自动化拉取”链路。
必须具备以下材料,否则立即终止:
{output_dir}/step1/file_inventory.json 必须存在(否则 Phase 1 未完成){output_dir}/step2/protocol_map.json{output_dir}/step2/traffic_alignment.json{output_dir}/step2/api_endpoints.json{output_dir}/step3/crypto_native_analysis.json{output_dir}/step3/jni_analysis.json{output_dir}/step1/raw_native_bridges.json若 file_inventory.json 缺失,立即终止并提示 Phase 1 未完成。
若 Phase 2 与 Phase 3 关键输入均缺失,立即终止并提示先完成前序阶段。
若只有部分 Phase 3 输入缺失但 Phase 2 结果齐全,可继续但须降低 native 相关结论置信度。
应已有以下之一:
vuln_analysis.jsonrisk_matrix.json应已有前 1-5 阶段中的至少一部分结果。
若不满足前置条件,总控必须指出缺少什么,而不是勉强推进。
当用户进入某个阶段但材料不全时,总控必须优先做以下动作:
总控不得在材料明显缺失时直接进行“猜测式分析”。
jadx-mcp本阶段支持两种分析方式:
jadx_mcp_session:通过 jadx-mcp 直接读取 Jadx 当前已打开样本的 Manifest、类、方法、字符串、资源和调用线索local_source:直接分析已经脱壳、反编译或解包后的本地目录本阶段默认至少应落盘以下产物:
file_inventory.jsontech_stack.jsonentrypoints.jsonenv_guard_report.json其中 env_guard_report.json 不能因为“没有发现明确检测逻辑”而省略。若当前阶段仅确认壳、风控 SDK、native 安全库等间接信号,也应明确写出:
confirmedsuspectedsdk_signal_onlynot_confirmed_yetnot_observed等状态之一,供第二步抓包准备和第四步风险收口直接消费。
本阶段的核心不是“执行反编译工具”,而是分析已经得到的材料:
在已提供 {output_dir} 的前提下,本阶段默认应将关键结果结构化落盘,而不是只停留在对话中:
file_inventory.jsontech_stack.jsonentrypoints.jsonenv_guard_report.json若 {output_dir} 当前不存在,应先创建后再落盘。
本阶段主要借助 MCP 获取:
再与代码目录中的:
进行映射。
本阶段最重要的不是单纯得到接口列表,而是尽量吐出可供 Phase 4 直接消费的字段级证据,例如:
field_rolelocationbuilder_pathcrypto_entry_candidaterelated_endpoint_groupvalue_shaperelated_native_candidatereplay_relevantmatched_field_flowsida-mcp / ghidra-mcpida-mcp 或 ghidra-mcp 直接驱动 IDA / Ghidra 分析 so 与 JNI 逻辑本阶段主要借助 MCP 获取:
本阶段输出应尽量补齐可供 Phase 4 直接消费的还原字段,例如:
java_entrynative_entryrelated_fieldsrelated_endpointscrypto_algorithm_candidatekey_derivationiv_derivationsalt_derivationinput_orderoutput_encodingrestoration_confidence其中:
vuln_analysis.json、risk_matrix.json 外,若已存在 raw_secrets.json 或 WebView / JSBridge 相关线索,应尽量补齐 secrets_report.json、jsbridge_analysis.json默认规则如下:
local_source 路径时,默认执行以下 4 个本地索引脚本:
tools/scripts/endpoint_extractor.pytools/scripts/secret_scanner.pytools/scripts/native_bridge_indexer.pytools/scripts/env_guard_indexer.pytools/scripts/ai_summarizer.py 读取其输出,生成 ai_summary.jsonjadx_mcp_session 路径时,不默认执行上述 4 个索引脚本和摘要生成,优先直接消费 jadx-mcp 上下文tools/scripts/sign_rebuilder.py 为 Phase 5 签名重算工具,读取 Phase 3/4 产物生成 sign,不属于 Phase 1 默认执行范围tools/scripts/resolve_native_target.py 与 tools/scripts/ghidra_target_loader.py 继续按原有自动化逻辑执行,不受上述规则影响对应作用:
endpoint_extractor.py:提取 URL、接口路径、BaseURL、deeplink、provider、network security configsecret_scanner.py:提取密钥、Token、证书、云凭证、调试痕迹、内网线索native_bridge_indexer.py:提取 JNI、WebView、JSBridge、Native 加载与桥接线索,仅作为 Phase 3 的前置线索补充env_guard_indexer.py:提取 Root、模拟器、代理、SSL Pinning、Frida、签名校验、完整性校验线索tools/frida/android_phase1_bypass.js:提供授权环境下的 Root / 模拟器 / 代理 / SSL Pinning 基础绕过模板总控在每阶段结束后,应尽量确认有标准产物可供下一阶段使用。
至少应尽量具备:
file_inventory.jsontech_stack.jsonentrypoints.jsonenv_guard_report.json当采用 local_source 路径时,4 个索引脚本默认执行,还应产出:
raw_endpoints.jsonraw_secrets.jsonraw_native_bridges.jsonraw_env_guards.jsonai_summary.json如识别到环境对抗逻辑,还应尽量补齐:
frida_bypass_plan.jsonfrida/android_phase1_bypass.js至少应尽量具备:
api_endpoints.jsonprotocol_map.jsontraffic_alignment.json并优先补齐以下字段,供 Phase 4 直接消费:
field_rolebuilder_pathcrypto_entry_candidaterelated_endpoint_groupvalue_shaperelated_native_candidatereplay_relevantmatched_field_flows至少应尽量具备:
crypto_native_analysis.jsonjni_analysis.json并优先补齐以下字段,供 Phase 4 直接消费:
java_entrynative_entryrelated_fieldsrelated_endpointscrypto_algorithm_candidatekey_derivationiv_derivationsalt_derivationinput_orderoutput_encodingrestoration_confidence至少应尽量具备:
vuln_analysis.jsonrisk_matrix.json并在 vuln_analysis.json 中尽量补齐:
crypto_findingssignature_findingscrypto_restorationpacket_riskssource_phase_2_fieldssource_phase_3_fieldsgap_filled_by_phase4至少应尽量具备:
validation_cases.jsontest_plan.mdrepro_steps.mdpoc_scripts_index.json如材料充足,还应尽量具备:
pocs/{vuln_id}/validate_request.pypocs/{vuln_id}/runtime_observe.jspocs/{vuln_id}/README.md至少应尽量具备:
security_report.mdfindings.json以下模板用于“用户只说开始第 N 步”时,总控应返回给用户的标准输入格式。
总控必须先返回模板,再执行分析。
路径约定:
ai-mobile-reverse-skills/ 为根目录使用相对路径当用户说“开始第一步”时,总控应优先返回:
step: 1
analysis_mode: jadx_mcp_session/local_source
target_dir: sample_target/decompiled
output_dir: analysis_runs/current_run
jadx_mcp: yes/no
字段说明:
analysis_mode:必填,二选一target_dir:当 analysis_mode = local_source 时必填,指向反编译源码或 APK 解包目录output_dir:必填,结果输出目录;若不存在应先创建jadx_mcp:当 analysis_mode = jadx_mcp_session 时必填,应为 yesapk_path:可选,仅用于补充样本元信息当用户说“开始第二步”时,总控应优先返回:
step: 2
target_dir: sample_target/decompiled
output_dir: analysis_runs/current_run
mcp: burp/yakit/none
traffic_source: analysis_runs/current_run/traffic/traffic.json
字段说明:
target_dir:必填output_dir:必填;若不存在应先创建mcp:可选,Burp MCP / Yakit MCP / nonetraffic_source:当未直接使用 MCP 时建议提供当用户说“开始第三步”时,总控应优先返回:
step: 3
target_dir: sample_target/decompiled
output_dir: analysis_runs/current_run
mcp: ida-mcp/ghidra-mcp/none
native_analysis_source: sample_target/native/sample.i64_or_sample.gpr_or_libsample.so
字段说明:
target_dir:建议提供output_dir:必填;若不存在应先创建mcp:可选,ida-mcp / ghidra-mcp / none,由使用者自行选择分析后端native_analysis_source:当使用本地 so / IDA / Ghidra 材料时填写当用户说“开始第四步”时,总控应优先返回:
step: 4
output_dir: analysis_runs/current_run
allow_reanalyze_code: yes/no
字段说明:
output_dir:必填;若不存在应先创建allow_reanalyze_code:可选,是否允许 Phase 4 回看 Java/smali/config当用户说“开始第五步”时,总控应优先返回:
step: 5
output_dir: analysis_runs/current_run
authorized_only: yes/no
字段说明:
output_dir:必填;若不存在应先创建authorized_only:建议填写,默认为 yes当用户说“开始第六步”时,总控应优先返回:
step: 6
output_dir: analysis_runs/current_run
target_name: 项目名称
report_type: brief/full
include_appendix: yes/no
字段说明:
output_dir:必填;若不存在应先创建target_name:建议填写report_type:可选,简版或完整报告include_appendix:可选,是否附带附录与复现步骤用户说:
我现在连接上了 jadx-mcp,可以使用了,目标样本已经在 Jadx 里打开,输出目录是 analysis_runs/current_run,帮我进行第一步。
总控应:
jadx_mcp = yes,且目标样本已在 Jadx 中打开agents/agent-01-sample-recon.md用户说:
继续第二步。
总控应:
{target_dir} 与 {output_dir}step_by_step,则只执行 Phase 2 并等待人工确认auto_chain + A/C,则在满足条件后继续自动推进后续阶段agents/agent-02-protocol-mapper.md用户说:
我现在连接上了 ida-mcp,可以使用了,IDA 工程在 sample_target/native/sample.i64,帮我进行第三步。
或:
我现在连接上了 ghidra-mcp,可以使用了,Ghidra 工程在 sample_target/native/sample.gpr,帮我进行第三步。
总控应:
agents/agent-03-crypto-native-analyzer.md用户说:
我已经完成前面几步,当前有 vuln_analysis.json 和 risk_matrix.json,帮我进行第五步。
总控应:
agents/agent-05-validation-designer.md用户先说:
run_mode: auto_chain
auto_chain_mode: A
然后继续提供第一步模板。总控应:
用户先说:
run_mode: auto_chain
auto_chain_mode: B
或:
run_mode: auto_chain
auto_chain_mode: C
然后继续提供第一步模板。总控应:
B:
C:
B 还是 C,都不得跳过第一步的样本侦察与检测确认README.md 负责面向使用者的完整使用手册docs/MCP-INTEGRATION.md 负责分阶段 MCP 接入规范agents/*.md 负责每个阶段的详细执行方法tools/scripts/*.py 负责本地索引、Native 目标收敛与 Ghidra 导入辅助;其中前 4 个索引脚本在 local_source 路径下默认执行