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

Reverse Engineering eXecution Skill

コンパイル済みバイナリの欠陥を見つけ出し、それを証明する。
7つのサブエージェント、1つのエビデンスツリー、そして2回の実行を比較可能にする固定されたツールチェーン。


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

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


REx@Skill は、リバースエンジニアリングの専門家たちが集めた最先端のツールを使用しています。 それぞれが採用されているのは、インストールが簡単だったからではなく、既知のベンチマークや実際の バイナリ解析の課題でその価値を証明しているからです。ここにあるものは何も再実装されていません。 このスキル自身の役割は、目の前の問いにどのツールが答えるのか、そしてその答えにどれだけの価値があるのかを 知ることです。

ツール役割
Ghidraコンパイル済みバイナリを読みやすい C に戻す
radare2 / rizin2 つ目のデコンパイラ。1 つ目の結果を相互検証するために使用
qemu-user通常の x86 マシン上で ARM、MIPS、PowerPC、RISC-V のバイナリを実行する
z3数学ソルバー — インデックスがバッファの外に出るか、除数がゼロになり得るかを証明する
angrどの入力が特定のコード行に到達するかを割り出す
AFL++生成した数百万の入力をプログラムに投げつけてクラッシュさせる
valgrind目に見えるエラーを引き起こさないメモリバグを捕捉する
libdislocatorバッファを 1 バイト超えて読み取ると即座にクラッシュさせる
capaバイナリが何をできるかを列挙する: 暗号化、ソケットのオープン、プロセスへの注入
floss通常の strings が見逃す隠されたテキストを見つける
Unicornプログラム全体を実行せずに、選んだ入力で単一の関数を実行する
Triton実行中に攻撃者制御のデータがどこを流れるかを追跡する
Frida実行中のプログラムを監視し、変更する
semgrep / cppcheckデコンパイルされた C を既知の悪いパターンについてスキャンする
pwntoolsオフセット、ELF 解析、エクスプロイト作業のためのヘルパーライブラリ

これらは、ビルドおよび計測に使用された正確なバージョンです:

Ghidra 12.1.2 · radare2 6.2.0 · rizin 0.9.1 · qemu-user 11.1.0 + 9 cross-sysroots · 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 がすべてを固定バージョンでインストールします

3 つのコマンドで、上記のすべてのツールが 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** | シェルに入ります。リポジトリのルートから実行することで `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 バージョンを使う2人は同じ実験をしていることにならず、互いの結果を検証することもできません。
- **マシンに何もインストールされない。** Nix はすべてのパッケージをそれをビルドしたもののハッシュの下に保持するため、シェルに入ると `PATH` だけが変わり、それ以外は何も変わりません。シェルを抜ければシステムは元のままです。
- **5年後でも動作する。** 3つのピン留めされたリビジョンがツールチェーン全体を再ビルドするため、公開された数値を後から再検証できます。

3つのリビジョンがツールチェーン全体を、いつでも、どのマシンでも、将来のどの時点でも再ビルドします:```
nixpkgs        ffb3c9b700e759be2ef13237c9d8f953b32a1e46
nixpkgs-angr   ac62194c3917d5f474c1a844b6fd6da2db95077d
capa-rules     v9.4.0

devshell/flake.lock が正であり、devshell/DEVSHELL.md に すべてのツールとそのバージョン、およびその用途が一覧されている。


3. REx@Skill の方法論とアーキテクチャ

REx@Skill は、バイナリに欠陥があるかどうかを判断し、それを証明するための手法である。7 つのサブエージェントがこれを実行し、1 つの証拠ディレクトリを共有する。

1 つのエージェントがバイナリを証拠に変換する。デコンパイルされた C、逆アセンブリ、文字列、どのコードがどこに到達するかのマップ、そして実際に実行したときに何が起こるか。次に 5 つのエージェントがその証拠を同時に読み、それぞれが異なる種類の欠陥を追跡し、そのうちのどれも他のエージェントが見つけたものを見ることができない — 1 つのデコンパイラを共有する 5 人の読み手は同じ間違いを犯すため、彼らを分離しておくことで、1 つの意見を 5 回繰り返すのではなく、5 つの独立した読み取りが得られる。7 番目はまずコードを読み、その後で彼らの調査結果を読み、どれが成り立つかを判断する。

4 つの事項がバイナリ内で特定され、位置が示されない限り、バグとして報告されることはない。攻撃者に制御されたデータがどこから入るか(source)、それが壊しうる操作(sink)、それを止めるはずだったチェック(broken guard)、そして誰が害を受けるか(affected principal)である。1 つでも欠ければ、それは所見ではなく、証明されていない手がかりとして出される。

すべての実行は同じ 3 つのものを提供する。所見、除外されたものとその理由、そしてホストが実行できなかったものである。

このスキルセットは 10 のアーキテクチャでテストされている — x86-64、i686、ARM、AArch64、MIPS と MIPS64 の両エンディアン、32 ビット PowerPC、RISC-V、Apple arm64 — ELF、PE、Mach-O、ファームウェア、生の blob 上で。そこで上限があるわけではない。あなたのデコンパイラがリフトできるアーキテクチャであれば、すべて対象範囲である。

the seven subagents
SVG
エージェント実行一言で
01re-recon最初に、単独で証拠を抽出する。バグを追跡しない — ここで自信のある所見を出すことが失敗モードである。
02re-bughunt常に欠陥が存在するという、最も強力で誠実な主張を組み立てる。すべての sink を列挙する。
03re-safety常にそれが健全であることを証明しようとし、果たせないすべての義務を報告する。
04re-arithmeticインデックスまたはサイズを扱う場合呼び出し境界をまたぐサイズ、インデックス、幅、符号付き/符号なし — 誰かの頭の中ではなく、ソルバーによって果たされる。
05re-lifecycleメモリを確保する場合確保、解放、所有権、初期化、エラーパス。エラーパスこそ誰もテストしなかったものである。
06re-logic認証を行う場合認可、状態機械、暗号、validate-here-use-there。grep すべきシグネチャはない。
07re-reconcile最後に、単独で誰かの結論を読む前にコードを読み、その後で裁定し、報告する。
返ってくるもの

バイナリごとに 1 つのディレクトリ、名前は <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:~
**なぜ名前にハッシュが含まれるのか。** 同じプログラムの2つのビルドはファイル名を共有してもSHA-256は共有しないため、証拠とバイナリが暗黙のうちに乖離することはない。ターゲットを再コンパイルすれば、汚染されたディレクトリではなく新しいディレクトリが得られる。

`pipeline_status.py`はそのツリーを監査し、どのステージが一度も実行されなかったかを報告する — 一度も実行されなかったステージはエラーを残さず、存在しないディレクトリだけを残すからであり、それは「実行されたが何も見つからなかった」と全く同じに見える。

</details>

---

## 4. ツールインベントリ — どのスクリプトが何を呼び出すか

#### 逆コンパイルして読む

| ツール | バージョン | 使用元 | 用途 |
|---|---|---|---|
| **Ghidra** | 12.1.2 | `ghidra_export.py` `batch_decompile.sh` `decompile_addr.py` | 逆コンパイラ — 中核を担うツール |
| **pyghidra** | 3.1.0 | 同じ3つ | ヘッドレスでの駆動 |
| radare2 | 6.2.0 | `run_tools.sh` `strings_report.py` `brief.py` | あらゆるコマンドからのJSON出力 |
| rizin | 0.9.1 | `capabilities.sh` `preflight.sh` | **第2の**逆コンパイラ — クロスチェック |
| 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に同梱されている理由である。

#### サイレントなバグを顕在化させる

| ツール | バージョン | 使用元 | 用途 |
|---|---|---|---|
| **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` | アロケーションごとにページを割り当て — サイレントなOOB読み取りをフォールトに変える |
| clang | 21.1.8 | `triage.py` | リフトされたコードに対する`-fsanitize=...` |

#### 求解とエミュレーション

| ツール | バージョン | 使用元 | 用途 |
|---|---|---|---|
| **z3** | 4.16.0 | `check_bound.py` | 境界の主張を証明 — 9つのモードと汎用のエスケープハッチ |
| **angr** | 9.2.154 | `symfn.py` | 関数ごとのシンボリックハーネス: ハイジャック、OOB書き込み、ゼロ除算 |
| **unicorn** | 2.1.4 | `emulate.py` | 選んだ入力に対して1つの関数を単独で実行 |
| triton | 3.7.0 | 利用可能 | 具体的なトレース上でのconcolic実行とテイント |
| 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>シェルにもあるもの</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`は**1つの自己完結したファイル**である — `name`/`description`のfrontmatterを持つ3,750行のプレーンMarkdown。Claudeバンドルが持つすべてを1つにまとめたもの: 同じ証拠基準、同じパイプライン、異なるアーキテクチャのファジングに関する同じルール。`scripts/`がその隣に来るようにリポジトリをクローンし、次に:

| ランナー | 方法 |
|---|---|
| **Codex** | `AGENTS.md`をそれを指すようにするか、システムプロンプトとして貼り付ける |
| **opencode** | `opencode.json`に`{"instructions": ["SKILL-RE.md"]}` |
| **Cursor / Windsurf** | プロジェクトルールとして投入する |
| **素のAPIループ** | ただのMarkdownである — 先頭に付ける |
| **人間** | 教科書として読める; それが狙いだった |

> **なぜ2つの形式なのか?** Claudeバンドルは16 KBのコアと、オンデマンドでロードされる12の参照ファイルである — 特定の質問が特定の章を必要とするまでは小さなコンテキスト。それらのポインタを辿るのは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

重要なスクリプト


7. 制限事項

このスキルはClaude Codeが動作する場所ならどこでも動く — Linux、macOS、WSL。これはmarkdownである: コア、12のリファレンス、7つのサブエージェント、そして/re-analyze。プラットフォーム固有のものは何もなく、スクリプトはポータブルなPythonとbashである。変わるのはその下にあるツールである。

DEVSHELLはLinux上でビルド・テストされている — x86-64(Ubuntu 22.04.5 LTS)とaarch64。macOSでは薄くなる。11のツールがDarwinには全く存在しないからである:

qemu-userはLinuxのシステムコールを変換するので、定義上Linuxであり、9つのクロスアーキテクチャsysrootもそれに伴う。

Macに残るもの。 すべての静的ステージ:Ghidra逆コンパイル、radare2とrizin、angrとz3、静的アナライザ、トリアージ、stringsと到達可能性。失うのは実行である — 動的プローブ、サニタイザ実行、ファジング、そして異なるアーキテクチャのバイナリ。これは実際の損失である:クラッシュはこの方法論が持つ最も強い証拠であり、それを置き換える静的なものは何もない。

何もそうでないふりはしない。 scripts/capabilities.shはホストが実際にできることを報告し、scripts/pipeline_status.pyはステージを欠落としてマークし、そのコストはレポートのlimitationsに記載される。実行されなかったステージが、実行されて何も見つからなかったステージとして報告されることは決してない — スキルの§9.1を参照。

要するに: Linuxで分析する。読み、計画し、レポートを書くのはどこでも。


Norbert Tihanyi · x.com/@TihanyiNorbert

発見 = ソース · シンク · 壊れたガード · 影響を受ける主体。
それ未満は仮説にすぎない。

ツールをダウンロード
capabilities.shこのホストが実際にできること — 計画前に確認する
analyze.shパイプライン全体を順番に、ステップ0〜5、その後ハンドオフ
batch_analyze.sh同じパイプラインをターゲットのディレクトリ全体に対して実行
pipeline_status.pyエビデンスツリーを監査する:どのステージが実行され、各欠落が何を犠牲にするか
overview.pyプログラムの形:カウント、コールツリー、シンク、ソース
brief.py1つのターゲットに対する全ツールの出力を統合し、ギャップを明示
fn.py逆コンパイル全体ではなく1つの関数を読む
reach.pyコールグラフ上のソース → シンクパス
bounds_worklist.py解消が必要な算術的主張を3つの階層で
check_bound.pyz3で1つを解消 — 9モードと汎用エスケープハッチ
symfn.py1つの関数のシンボリックハーネス
emulate.py選択した入力で1つの関数を単独実行
quick_dynamic.shとにかく実行:入力なし、次にほとんどのものを壊す入力
fuzz_target.shプログラムが実際に読み取るチャネルを狙ったファジング
sanitize_run.sh敵対的アロケータ — サイレントなヒープバグをクラッシュさせる
sanitize.py何かが読む前にモデル誘導テキストを隔離する
macOSに存在しないqemu-user · gdb · gef · ltrace · strace · valgrind · AFL++ · honggfuzz · frida · bpftrace · rr
さらにcapaの固定ビルドはDarwin上で自身のテストスイートを通過しない
そしてargvファジングは__libc_start_mainをインターセプトするが、これはglibcであり、macOSに相当するものはない