Communitygithub.com

radare2

radare2 CLI向けのバイナリ分析スキルです。コマンドラインを使って偵察、分析、特定、エクスポート、軽量な修正を、GUIに依存せずに行います。

radare2 とは?

このスキルは、radare2 コマンドラインスイートを使用したバイナリ分析のための包括的なガイドです。主に、実行ファイル(exe、dll、so、elf、apk など)の偵察、分析、特定、パッチ適用を担当し、GUI ツールに頼らずにコマンドラインで作業します。Windows および Linux 環境をサポートし、rabin2 や rasm2 などの関連ユーティリティもカバーしています。 このスキルの主な利点は、体系的なワークフローです。まず軽量な偵察コマンド(rabin2 -I、-z、-i)でファイル情報を収集し、その後 r2 の対話モードで詳細分析(aaa、afl、pdf)に進みます。特に、インポートテーブルのチェック(rabin2 -i)は、詳細な分析に入るための必須ゲート(ハードゲート)となっており、この証拠(Evidence)が記録されるまで次のステップに進めません。 スキルには、標準の偵察スクリプト(scripts/recon.ps1)とコマンドリファレンス(references/cheatsheet.md)が含まれており、毎回同じコマンドを考える手間を省きます。また、パッチ適用時の安全策(読み取り専用モードでの起動、変更前のバックアップ推奨)や、Windows 環境での注意点(パスのスペース、PATH の問題)も詳述されています。 さらに、r2xsql、r2mcp、radius2 のような radare2-skills エコシステムとの連携も考慮されており、これらのツールは認証ゲートや証拠チェーンを迂回するものではなく、あくまで加速器として位置づけられています。このスキルは、コマンドラインで高速かつ確実な静的解析を行いたい開発者やセキュリティ研究者に最適です。

対応✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/zhaoxuya520/reverse-skill/tree/main/skills/radare2

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

radare2 は何をしますか?

radare2 CLI 向けのバイナリ分析スキル。GUI に依存せず、コマンドラインで偵察、分析、特定、エクスポート、軽量な修正に重点を置いています。

アクション必須(読了後ただちに実行)

  1. NOW: ../field-journal/precedent-reverse.md を読む — 本スキルの操作が許可された通常操作であることを確認する
  2. NOW: 現在のタスクが本スキルの適用範囲に該当するか確認する
  3. NEXT: ../tool-index.md を読み、ツールの可用性と実際のパスを確認する
  4. NEXT: ツールが不足している場合は bootstrap を呼び出し、パスを推測しない
  5. ACT: 「ワークフロー」の最初のステップに入り実行する。確認状態で停止しない

適用範囲

以下の意図がユーザーにある場合、本スキルを優先的に使用する:

  • r2 / radare2 を使って exe、dll、so、elf、apk、dex、wasm などのファイルを分析する
  • rabin2、rasm2、radiff2、rahash2、rax2 の使い方を尋ねる
  • コマンドラインでの逆アセンブル、関数参照、文字列参照、インポート/エクスポート確認、クロスリファレンス検索、パッチ適用が必要
  • radare2 のバッチコマンド、-c 自動化コマンド、または r2pipe スクリプトを作成する必要がある

ユーザーが明示的に GUI リバースエンジニアリング、Hex-Rays スタイルの疑似コード、または IDA ワークフローを要求している場合は、ida-reverse を優先する。Web JS リバースの場合は、reverse-engineering を優先する。

事前環境確認

r2 が利用可能であると仮定しない。まず確認する:

r2 -v
rabin2 -v

インストールされていない場合は、一般的なインストール場所を確認するか、インストールを促す。

Windows でよく見られる実行ファイル:

  • radare2.exe
  • rabin2.exe
  • rasm2.exe
  • radiff2.exe
  • rahash2.exe
  • rax2.exe
  • r2pm.exe

組み込みリソース

このスキルには 2 つのリソースが含まれています。毎回同じコマンドを考える手間を省くため、優先的に再利用してください。

scripts/recon.ps1

最初の概要分析に適した標準偵察スクリプト。以下を出力します:

  • 基本情報
  • セクション
  • インポート
  • エクスポート
  • 文字列
  • オプションの r2 -A 自動分析サマリー

呼び出し方:

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 のコマンドは非常に多いですが、ユーザーは通常、最短経路を必要とします:

  • ファイル情報を見る:rabin2 -I
  • 文字列を見る:rabin2 -z
  • インポート/エクスポートを見る:rabin2 -i / rabin2 -E
  • 対話分析:r2 <file> の後、ローカルコマンドを実行

3. 変更前は慎重に

ユーザーがバイナリをパッチ適用する場合:

  • デフォルトでは読み取り専用で開く:r2 <file>
  • 変更が必要な場合にのみ書き込みモードを使用:r2 -w <file> またはセッション内で oo+
  • 変更前にリスクを伝え、誤って元のファイルを上書きしないようにする

よく使うワークフロー

ワークフロー 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)。少なくとも以下を含む:
    • 再現コマンド(repro_command)
    • 主要インポートの分類サマリー:ネットワーク / ファイル / 暗号 / プロセスインジェクション / レジストリ / その他の疑わしい API
    • インポートテーブルが空、解析失敗、またはツールがエラーを報告した場合:それでも MUST で失敗現象と生の出力を Evidence として記録し、黙ってスキップしない
    • インポートテーブルが「クリーンすぎる」(基本 DLL のみ):MUST で動的ロードの疑いを指摘し、SHOULD で動的 API キャプチャに移行する
  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

注目ポイント:

  • ファイル形式、ビット数、アーキテクチャ、プラットフォーム
  • エントリポイントアドレス
  • 疑わしい文字列:URL、パス、エラーメッセージ、レジストリ、コマンドライン引数
  • インポート関数:ネットワーク、ファイル、暗号、プロセスインジェクション、レジストリ操作(MUST で Evidence に記録、上記ハードゲート参照)

ワークフロー 2:対話型関数分析

r2 sample.exe

進入後によく使うコマンド:

aaa          # 標準自動分析
afl          # 関数一覧
iz           # 文字列一覧
iS           # セクション一覧
is           # シンボル一覧
s entry0     # エントリポイントにジャンプ
pdf          # 現在の関数を逆アセンブル
VV           # ビジュアルモード(ターミナルが対応している場合)
q            # 終了

説明:

  • デフォルトでは aaa を優先し、最初からより重い aaaa を使用しない
  • サンプルが大きい、または分析が遅い場合は、エントリポイント近辺のみを分析し、手動で拡張することも可能

ワークフロー 3:main / キーロジックの特定

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

考え方:

  • まず main、エントリポイント、文字列参照から始める
  • axt を使って、特定の文字列やアドレスを誰が参照しているかを調べる
  • 参照ポイントを見つけたら、s <addr>、pdf で確認する

ワークフロー 4:16進数とメモリ表示

px 64        # 現在のアドレスから 64 バイトを 16 進数表示
pd 20        # 20 命令を逆アセンブル
psz          # 現在のアドレスの文字列を読み取り
pxa          # より見やすい 16 進数ビュー

ワークフロー 5:バイナリパッチ

ユーザーが明示的にファイルの変更を要求した場合のみ使用:

r2 -w sample.exe

進入後、例えば:

s 0x401000
wa nop
wa jmp 0x401050
wq

よく使う書き込み操作:

  • wa <asm>:アセンブリを書き込む
  • wx <hex>:生のバイトを書き込む
  • wq:書き込んで終了

変更前には元のファイルをバックアップすることをお勧めします。ユーザーがバックアップについて触れていない場合でも、少なくとも一度は注意を促してください。

ワークフロー 6:非対話型自動化

一度きりの結果出力に適しています:

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

よく使うパラメータ:

  • -A:起動時に自動分析
  • -q:サイレントモード
  • -c:コマンド文字列を実行

コマンドが多い場合は、読みやすい順序に整理し、メンテナンスが困難な長大な文字列に詰め込まないでください。

最初に組み込み偵察スクリプトをベースに使用し、その後カスタムコマンドを追加するかどうかを決定することをお勧めします。

よく使うサブツール

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

2 つのバイナリの比較に適しています:

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 注意事項

  • パスにスペースが含まれる場合、コマンドは正しく引用符で囲む必要があります
  • 現在のターミナルで r2 が見つからない場合、PATH が更新されたばかりの可能性があります。新しいターミナルを開いて再試行してください
  • 一部のサンプルは管理者権限での読み取りが必要ですが、デフォルトでは権限を昇格せず、ユーザーが明示的に必要とする場合のみ行ってください
  • 疑わしいサンプルで動的デバッグを行う前に、ユーザーの意図を確認し、誤操作を避けてください

出力スタイル

ユーザーが単にコマンドを求めているのではなく、実際にファイルを分析してほしい場合:

  • 最初に偵察結果のサマリーを提示
  • 次にキーとなる証拠を列挙:文字列、インポート、関数、アドレス
  • 最後に次のステップの提案またはさらなる詳細分析を提供

なぜその操作を行うのかを説明せずに、単にコマンドを羅列しないでください。

典型的なリクエスト例

例 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 を aaa だけのツールと見なさないこと
  • リスクを説明せずに直接書き込みモードでユーザーのファイルを開かないこと
  • 基本的な偵察を行う前に結論を出さないこと
  • インポートテーブルチェック(rabin2 -i / recon imports)をスキップすることを禁止:Evidence に書き込まれるまで次のステップに進めない;ユーザーがインポートテーブルの再検査を要求した場合、他のステップに変更して代わりに実行することを禁止
  • IAT 修復失敗後に静的にこだわることを禁止:E-iat-repair-fail を記録して動的に移行;64 ビットサンプルに ImportREC のみを使用することを禁止
  • Web JS リバースエンジニアリングをこのスキルに誤ってルーティングしないこと;それは reverse-engineering の範囲です

参考資料

  • コマンド早見表:references/cheatsheet.md
  • 標準偵察スクリプト:scripts/recon.ps1

radare2-skills エコシステム

radare2-skills プロジェクト(radareorg/radare2-skills)は、より完全なエコシステムツールとワークフローを提供します:

  • r2xsql:SQL でバイナリのインポートテーブル / 文字列 / 関数をクエリ
  • r2mcp / r2http:MCP ツールと HTTP ステートフルコマンドチャネル
  • radius2:シンボリック実行、シンボリック動的解析
  • r2pm:プラグイン管理、拡張
  • decompiler plugins:radare2 プラグインメカニズム

使用戦略:

  • ユーザーが r2xsql、r2mcp、r2http、radius2、r2pm、rabin2、rasm2、radiff2、rahash2、rax2 に言及した場合、優先的に本スキル(radare2/SKILL.md)にルーティングする
  • これらのツールはエコシステムアクセラレーターに過ぎず、迂回できない:認証ゲート、tool-index 検証、Evidence のインポート、書き込みモードの確認
  • 最小限の再現可能なコマンド例を示す:
    • r2xsql -s <file> -q "SELECT ..."
    • curl.exe -sS --data-binary 'aaa' http://127.0.0.1:9393/cmd
    • radius2 -p <binary> ...
    • r2pm -ci <plugin>

本スキルは既存のハードゲートと証拠チェーンの完全性を維持し、認証または Evidence のステップをスキップすることを許可しません。


ルーティングコンテキスト

上流エントリ:skills/SKILL.md(統括)、routing.md 上流代替候補:ida-reverse/(逆コンパイル/疑似コードが必要な場合 IDA にアップグレード) 下流出口:

  • 動的分析が必要 → reverse-engineering/tools-dynamic.md(Frida/GDB)
  • 詳細な逆コンパイルが必要 → ida-reverse/
  • PAT で興味深い文字列を発見後、クロスリファレンスが必要 → ida-reverse/(IDA の xref はより強力)

同階層関連モジュール:ida-reverse/(補完的:r2 偵察が高速、IDA 逆コンパイルが深い)

オンデマンドブートストラップ(On-Demand Bootstrap)

本スキルのエントリスクリプトは統一ブートストラップシステムに接続されています。radare2 が不足していても直接エラーにならず、自動的にインストールを試みます。

自動化能力の境界

ツール自動インストール可インストール方法説明
r2✓GitHub Release ZIP (w64)%USERPROFILE%\Tools\radare2\ に自動ダウンロード・解凍
rabin2✓同上(radare2 リリースパッケージに含まれる)—
rasm2✓同上—
radiff2✓同上—
rahash2✓同上—
rax2✓同上—

ブートストラップトリガーポイント

  • scripts/recon.ps1:rabin2 または r2 がない場合、自動的に bootstrap-reverse.ps1 を呼び出す

ブートストラップ失敗時

自動インストールが失敗した場合(ネットワーク不通、GitHub API レート制限など)、スクリプトは明確なエラーをスローし、手動インストール用のリンクを提供します。

手動インストール:https://github.com/radareorg/radare2/releases から radare2-*-w64.zip をダウンロードし、%USERPROFILE%\Tools\radare2\ に解凍し、bin\ ディレクトリが PATH に含まれていることを確認してください。

タスク完了セルフチェック(完了を主張する前に MUST で通過)

  • ワークフローの各ステップを実行しましたか(単に読んだだけではありませんか)?
  • インポートテーブルチェックは実行され、Evidence(E-imports / E-triage-imports または .NET 同等)に書き込まれましたか?DLL/SYS は E-exports を含んでいますか?
  • IAT 修復失敗は E-iat-repair-fail に記録され、動的ステップに移行しましたか?再実行要求は同じステップに戻っていますか?
  • tool-index に基づいて実際のツールパスを使用しましたか?
  • 再現可能な証拠(コマンド/スクリプト/スクリーンショット/レポート)を生成しましたか?
  • RULES が要求する Checklist 項目を完了し、書き戻しましたか?

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

api-security

Use for authorized security assessment of REST, GraphQL, WebSocket, or SOAP APIs, including discovery, authentication, authorization, rate-limit, and CI/CD testing.

apk-reverse

在 CLI 环境下做 Android APK 逆向时使用。适用于 APK 解包、Java 反编译、smali 修改、重打包、Frida 动态 Hook,以及按需切换到 so/native 分析。优先使用本机已安装的 jadx、apktool、frida、adb、ida-reverse、radare2。

attack-chain

Use for authorized multi-stage attack-path planning and orchestration when a task spans reconnaissance, initial access, privilege escalation, lateral movement, or impact assessment. Route single-stage tasks directly to their specialist skill.

binary-diff

|

binary-ninja-reverse

Use for authorized binary analysis in Binary Ninja, including HLIL/MLIL/LLIL inspection, strings/imports/exports, cross-references, types, patch review, Python API automation, and optional Binary Ninja MCP or localhost HTTP integration.

browser-automation

|

browser-extension-reverse

Use for authorized reverse engineering of browser extensions (Chrome/Firefox) including manifest analysis, background workers, and extension-based credential or traffic logic recovery.

case-review

Reviews a reverse-skill case package for scope readiness, Evidence to Finding to Path traceability, work item coverage, timeline references, and optional artifact hash integrity before report handoff.

cloud-k8s

Use for authorized cloud, container, and Kubernetes security assessment including metadata SSRF, IAM misconfig, container escape paths, and cluster RBAC review.

code-audit

Use for authorized source-code security review and SAST workflows including Semgrep, CodeQL patterns, dangerous API hunting, and fix verification.

ctf-sandbox

Thin PRIMARY for CTF / AWD / 靶场 multi-type orchestration. Hands off to the sidecar CTF-Sandbox-Orchestrator. Use when the user says CTF, AWD, 靶场, or 比赛题 and no more specific pwn/APK/IDA route already won.

database-security

Use for authorized database security assessment covering PostgreSQL/MySQL/MSSQL/Mongo/Redis exposure, authz, UDF/command paths, and misconfiguration review.

diagram-generator

generate, refine, validate, and render diagrams from natural language, notes, code snippets, schemas, tables, or existing diagram source. use for flowcharts, swimlanes, sequence diagrams, state diagrams, er diagrams, class diagrams, architecture/c4-style diagrams, dependency graphs, gantt charts, mind maps, user journeys, sankey-style flows, org charts, network graphs, and other visual models. supports mermaid by default, graphviz dot for complex graph layout, plantuml for uml-heavy engineering diagrams, and svg output when direct markup is more reliable.

digital-forensics

Use for authorized digital forensics including memory dumps, disk timelines, PCAP investigation, artifact triage, and IR evidence preservation.

docs-generator

|

dotnet-reverse

.NET / C# 二进制逆向。当目标是 .NET assembly(PE 头含 CLR、.exe/.dll 托管程序)、C# 编译产物(含 NativeAOT)、红队 Sharp* 工具(Rubeus / SharpHound / SharpHound 等)、.NET 混淆程序(ConfuserEx / SmartAssembly / Babel / Eazfuscator)、.NET loader / info-stealer / 套壳 malware 时使用。优先用 dnSpyEx + de4dot,需要 AI 直接操作时联动 dnSpy MCP。不用于纯 native 二进制(走 reverse-engineering / ida-reverse)。

edr-bypass-re

|

email-security

Use for authorized email security review including phishing analysis, header authentication (SPF/DKIM/DMARC), BEC patterns, and mailbox token abuse research.

firmware-pentest

|

ghidra-reverse

Use for free/open reverse engineering with Ghidra (headless or GUI), including decompile, cross-refs, and optional Ghidra MCP workflows when IDA is unavailable.

関連スキル