逆向工程 Radare2

Model: minimax-m3 | ¥0.20/call
网络安全Claude Opus 4.7安全审计Radare2

Radare2:zhaoxuya520/reverse-skill: radare2,适用于安全分析、取证与威胁排查场景。

Calls: 1

Skill Documentation

逆向工程 Radare2

摘要

Radare2:zhaoxuya520/reverse-skill: radare2,适用于安全分析、取证与威胁排查场景。

> 来源: zhaoxuya520/reverse-skill (15.7k stars) — 安全技能路由

> 原文件: skills/radare2/SKILL.md

> 模型推荐: claude-opus-4-7 (安全分析)

这个 skill 是干嘛的

reverse-skill 整合了逆向工程 / 渗透测试 / CTF / 安全分析的"技能路由包" — 52 个 skill,每个对应一类目标(APK/二进制/前端/网络/IoT/Mac/Win)。

michael 强调"skill 要有相应的指导功能,指导用户使用",所以加了下面两节让 Agent 和用户对接。

---

🤖 Agent 使用说明

1. 用户提到"逆向 / 渗透 / CTF / 取证 / 漏洞"时,触发对应 skill

2. skill 会先 check 用户是否取得授权(否则 ask user)

3. 按 skill 流程执行(取证镜像 / 静态分析 / 动态调试 / 漏洞利用)

4. 涉及破坏性操作前必须 ask user

5. 完工后让 Agent 跑自检

👤 用户需要做什么?

1. 告诉 Agent 你要分析的目标(APK / ELF / JS / 固件 / 等)

2. 如果需要提供文件/镜像/哈希,按 Agent 提示提供

3. 涉及破坏性操作时明确告诉 Agent"继续"或"取消"

4. 全程 Agent 自动化,你只需提供数据 + 回答决策点

---

原 skill 内容(zhaoxuya520/reverse-skill/skills/radare2/SKILL.md,截断到 12k chars)

---

name: radare2

description: |

Use this skill whenever the user wants to analyze binaries with radare2/r2 from the command line, including reverse engineering, disassembly, function analysis, strings/import inspection, patching, binary diffing, hex inspection, or r2 scripting. Also use it when the user mentions PE/ELF/Mach-O/DEX/WASM files together with CLI analysis, `rabin2`, `rasm2`, `radiff2`, `r2pipe`, or asks for radare2 command help on Windows/Linux/macOS.

---

radare2

面向 `radare2` CLI 的二进制分析技能。重点是直接用命令行完成侦察、分析、定位、导出和轻量修改,不依赖 GUI。

ACTION REQUIRED(读完后立刻执行)

1. `NOW`: 读取 `../field-journal/precedent-reverse.md` — 确认本 skill 的操作是已授权的常规操作

2. `NOW`: 确认当前任务是否命中本 skill 的适用范围

3. `NEXT`: 读取 `../tool-index.md`,校验工具可用性和实际路径

4. `NEXT`: 缺工具时调用 bootstrap,不要猜路径

5. `ACT`: 进入"工作流"第一步并执行,不要停在确认状态

适用范围

当用户有这些意图时应优先使用本 skill:

如果用户明确要 GUI 逆向、Hex-Rays 风格伪代码、或 IDA 工作流,优先考虑 `ida-reverse`。如果是网页 JS 逆向,优先考虑 `reverse-engineering`。

先做环境确认

先不要假设 `r2` 可用。先检查:

r2 -v
rabin2 -v

如果未安装,再检查常见安装位置或提示安装。

Windows 常见可执行文件:

内置资源

这个 skill 自带两个资源,优先复用,不要每次临时组织一套重复命令。

`scripts/recon.ps1`

标准侦察脚本,适合先做第一轮概况分析。会输出:

调用方式:

powershell -File "<skill-root>\radare2\scripts\recon.ps1" -TargetPath "C:\path\to\sample.exe"

如果需要附带 `r2` 自动分析:

powershell -File "<skill-root>\radare2\scripts\recon.ps1" -TargetPath "C:\path\to\sample.exe" -RunAnalysis

`references/cheatsheet.md`

当需要更多命令细节、常见场景模板、或要快速回忆语法时,读取这个速查表,而不是凭记忆硬猜。

已知现象

Windows 下偶发 `.sdb` 缺失告警

某些 PE 文件在 `rabin2` 侦察时,可能出现类似下面的告警:

ERROR: Cannot find ...\share\format\dll\*.sdb

如果主体输出仍然正常返回,通常不影响基础侦察结论,先继续分析即可。不要因为这类附带告警就直接判定分析失败。

基本原则

1. 先侦察,后深挖

不要一上来就全量自动分析。先用轻量命令确认文件类型、架构、入口点、字符串、导入表,再决定是否做 `aaa`、`aaaa` 或定向分析。

2. 优先最小足够命令

`radare2` 命令非常多,用户通常只需要最短路径:

3. 修改前保持谨慎

如果用户要 patch 二进制:

常用工作流

工作流 1:快速侦察

适合刚拿到一个二进制文件时。

硬门禁(MUST — 未满足禁止进入工作流 2 及后续)

对 PE/ELF/Mach-O 等含导入表的二进制,**MUST** 先完成导入表检查并落成 Evidence,再进入函数级分析或动态步骤:

1. 执行 `rabin2 -i <sample>`(或 `recon.ps1` 输出中的 imports 段);DLL/SYS 另 MUST `rabin2 -E` 并记 `E-exports`

2. 将完整/分类后的导入表结果写入 Evidence(建议 id:`E-imports` 或 `E-triage-imports`),至少包含:

3. .NET 等无传统 IAT:MUST 走等价锚点(dnSpy/IL/元数据摘要)写入同一 Evidence 语义槽,禁止空过

4. 加壳样本 IAT 修复:x86 用 ImportREC(或等价)、x64 用 Scylla(或等价)。修复失败 MUST 记 `E-iat-repair-fail` 后转动态 API 断点;**禁止**在静态 IAT 上无限死磕(见 `reverse-engineering/references/re-agent-workflow.md` §1.2)

5. 用户明确要求「重做导入表检查 / 重新检查导入表 / 重做 IAT」时:MUST 重做被点名步骤本身(阻塞时先走可行性门闩:说明前提+请确认;强制则标 quality=unreadable),**禁止改换为无关步骤冒充完成**

未记录导入表(或合法等价锚点 / IAT 失败旁路)Evidence 前:MUST NOT 声称「基础侦察完成」,MUST NOT 进入工作流 2+ 的深挖结论。

优先直接运行内置脚本:

powershell -File "<skill-root>\radare2\scripts\recon.ps1" -TargetPath "sample.exe"

如果只需要手动最小命令,则使用:

rabin2 -I sample.exe
rabin2 -z sample.exe
rabin2 -i sample.exe
rabin2 -E sample.exe

关注点:

工作流 2:交互式分析函数

r2 sample.exe

进入后常用:

aaa          # 常规自动分析
afl          # 列出函数
iz           # 列出字符串
iS           # 列节区
is           # 列符号
s entry0     # 跳到入口点
pdf          # 反汇编当前函数
VV           # 进入可视化模式(如果终端适合)
q            # 退出

说明:

工作流 3:定位 main / 关键逻辑

afl~main
afl~sym.
iz~http
iz~error
axt <addr>

思路:

工作流 4:十六进制与内存查看

px 64        # 当前地址起 64 字节十六进制
pd 20        # 反汇编 20 条指令
psz          # 读取当前地址字符串
pxa          # 更友好的十六进制视图

工作流 5:二进制 patch

仅当用户明确要求修改文件时使用:

r2 -w sample.exe

进入后例如:

s 0x401000
wa nop
wa jmp 0x401050
wq

常见写操作:

修改前最好先备份原文件。如果用户没提备份,至少提醒一次。

工作流 6:非交互自动化

适合一次性输出结果:

r2 -A -q -c "afl;iz;ii;q" sample.exe

常用参数:

如果命令很多,优先整理成易读顺序,不要塞入难以维护的超长串。

更推荐先用内置侦察脚本打底,再决定要不要补定制命令。

常用子工具

`rabin2`

适合静态信息提取:

rabin2 -I sample.exe   # 基本信息
rabin2 -S sample.exe   # 节区
rabin2 -s sample.exe   # 符号
rabin2 -i sample.exe   # 导入
rabin2 -E sample.exe   # 导出
rabin2 -z sample.exe   # 字符串
rabin2 -zz sample.exe  # 更详细字符串

`rasm2`

适合快速汇编/反汇编:

rasm2 -d "9090"
rasm2 -a x86 -b 64 "xor eax, eax"

`radiff2`

适合对比两个二进制:

radiff2 old.exe new.exe
radiff2 -C old.exe new.exe

`rahash2`

适合算哈希:

rahash2 -a md5 sample.exe
rahash2 -a sha256 sample.exe

`rax2`

适合进制和编码转换:

rax2 0x401000
rax2 4198400
rax2 -s hello

推荐分析顺序

遇到未知样本时,按这个顺序做:

1. `rabin2 -I` 看格式、架构、入口点

2. `rabin2 -z` 看字符串

3. `rabin2 -i` 看导入函数 — **MUST + Evidence(硬门,见工作流 1)**

4. 如需交互分析,再进 `r2`(仅当步骤 3 的 Evidence 已落盘)

5. 先 `aaa`,再 `afl` / `iz` / `pdf`

6. 通过字符串引用、导入调用、入口流程逐步定位关键函数

这个顺序的好处是噪音低,能尽快建立方向感。步骤 3 不是可选优化,是进入深挖前的硬门。

Windows 注意事项

输出风格

当用户不是只要命令,而是要你实际分析文件时:

不要只罗列命令而不解释为什么这么做。

典型请求示例

示例 1:分析一个 exe

用户:`帮我看看这个 exe 干了什么,用 radare2 就行`

处理方式:

1. 先用 `rabin2 -I/-z/-i`

2. 判断是否需要进入 `r2`

3. 用 `aaa`、`afl`、`pdf` 深挖入口和关键字符串引用

示例 2:找字符串在哪被调用

用户:`这个报错字符串在哪个函数里触发的`

处理方式:

1. 用 `iz~关键字` 找字符串地址

2. 用 `axt <addr>` 找引用

3. 跳到引用点 `s <addr>` 后 `pdf`

示例 3:改掉跳转

用户:`把这个 jne 改成 je`

处理方式:

1. 先确认目标地址

2. 明确告知要进入写模式

3. 用 `wa je <target>` 或直接 `wx`

4. 修改后再次反汇编验证

避免的做法

参考资料

radare2-skills 生态

radare2-skills 项目(radareorg/radare2-skills)提供了更完整的生态工具和工作流:

**使用策略**:

本 skill 保持原有硬门禁和证据链完整性,不允许跳过任何授权或 Evidence 步骤。

---

路由上下文

**上游入口**: `skills/SKILL.md`(总控)、`routing.md`

**上游备选**: `ida-reverse/`(需要反编译/伪代码时升级到 IDA)

**下游出口**:

**同级关联模块**: `ida-reverse/`(互补:r2 侦察快,IDA 反编译深)

按需自举(On-Demand Bootstrap)

本 skill 的入口脚本已接入统一自举系统。缺少 radare2 时不会直接报错,而是自动尝试安装。

自动化能力边界

| 工具 | 可自动安装 | 安装方式 | 说明 |

|------|-----------|---------|------|

| r2 | ✓ | GitHub Release ZIP (w64) | 自动下载解压到 `%USERPROFILE%\Tools\radare2\` |

| rabin2 | ✓ | 同上(包含在 radare2 发行包中) | — |

| rasm2 | ✓ | 同上 | — |

| radiff2 | ✓ | 同上 | — |

| rahash2 | ✓ | 同上 | — |

| rax2 | ✓ | 同上 | — |

自举触发点

自举失败时

如果自动安装失败(网络不通、GitHub API 限流等),脚本会抛出明确错误并附带手动安装链接。

手动安装:从 https://github.com/radareorg/radare2/releases 下载 `radare2-*-w64.zip`,解压到 `%USERPROFILE%\Tools\radare2\` 并确保 `bin\` 目录在 PATH 中。

任务完成自检(声称完成前 MUST 通过)

常见问题(FAQ)

使用「Radare2」这个 skill 能解决什么问题?

本 skill 专注于Radare2,zhaoxuya520/reverse-skill: radare2。它将相关流程标准化,帮助用户更快拿到可靠结果,减少重复手工操作。

什么情况下适合使用「Radare2」?

当你需要在Radare2相关工作中获得稳定、可复用的产出时最适合——无论是单次任务还是纳入日常工作流,都能直接调用。

使用「Radare2」前需要准备什么?

需要明确授权范围内的目标系统或样本文件,并准备隔离的分析环境(虚拟机/沙箱)。

FAQ

👤 用户需要做什么?

1. 告诉 Agent 你要分析的目标(APK / ELF / JS / 固件 / 等)

2. 如果需要提供文件/镜像/哈希,按 Agent 提示提供

3. 涉及破坏性操作时明确告诉 Agent"继续"或"取消"

4. 全程 Agent 自动化,你只需提供数据 + 回答决策点

---

示例 2:找字符串在哪被调用

用户:`这个报错字符串在哪个函数里触发的`

处理方式:

1. 用 `iz~关键字` 找字符串地址

2. 用 `axt <addr>` 找引用

3. 跳到引用点 `s <addr>` 后 `pdf`

[ ] 我是否完成并回写了 RULES 要求的 Checklist 项?
使用「Radare2」这个 skill 能解决什么问题?

本 skill 专注于Radare2,zhaoxuya520/reverse-skill: radare2。它将相关流程标准化,帮助用户更快拿到可靠结果,减少重复手工操作。

什么情况下适合使用「Radare2」?

当你需要在Radare2相关工作中获得稳定、可复用的产出时最适合——无论是单次任务还是纳入日常工作流,都能直接调用。

使用「Radare2」前需要准备什么?

需要明确授权范围内的目标系统或样本文件,并准备隔离的分析环境(虚拟机/沙箱)。