逆向分析入口
SkillSearchLets your agent analyze claude skill files and unknown binaries through a guided reverse-engineering workflow.
Instructions available. Your AI can read the instructions. Execution depends on the setup they require.
Account requirements not reviewed. Check the skill instructions before use; ahel provides instructions and does not run this skill.
Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
Then ask your AI: use the 逆向分析入口 skill
About this skill
Single entry point for reverse analysis. Workflow: environment probing (probe.sh) → preference questions (analysis target / decompiler / depth / report / platform) → task identification (triage.md) → orchestration via category gateways. Trigger words: 分析, 逆向, reverse, RE, 帮我看看这个文件, 这个样本是干什么的, 脱壳, 找密
What this skill tells your AI
The instructions your AI receives, as published by dslsdzc/rev-skills in .claude/skills/re-analyze/SKILL.md and read by ahel’s review.
第〇步:输入类型判定与环境探测
输入类型 → probe 判定:
| 输入类型 | probe |
|---|---|
| 文件/样本(可执行、固件、压缩包、文档、APK 等) | 必须 |
| 二进制/固件分析请求(目标在磁盘上) | 必须 |
| 现象描述 / 无样本("某程序不落盘""行为异常",目标在运行中) | 必须(现场采集需工具与环境探测) |
| 代码片段(用户直接粘贴的 C/汇编/伪代码) | 跳过 |
| 反编译截图/反汇编文本(无文件可分析) | 跳过 |
| 协议描述/逻辑问答(无二进制目标) | 跳过 |
- probe 必须时:运行
references/probe.sh(或本机手动执行等价命令),记录:RE_OS/RE_ARCH/RE_CORES/RE_MEM_GB(探测失败→询问用户)RE_TOOLS:HAVE 列表(已装,优先使用)与 MISS 列表(未装,不中断流程,用到的技能会引导安装)- 参考 [[platform-tips]] 中本平台分支的经验
- probe 跳过时:无 OS/ARCH/MEM 需求——
RE_OS/RE_ARCH/RE_CORES/RE_MEM_GB/RE_TOOLS置unknown,后续步骤/技能用到时按需询问,不阻塞入口
第一步:偏好询问(分级)
按 references/preferences.md 分级规则处理(不默认逐项询问):
- Level 0 快速入口(默认):目标为初步分析或未明确 → 直接采用默认值(目标=初步分析、Ghidra、standard、报告要、平台 auto),进入第二步
- Level 1 深度任务:目标明确属于深度任务(脱壳 / 漏洞 / 协议逆向 / 恶意深度分析 / 破解 / 取证等)或用户主动要求 → 完整询问 5 项:
- 分析目标(必答,第一项)——不明确就追问
- 反编译器:Ghidra(默认) / IDA / radare2
- 深度:快速结论 / 标准分析 / 深度报告
- 报告:要 / 不要
- 平台确认:自动 / 手动
结果存入会话变量(RE_GOAL、RE_DECOMPILER、RE_DEPTH、RE_REPORT、RE_TARGET_PLATFORM),本次分析全程有效,被调用技能读取。
安全底线:目标涉及运行样本 → 提醒默认沙箱原则(见 [[platform-tips]] 最高原则)。
第二步:任务识别
先认目标:拿不准目标属于哪个系统时,先过 [[system-fingerprints]]——第 0 步是证据归属(容器里有哪些对象、各自 scope、主体是哪一个;跨 scope 的命中只记存在性),再走载体与格式 → 超家族收敛 → 家族内指认 → 易混淆对 → 负判据。很多情况下 ELF 的 EI_OSABI 与 note 段就能一步定案;无容器镜像则找魔数与签名串;有配置文件时,配置格式本身就是强判据。
判不出不要硬判:家族定下来、系统未定,也好过猜一个系统然后整条分析链跑偏;此时按家族级分支先推进。
按 references/triage.md 决策表,把 RE_GOAL + 输入文件映射到一条编排路径。复合目标按依赖顺序串联多个大类。
先判授权上下文:按 triage 第 0 步判定 RE_AUTH(owned / ctf / research / unknown)——补丁/绕过/动态执行等敏感路径受其约束(与 [[re-cracking]] 授权边界一致)。
第三步:路由引擎(状态机)
技能不是调用链,是状态转移:每个技能执行后产出新证据,证据驱动下一跳。
triage → route → skill execution → evidence → route(循环)
调用对应大类网关技能([[re-binary-core]] [[re-malware]] [[re-firmware]] [[re-protocol]] [[re-mobile]] [[re-anti-analysis]] [[re-cracking]] [[re-vuln]] [[re-ctf]] [[re-managed]] [[re-forensics]]),网关内部自行选择原子技能。
Route State(循环防护):
visited:已进入技能列表(会话变量RE_VISITED)max revisit:1- 规则:同技能第二次进入必须携带新证据(相对上次进入时的证据增量——新字符串/新行为/新结构特征);无新证据禁止重入,回到当前技能的备选分支或按 [[rerouting]] B 表收束(防 binary-core ↔ crypto ↔ anti-analysis 类循环)
双轨再路由(强制,见 [[rerouting]]):
- 轨 1(网关完成必查):每网关完成后,对照 [[rerouting]] 的 A/B 表检查新证据;命中 → 调用对应技能,完成后回到轨 1 继续
- 轨 2(证据出现即查):分析中每产出新证据类型(字符串内容如密钥/C2/壳名、节表、行为、加密特征),立即对照 A 表;命中 → 调用技能
- 未命中任何表项 → 按 B 表约束行动(换思路/回退/交付部分结论),禁止自行硬琢磨
跨系统误判表(判定前强制前置):任何要写"这是 hook / dead code / loader bug / 恶意"的时刻,先对照 [[cross-system-models]]——十类高频误判表 + 跨系统共同规律(本地句柄≠全局标识、ready≠有资格运行、无内核入口≠无 I/O、无 CFG 边≠没发生、磁盘≠运行)+ 异常处理树,逐项排除该运行模型允许的正常机制;排除过程与依据写进报告,未排除完不写结论。
分析全流程遵守 [[analysis-contract]]:分析前收集上下文清单(含调查预算,每目标 ≤8 次工具调用)、环节间按数据契约传字段(不重复扫描)、结论交付前做独立复核(证据↔结论逐条核对,输出含置信度的结构化格式)。
第四步(可选):经验复盘
分析结论交付后,问用户是否把本次踩坑/新方法反馈给技能库——需要则调用 [[re-feedback]](三档:发表 issue / 本地入库 / 不入库;蒸馏必须脱敏,见该网关红线)。
何时使用 / 何时不用
- 用:任何逆向/恶意软件/固件/协议/移动/破解/CTF 分析请求
- 不用:已被具体技能触发的精确请求(如"用 Ghidra 分析这段代码"可直接走 [[re-ghidra]])
常见坑与陷阱
-
探测不是摆设:内存 <4GB 却选了 Ghidra → 提示改用 radare2
-
目标是"看逻辑"却直接上沙箱 → 静态优先,动态按需
-
用户没装任何工具是常态——不要因为 MISS 卡住,按「工具准备」引导安装
-
自挖前先搜社区逆向成果:现象——为同类目标(协议/壳/签名)自写解析器/算法还原,耗时是移植的 10 倍;原因——开源逆向项目(协议实现、脱壳器、模拟器回调集)是前人成果沉淀,直接可移植;对策——先搜 GitHub/码云/codeload 同类项目(即使版本不同,结构/模式可复用),确认无现成成果再自挖
-
走完入口不再调用技能:现象——入口编排后自己硬琢磨,中途发现新特征(壳/加密/反调试)不调对应技能;原因——再路由未执行;对策——按第三步双轨:每网关完成/每新证据对照 [[rerouting]] 触发表,命中即调
-
把大目标当一步棋,要求一次全量分析:现象——接到"分析这个程序"直接要求整套分析+完整报告,工具/技能一次返回全量结果,上下文膨胀且重复扫描;原因——没把长任务拆成小步骤链,大而全的输出牺牲了可探索性与可跟踪性;对策——拆成原子小步(列字符串→查 xref→单函数反编译),每步产物带地址/符号等结构化字段直接喂下一步,大输出按行范围/分页按需拉取,不一次拉全 (来源:ReVa(cyberkaida),Apache-2.0)
-
工具参数不匹配就换路,不先做输入归一化:现象——传参报错(地址/符号名形态不符、类型不匹配)立即判定工具不可用或换思路;原因——工具输入层本就容忍常见偏差,LLM 的典型错误可在输入端消化;对策——重试前先归一化:地址↔符号名互相尝试、数字/布尔参数补类型转换、签名文本消除空白差异(如
char *func(与char* func(等价);互斥参数冲突时按错误提示去掉其一再重试 (来源:ReVa(cyberkaida),Apache-2.0) -
报错当死路,不读错误消息里的下一步指引:现象——工具报错即停或换路,忽略错误文本中的修复建议;原因——把错误当终点而非决策点;对策——错误消息通常带够纠错上下文(相似名建议、可用清单、前置条件提示如"先反编译再改名"/"先定义函数再修改"),按指引修正重试,重试成本低于换路 (来源:ReVa(cyberkaida),Apache-2.0)
-
长任务上下文膨胀:同步等全量 vs 游标增量轮询:现象——分钟级分析(全量自动分析、批量对比)同步死等或反复重查旧结果,重复内容挤占上下文,后期判断被稀释;原因——没用"小片段+增量"机制管理长任务上下文;对策——长任务交后台作业,先拿回作业标识+日志游标立即继续,轮询只取游标之后的新增行,终态再取完整结果,期间并行其他环节;输出侧同理:列表先 count 后 list、默认紧凑模式(名称+地址+大小),需要细节再开 verbose——大集合绝不一次拉全 (来源:ReVa(cyberkaida),Apache-2.0)
-
预设工具覆盖不了就卡死,不启用脚本逃逸舱:现象——标准工具链缺对应能力(批处理、自定义逻辑)就停滞或放弃;原因——没把脚本直通当备选通道,或反过来滥用脚本绕过专用工具;对策——工具优先:先确认无专用技能/工具再绕道脚本;脚本执行带护栏(输出截断、超时、异常捕获、只写注册脚本目录),inline 代码走临时文件;脚本产物回填结构化字段继续后续环节 (来源:ReVa(cyberkaida),Apache-2.0)
Signals
- GitHub stars
- 109
- Forks
- 16
- Last commit
- Sep 2026
Advanced
- Item type
- skill
- Key
re-analyze- Source
- github.com/dslsdzc/rev-skills