Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
REx-skill — REx@Skill - 面向二进制漏洞发现的智能体逆向工程执行技能 | Kitploit
工具/GitHubGitHub/tihanyin/rex-skill
静态分析动态分析 (沙盒)漏洞分析漏洞利用逆向工程模糊测试恶意软件分析实用工具与框架二进制分析AI 辅助逆向二进制利用
447151天前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
GitHub
tihanyin/rex-skill

REx-skill

REx@Skill - 面向二进制漏洞发现的智能体逆向工程执行技能

查看仓库
分享
REx@Skill

REx@Skill

逆向工程执行技能

发现编译二进制文件中的缺陷——并证明它们。
七个子代理,一棵证据树,以及一个固定版本的工具链,使两次运行结果可比较。


Release Claude Code Nix Linux Python License


Ghidra radare2 rizin QEMU angr z3 AFL++ Valgrind capa Unicorn Triton Frida semgrep LLVM Python Nix

Ghidra · radare2 · rizin · qemu-user · angr · z3 · AFL++ · valgrind · capa · Unicorn · Triton · Frida · semgrep · clang · Python · Nix
全部固定版本,全部可复现


1. 安装 Claude 技能

1 · Claude Code —— 如果已经安装,请跳过。```bash curl -fsSL https://claude.ai/install.sh | bash

root@kitploit:~
**2 · REx@Skill** — 1 个技能,12 个参考,**7 个子代理**,**33 个脚本**。```bash
curl -fsSL https://raw.githubusercontent.com/tihanyin/REx-skill/main/install.sh | sh

3 · 分析二进制文件。```bash claude

/re-analyze path/to/binary # one target /re-analyze path/to/directory/ # a whole corpus, evidence gathered in parallel

root@kitploit:~
<div align="center">
<sub><code>install.sh</code> 仅写入 <code>~/.claude/</code> —— 该技能及其 33 个流水线脚本、7 个代理、<code>/re-analyze</code>。<br>它绝不会替你安装 Claude Code;它会备份任何将被覆盖的内容,而 <code>--uninstall</code> 会将其干净地移除。</sub>
</div>

<br>

<details>
<summary><b>更想克隆?</b> &nbsp;· &nbsp;<i>或安装到其他位置,或将其移除</i></summary>```bash
git clone https://github.com/tihanyin/REx-skill && cd REx-skill
./install.sh                              # into ~/.claude
./install.sh --prefix ~/.config/claude    # somewhere else
./install.sh --uninstall                  # take it back out

2. 本技能使用的工具

Ghidra radare2 rizin QEMU angr z3 AFL++ Valgrind capa


REx@Skill 使用由逆向工程专家收集的最先进工具。 每一个工具之所以入选,都是因为它在已知基准测试和真实的 二进制分析挑战中证明了自己的价值——而不是因为安装方便。这里 没有任何东西是重新实现的;该技能自身的职责是知道哪个工具能回答 眼前的问题,以及它的答案有多大价值。

以下是它构建和测量时所用的确切版本:

Ghidra 12.1.2 · radare2 6.2.0 · rizin 0.9.1 · qemu-user 11.1.0 + 9 个交叉 sysroot · angr 9.2.154 · z3 4.16.0 · AFL++ 5.00c · valgrind 3.27.1 · capa 9.4.0 · Unicorn 2.1.4 · Triton 3.7.0 · Frida 17.17.0 · clang 21.1.8 · semgrep 1.172.0 · floss 3.1.1 · yara 4.5.7 · binwalk 3.1.0 · pwntools 4.15.0 · cppcheck 2.21.1

每一个都是可选的。 scripts/capabilities.sh 会报告本机拥有哪些工具, 每个脚本都会指出它找不到的工具,而缺失的工具会将分析范围收窄 到 limitations 中,而不是静默失败。

没有这些工具?DEVSHELL 会安装全部工具,并锁定版本

三条命令,上述所有工具就会出现在你的 PATH 中,且版本完全一致—— 无需四处寻找,也不会留下半配置状态。```bash git clone https://github.com/tihanyin/REx-skill 2>/dev/null || git -C REx-skill pull cd REx-skill curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | sh -s -- install --no-confirm nix develop ./devshell scripts/capabilities.sh

root@kitploit:~
| | |
|---|---|
| **0** | 克隆仓库,如果已有则更新——上面的一行式技能安装器**不会**留下克隆,它从临时检出工作并在完成后删除,因此工具链和脚本需要自己的克隆 |
| **1** | 安装 Nix,即负责版本固定的包管理器——然后**打开一个新终端**。*已有 Nix?跳过此步。* 在已有安装上重新运行安装器会失败并提示 `Found existing plan in /nix/receipt.json`,这是它拒绝改动你已有的内容,而不是需要修复的错误 |
| **2** | 进入 shell,从仓库根目录进入,以便 `scripts/` 随手可用。首次会下载大量内容;之后每次只需几秒 |
| **3** | 确认安装:`ghidra pyghidra r2 rizin`、`qemu-user architectures: 7`、`angr`、`z3`、`afl`——而不是裸机给出的 `MISS` 行 |

`exit` 会将你的 `PATH` 完全恢复原状。*已在 Ubuntu 22.04.5 LTS
(x86-64)、Determinate Nix 3.22.4 上测试。*

<details>
<summary><b>为什么要固定工具链版本?</b></summary>

- **可比较的运行。** 反编译器的输出*就是*分析师的输入。两个人在两个 Ghidra
  版本上做的不是同一个实验,也无法互相验证对方的结果。
- **不在你的机器上安装任何东西。** Nix 将每个包保存在其构建来源的哈希之下,
  因此进入 shell 只会改变 `PATH`,别无其他。离开 shell 后,你的系统与之前完全一样。
- **五年后仍然可用。** 三个固定修订版本即可重建整个工具链,这正是已发布数字日后可复查的原因。

三个修订版本即可在任何机器上、在未来任何时间点重建整个工具链:```
nixpkgs        ffb3c9b700e759be2ef13237c9d8f953b32a1e46
nixpkgs-angr   ac62194c3917d5f474c1a844b6fd6da2db95077d
capa-rules     v9.4.0

devshell/flake.lock 是权威来源;devshell/DEVSHELL.md 列出了每个工具及其版本和用途。


3. REx@Skill 方法论与架构

REx@Skill 是一种用于判定二进制文件是否存在缺陷——并加以证明——的方法。七个 subagent 运行该方法,共享同一个证据目录。

一个 agent 将二进制文件转化为证据:反编译的 C 代码、反汇编、字符串、代码可达性映射,以及实际运行时的行为。随后五个 agent 同时阅读这些证据,各自追查不同类型的缺陷,并且它们彼此看不到对方的发现——五个读者共用同一个反编译器会犯同样的错误,因此将它们隔离可以获得五份独立的解读,而不是同一个观点重复五次。第七个 agent 先阅读代码,然后再阅读它们的发现,并裁定哪些结论站得住脚。

除非在二进制文件中指明并定位了四样东西,否则不会将其报告为 bug:攻击者可控数据从哪里进入(source)、它能破坏什么操作(sink)、本应阻止它的检查(broken guard),以及谁受到损害(affected principal)。缺少任何一项,它就会作为未经证实的线索输出,而不是发现。

每次运行都会交付同样的三样东西:发现、被排除的内容及原因,以及宿主无法运行的内容。

该技能集已在十种架构上测试——x86-64、i686、ARM、AArch64、MIPS 和 MIPS64(两种字节序)、32 位 PowerPC、RISC-V 和 Apple arm64——覆盖 ELF、PE 和 Mach-O、固件和原始 blob。它并不局限于此:任何你的反编译器能够提升的架构都在范围内。

the seven subagents
SVG
你会得到什么

每个二进制文件一个目录,命名为 <filename>-<first 8 hex of its SHA-256>:``` results/ ├── index.json every sha256 analysed -> its directory └── httpd-4f2a9c1e/ <- "httpd", sha256 4f2a9c1e... ├── decomp/ decompiled C ├── reach/ source -> sink paths ├── disasm/ disassembly, real VAs ├── bounds/ arithmetic to discharge ├── meta/ function map + base ├── sanitize/ hostile-allocator runs ├── strings/ inventory, by family ├── fuzz/ coverage-guided search ├── dynamic/ crafted-input battery ├── quarantine/ text aimed at YOU └── notes/ the threat model └── pipeline.json what ran, what did not

root@kitploit:~
**为什么哈希在名称里。** 一个程序的两次构建共享文件名但不共享
SHA-256,因此证据和二进制文件不会悄悄漂移:重新编译目标,你会得到一个新的
目录,而不是一个被污染的目录。

`pipeline_status.py` 审计该目录树并报告哪些阶段从未运行——因为一个
从未运行的阶段不会留下任何错误,只会留下一个缺失的目录,这读起来
完全就像“运行了,什么也没找到”。

</details>

---

## 4. 工具清单——哪个脚本调用什么

#### 反编译与阅读

| 工具 | 版本 | 使用者 | 用途 |
|---|---|---|---|
| **Ghidra** | 12.1.2 | `ghidra_export.py` `batch_decompile.sh` `decompile_addr.py` | 反编译器——承重工具 |
| **pyghidra** | 3.1.0 | 同上三个 | 无头驱动它 |
| radare2 | 6.2.0 | `run_tools.sh` `strings_report.py` `brief.py` | 每条命令输出 JSON |
| rizin | 0.9.1 | `capabilities.sh` `preflight.sh` | **第二个**反编译器——交叉验证 |
| binutils | 2.46 | `triage.py` `inventory.py` `run_tools.sh` | readelf、objdump、nm、strings、size |
| file | 5.48 | 每个入口点 | 第一条命令,每次都如此 |

#### 分类——它是什么,它能做什么

| 工具 | 版本 | 使用者 | 用途 |
|---|---|---|---|
| **capa** | 9.4.0 | `run_tools.sh` `brief.py` | 基于规则的能力识别,带地址 |
| **floss** | 3.1.1 | `strings_report.py` | `strings` 看不到的字符串 |
| yara | 4.5.7 | `run_tools.sh` `analyze.sh` | 加壳器、加密常量、库版本 |
| detect-it-easy | 3.21 | `run_tools.sh` | 加壳器和编译器识别 |
| checksec | pwntools | `triage.py` `brief.py` | NX / RELRO / canary / PIE |

#### 执行——最大的单一杠杆

| 工具 | 版本 | 使用者 | 用途 |
|---|---|---|---|
| **qemu-user** | 11.1.0 | `dynamic_probe.py` `quick_dynamic.sh` | 运行异构架构二进制文件 |
| **9 个交叉 sysroot** | glibc | `setup_sysroots.sh` | 没有它们,qemu 甚至无法加载异构动态二进制文件 |
| gdb / ltrace / strace | 17.2 | `capabilities.sh` 报告它们 | 跟踪;`ltrace` 是这里最未被充分利用的工具 |

> 在一次实测比较中,同一模型在有执行可用时得分约为无执行时的 **3 倍召回率**。
> 这一行就是 sysroot 随 flake 一起提供的原因。

#### 让沉默的 bug 发声

| 工具 | 版本 | 使用者 | 用途 |
|---|---|---|---|
| **valgrind** | 3.27.1 | `sanitize_run.sh` | 对于无法重新构建的二进制文件,最接近 ASan 的东西 |
| **AFL++** | 5.00c | `fuzz_target.sh` `quick_dynamic.sh` | 覆盖率引导的模糊测试,QEMU 模式 |
| libdislocator | 随 AFL++ | `sanitize_run.sh` `quick_dynamic.sh` | 每次分配一页——将静默的越界读取变成故障 |
| clang | 21.1.8 | `triage.py` | 对提升后的代码使用 `-fsanitize=...` |

#### 求解与模拟

| 工具 | 版本 | 使用者 | 用途 |
|---|---|---|---|
| **z3** | 4.16.0 | `check_bound.py` | 消解边界断言——9 种模式外加一个通用逃生舱 |
| **angr** | 9.2.154 | `symfn.py` | 每个函数的符号化测试框架:劫持、越界写入、除零 |
| **unicorn** | 2.1.4 | `emulate.py` | 在你选择的输入上隔离运行一个函数 |
| triton | 3.7.0 | 可用 | 在具体轨迹上进行混合执行和污点分析 |
| pwntools | 4.15.0 | `brief.py` `run_tools.sh` | `cyclic()` 偏移、ELF/GOT 解析 |

#### 对反编译 C 代码的静态分析

| 工具 | 版本 | 使用者 | 用途 |
|---|---|---|---|
| cppcheck | 2.21.1 | `run_tools.sh` `analyze.sh` | 容忍无法编译的代码——反编译器输出就是如此 |
| semgrep | 1.172.0 | `run_tools.sh` `analyze.sh` | 模式规则,无需构建 |
| flawfinder | 2.0.20 | `capabilities.sh` | 词法分析;一个有主见的 grep |

<details>
<summary><b>Shell 中还有</b>——固件、格式、可利用性</summary>

`binwalk` 3.1.0 · `unsquashfs` · `sasquatch` · `jefferson` · `ubi_reader` ·
`kaitai-struct-compiler` 0.11 · `tshark` 4.6.8 · `hexyl` · `pev` 0.81 ·
`osslsigncode` · `diffoscope` 328 · `patchelf` 0.15.2 · `ROPgadget` 7.7 ·
`one_gadget` 1.9.0 · `honggfuzz` · `radamsa` 0.7 · `bitwuzla` 0.9.1 · `rr` 5.9.0 ·
`bpftrace` 0.26.0 · `upx` 5.2.0

包含每个版本的完整清单:[`devshell/DEVSHELL.md`](https://github.com/tihanyin/rex-skill/blob/main/devshell/DEVSHELL.md)

</details>

---

## 5. 与 Claude 之外的工具一起使用

`general-skill/SKILL-RE.md` 是**一个自包含文件**——3 750 行纯
Markdown,带有 `name`/`description` frontmatter。Claude 捆绑包拥有的一切,
都在一个文件里:相同的证据标准、相同的流水线、相同的关于
模糊测试异构架构的规则。克隆仓库,使 `scripts/` 位于其旁边,然后:

| 运行器 | 方法 |
|---|---|
| **Codex** | 将 `AGENTS.md` 指向它,或将其粘贴为系统提示 |
| **opencode** | 在 `opencode.json` 中写入 `{"instructions": ["SKILL-RE.md"]}` |
| **Cursor / Windsurf** | 将其作为项目规则放入 |
| **一个普通的 API 循环** | 它只是 Markdown——前置它即可 |
| **一个人** | 它读起来像教科书;这正是目的 |

> **为什么有两种形式?** Claude 捆绑包是一个 16 KB 的核心加上十二个按需
> 加载的参考文件——在特定问题需要特定章节之前保持小上下文。只有 Claude Code
> 会遵循这些指针,所以其他每个运行器都得到单个文件。

---

---

## 6. 里面有什么```
.
├── claude-skill/          the Claude Code form
│   ├── skills/reverse-engineering/
│   │   ├── SKILL.md           16 KB core, loaded on every trigger
│   │   └── references/        12 files, pulled in on demand
│   ├── agents/                7 subagents
│   └── commands/              /re-analyze — orchestrates all three phases
│
├── general-skill/         the portable form
│   ├── SKILL-RE.md            the whole methodology, one file, 32 sections
│   └── AGENTS.md              points any agent at it
│
├── scripts/               32 tools — the pipeline and its parts
├── devshell/              flake.nix + flake.lock + DEVSHELL.md
├── images/                logo and figures
└── install.sh             one command into ~/.claude
下载工具

Ghidra · radare2 · rizin · qemu-user · angr · z3 · AFL++ · valgrind · capa

Unicorn Triton Frida semgrep LLVM Python Nix Linux Anthropic

Unicorn · Triton · Frida · semgrep · clang · Python · Nix · Linux · Claude

工具功能
Ghidra将编译后的二进制文件还原为可读的 C 代码
radare2 / rizin第二个反编译器,用于交叉验证第一个的结果
qemu-user在普通 x86 机器上运行 ARM、MIPS、PowerPC 和 RISC-V 二进制文件
z3一个数学求解器——证明某个索引是否会越出缓冲区,或某个除数是否可能为零
angr计算出什么样的输入能够到达代码中的某一行
AFL++向程序投喂数百万个生成的输入,使其崩溃
valgrind捕获那些否则不会产生可见错误的内存缺陷
libdislocator让读取缓冲区后一个字节的行为立即崩溃
capa列出二进制文件能做什么:加密、打开套接字、注入进程
floss找出普通 strings 会遗漏的隐藏文本
Unicorn在你选择的输入上运行单个函数,而无需运行整个程序
Triton追踪攻击者控制的数据在运行过程中的流向
Frida在程序运行时监视并修改它
semgrep / cppcheck扫描反编译后的 C 代码,查找已知的不良模式
pwntools用于偏移计算、ELF 解析和漏洞利用工作的辅助库
Agent运行时机一句话说明
01re-recon最先,单独运行提取证据。不追查 bug——在这里给出自信的发现就是失败模式。
02re-bughunt始终构建缺陷存在的最强诚实论证。枚举每一个 sink。
03re-safety始终试图证明其健全,并报告每一个它无法履行的义务。
04re-arithmetic如果涉及索引或大小跨调用边界的大小、索引、宽度和有符号性——由求解器履行,而非凭某人的头脑。
05re-lifecycle如果涉及分配分配、释放、所有权、初始化和错误路径。错误路径是没人测试过的那条。
06re-logic如果涉及认证授权、状态机、加密、此处验证彼处使用。没有可供 grep 的签名。
07re-reconcile最后,单独运行先阅读代码,再阅读任何人的结论,然后裁定并报告。

真正重要的脚本

capabilities.sh此主机实际能做什么——规划前先检查
analyze.sh按顺序执行整个流水线,步骤 0-5,然后交接
batch_analyze.sh对目录中的目标执行相同的流水线
pipeline_status.py审计证据树:哪些阶段运行过,以及每个缺失的代价
overview.py程序的形态:计数、调用树、汇聚点、来源
brief.py针对一个目标汇总每个工具的输出,并指出缺口
fn.py只读取一个函数,而不是整个反编译结果
reach.py调用图上的 source → sink 路径
bounds_worklist.py需要消解的算术断言,分为三个层级
check_bound.py用 z3 消解一个——9 种模式外加一个通用逃生通道
symfn.py针对一个函数的符号化测试框架
emulate.py在你选择的输入上隔离运行一个函数
quick_dynamic.sh直接运行:先无输入,再用能破坏大多数程序的输入
fuzz_target.sh针对程序实际读取的通道进行模糊测试
sanitize_run.sh恶意分配器——让静默的堆漏洞崩溃
sanitize.py在任何东西读取之前,隔离模型导向的文本

7. 局限性

该技能可在任何运行 Claude Code 的地方运行——Linux、macOS、WSL。它是 markdown: 核心、12 个参考、7 个子代理和 /re-analyze。其中没有任何平台特定的内容, 脚本是可移植的 Python 和 bash。变化的是它们底层的工具。

DEVSHELL 在 Linux 上构建和测试——x86-64(Ubuntu 22.04.5 LTS)和 aarch64。macOS 是它变薄弱的地方,因为其中十一个工具在 Darwin 上根本不存在:

macOS 上缺失qemu-user · gdb · gef · ltrace · strace · valgrind · AFL++ · honggfuzz · frida · bpftrace · rr
另外capa 的固定构建在 Darwin 上无法通过其自身的测试套件
还有argv 模糊测试会介入 __libc_start_main,而那是 glibc——macOS 没有对应物

qemu-user 翻译的是 Linux 系统调用,所以它按定义就是 Linux,九个 跨架构 sysroot 也随之如此。

这在 Mac 上留下了什么。 每一个静态阶段:Ghidra 反编译、 radare2 和 rizin、angr 和 z3、静态分析器、分诊、字符串和 可达性。你失去的是执行——动态探测、sanitizer 运行、 模糊测试,以及任何外来架构的二进制文件。这是真正的损失:崩溃是 这套方法论所拥有的最强证据,而没有任何静态方法能替代它。

没有任何东西假装不是如此。 scripts/capabilities.sh 报告主机 实际能做什么,scripts/pipeline_status.py 将阶段标记为缺失,而 代价落在报告的 limitations 中。未运行的阶段绝不会 被报告为运行过且一无所获的阶段——见该技能的 §9.1。

简而言之: 在 Linux 上分析。在任何地方阅读、规划和撰写报告。


Norbert Tihanyi · x.com/@TihanyiNorbert

一个发现 = source · sink · 被破坏的防护 · 受影响的主体。
任何少于这些的都只是假设。