re-analyze
Analyzes compiled programs and files to understand what they do and how they work.
Installation
Paste this into Claude Code, Cursor, or any agent that can run commands.
SKILL.mdShow the author's original SKILL.md (not in English)
--- name: re-analyze type: entry description: > 逆向分析唯一入口。流程:环境探测(probe.sh) → 偏好询问(分析目标/反编译器/深度/报告/平台) → 任务识别(triage.md) → 编排调用大类网关。 触发词:分析、逆向、reverse、RE、帮我看看这个文件、这个样本是干什么的、 脱壳、找密钥、破解、固件分析、恶意软件分析、analyze this binary。 --- # 逆向分析入口 <TARGET-AWARE-GATE> 按输入类型决定是否必须环境探测,再进入后续步骤。禁止跳过探测直接分析二进制文件/样本。 </TARGET-AWARE-GATE> ## 第〇步:输入类型判定与环境探测 **输入类型 → 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 项: 1. **分析目标**(必答,第一项)——不明确就追问 2. 反编译器:Ghidra(默认) / IDA / radare2 3. 深度:快速结论 / 标准分析 / 深度报告 4. 报告:要 / 不要 5. 平台确认:自动 / 手动 结果存入会话变量(`RE_GOAL`、`RE_DECOMPILER`、`RE_DEPTH`、`RE_REPORT`、`RE_TARGET_PLATFORM`),本次分析全程有效,被调用技能读取。 **安全底线**:目标涉及运行样本 → 提醒默认沙箱原则(见 [[platform-tips]] 最高原则)。 ## 第二步:任务识别 按 `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 表约束行动(换思路/回退/交付部分结论),禁止自行硬琢磨 分析全流程遵守 [[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)
Ships with 8 supporting files:
- references/analysis-contract.md
- references/anti-dynamic-workflow.md
- references/capabilities.md
- references/platform-tips.md
- references/preferences.md
- references/probe.sh
- references/rerouting.md
- references/triage.md
Mirrored from the author's public source. Install counts from the open skills registry.