逆向分析入口

SkillDev tools

逆向分析唯一入口。流程:环境探测(probe.sh) → 偏好询问(分析目标/反编译器/深度/报告/平台) → 任务识别(triage.md) → 编排调用大类网关。 触发词:分析、逆向、reverse、RE、帮我看看这个文件、这个样本是干什么的、 脱壳、找密钥、破解、固件分析、恶意软件分析、analyze this binary。

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the 逆向分析入口 skill

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_TOOLSunknown,后续步骤/技能用到时按需询问,不阻塞入口

第一步:偏好询问(分级)

references/preferences.md 分级规则处理(不默认逐项询问):

  • Level 0 快速入口(默认):目标为初步分析或未明确 → 直接采用默认值(目标=初步分析、Ghidra、standard、报告要、平台 auto),进入第二步
  • Level 1 深度任务:目标明确属于深度任务(脱壳 / 漏洞 / 协议逆向 / 恶意深度分析 / 破解 / 取证等)或用户主动要求 → 完整询问 5 项:
    1. 分析目标(必答,第一项)——不明确就追问
    2. 反编译器:Ghidra(默认) / IDA / radare2
    3. 深度:快速结论 / 标准分析 / 深度报告
    4. 报告:要 / 不要
    5. 平台确认:自动 / 手动

结果存入会话变量(RE_GOALRE_DECOMPILERRE_DEPTHRE_REPORTRE_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
57
Forks
8
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
re-analyze
Source
github.com/dslsdzc/rev-skills