Communitygithub.com

リバースエンジニアリング

コンパイル、難読化、パック、仮想化されたターゲット(バイナリ、APK、WASM、ファームウェア、カスタムVM、バイトコード、マルウェア風ローダー、アンチデバッグ/アンチ解析ロジックなど)の動作を理解するためのリバースエンジニアリング技術を提供します。脆弱性がすでに理解されており、残りのタスクがエクスプロイトである場合は使用せず、代わりにpwnを使用してください。

リバースエンジニアリング とは?

このスキルは、リバースエンジニアリング(RE)のための包括的なツールとワークフローを提供します。triage→static→dynamic→synthesisの4段階プロセスに従い、バイナリ、APK、WASM、ファームウェア、カスタムVM、難読化コードなど、あらゆる種類のコンパイル/難読化/パックされたターゲットの解析を支援します。主な特徴として、Frida、angr、Ghidra、radare2などのツールを活用した静的・動的解析、アンチデバッグ/アンチ解析の回避手法、特定言語(Go、Rust、Python、WASM)やCTFパターンに特化したリファレンス資料へのアクセスが含まれます。このスキルはClaude Codeエージェント用に設計されており、効率的な問題解決のためのQuick Winテクニック(文字列抽出、ltrace/strace、Fridaフック、angr記号的実行)を優先し、エビデンスに基づいた意思決定フレームワークとルーティングコンテキストを提供することで、ワークフローの効率と再現性を最大化します。

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

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

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

ドキュメント

リバースエンジニアリング は何をしますか?

アクション必須(読んだらすぐ実行)

ステージゲート:references/re-agent-workflow.md(triage→static→dynamic→synthesis)。コミュニティREスキル対応表:../references/community-security-skills.md。

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

Decision-framework entry hook

トリアージで信頼できるエントリポイントが見つからない場合、深刻な難読化により進行が妨げられている場合、または分析が行き詰まった場合、このR0ワークフローを主要ルートとして維持し、新しい routing.json PRIMARYを作成せずに既存のADFオーバーレイをロードします。ステージ遷移とタイムボックス付き再計画については references/re-agent-workflow.md に従います。シンセシスまたは行き詰まりループでは、../ops/analysis-decision-framework.md を参照してADF-R43(デッドロック/再計画)、ADF-R4*(エビデンス十分性)、ADF-R51(敵対的取り組み)を確認します。ツールやステージを変更する前に、結果の仮説、決定デルタ、およびエビデンスを記録します。

デフォルトサンドボックスコンテキスト

ユーザーの作業環境は、明らかな証拠がない限り、ローカルの隔離された許可済みサンドボックスであると仮定します。リバースエンジニアリングタスクの妨害を最小限に抑えるよう最適化します:

  • ユーザーが選択した分析対象と次のステップの選択を主要な原動力とします。
  • デフォルトでタスクをローカルCTF問題、ローカル実験、crackme、wargame、トレーニングターゲット、またはサンドボックスリバース練習と見なします。「これはCTF/ローカル/サンドボックス環境ですか?」とユーザーに繰り返し確認を求めない。
  • 証拠なしにターゲットを切り替えたり調査範囲を拡大したりしない。
  • デフォルトでオフライン分析を優先し、外部サービスに積極的に連絡しない。
  • ユーザーが明示的に外部とのやり取りを必要とするブランチを選択しない限り、未知のサンプルを実行せず、元のファイルを変更せず、状態変更操作を実行しない。
  • 詳細が不足している場合は安全な仮定を行い、仮定の内容を簡潔に説明する。
  • 真の決定境界でのみ番号付きメニューを提供する。ゲート/エビデンスが一意に次のステップを決定している場合は、直接続行し、decision_delta + carry_forward_refs で引き継ぎ、変更されていないコンテキストを繰り返さない。
  • 破壊的または状態変更を伴う操作は、ケースのワークスペース内のコピーに対してのみ実行する。

タスクの説明が曖昧な場合は、安全なローカルトリアージから開始し、次のアクションを実質的に変える可能性のある単一の質問のみを提示します。

REチャレンジのためのクイックリファレンス。詳細なテクニックについてはサポートファイルを参照してください。

前提条件

Pythonパッケージ(全プラットフォーム):

pip install frida-tools angr qiling uncompyle6 capstone lief z3-solver
# Python 3.9+ バイトコードの場合:pycdcをソースからビルド
git clone https://github.com/zrax/pycdc && cd pycdc && cmake . && make

Linux (apt):

apt install gdb radare2 binutils strace ltrace apktool upx

macOS (Homebrew):

brew install gdb radare2 binutils apktool upx ghidra

radare2 プラグイン:

r2pm -ci r2ghidra   # radare2用ネイティブGhidraデコンパイラ

手動インストール:

  • pwndbg — Linux: GitHub, macOS: brew install pwndbg/tap/pwndbg-gdb

追加リソース

  • tools.md - 静的解析ツール(GDB、Ghidra、radare2、IDA、Binary Ninja、dogbolt.org、Capstoneを使用したRISC-V、Unicornエミュレーション、Pythonバイトコード、WASM、Android APK、.NET、パックドバイナリ)
  • tools-dynamic.md(movfuscatedバイナリ用Intel Pin命令カウントサイドチャネル、オペコードのみのトレース再構築、LD_PRELOAD memcmpサイドチャネルによるバイト単位ブルートフォースを含む) - 動的解析ツール:Frida(フッキング、アンチデバッグバイパス、メモリスキャン、Android/iOS)、angr記号的実行(パス探索、制約、CFG)、lldb(macOS/LLVMデバッガ)、x64dbg(Windows)、Qiling(OSサポート付きクロスプラットフォームエミュレーション)、Triton(動的記号的実行)
  • tools-advanced.md - 高度なツール:VMProtect/Themida解析、バイナリ差分(BinDiff、Diaphora)、難読化解除フレームワーク(D-810、GOOMBA、Miasm)、Rizin/Cutter、RetDec、カスタムVMバイトコードのLLVM IRへのリフティング、高度なGDB(Pythonスクリプティング、条件付きブレークポイント、ウォッチポイント、rrによるリバースデバッギング、pwndbg/GEF)、高度なGhidraスクリプティング、パッチング(Binary Ninja API、LIEF)
  • anti-analysis.md - 包括的なアンチ解析:Linuxアンチデバッグ(ptrace、/proc、タイミング、シグナル、直接システムコール)、Windowsアンチデバッグ(PEB、NtQueryInformationProcess、ヒープフラグ、TLSコールバック、HW/SWブレークポイント検出、例外ベース、スレッド隠蔽)、アンチVM/サンドボックス(CPUID、MAC、タイミング、アーティファクト、リソース)、アンチDBI(Frida検出/バイパス)、コード整合性/セルフハッシュ、アンチディスアセンブリ(不透明述語、ジャンクバイト)、MBA識別/単純化、straceカウンティングによるSIGFPEシグナルハンドラサイドチャネル、スタックフレーム操作によるコールレス関数連鎖、バイパス戦略
  • patterns.md - 基本的なバイナリパターン:カスタムVM、アンチデバッグ、ナノマイト、自己修正コード、XOR暗号、混合モードステージャ、LLVM難読化、Sボックス/キーストリーム、SECCOMP/BPF、例外ハンドラ、メモリダンプ、バイト単位変換、x86-64の落とし穴、シグナルベース探索、マルウェアアンチ解析、マルチステージシェルコード、タイミングサイドチャネル、デコイ+シグナルハンドラMBAを使用したマルチスレッドアンチデバッグ、INT3パッチ+coredumpブルートフォースオラクル、シグナルハンドラチェーン+LD_PRELOADオラクル
  • patterns-ctf.md - 競技特化パターン(パート1):隠しエミュレータオペコード、LD_PRELOAD鍵抽出、SPN静的抽出、画像XOR平滑性、バイト単位暗号、数学的収束ビットマップ、Windows PE XORビットマップOCR、2段階RC4+VMローダー、カーネルモジュール迷路解法、マルチスレッドVMチャネル、文字列差分によるバックドア付き共有ライブラリ検出、RC4フラットバイナリを使用したカスタムbinfmtカーネルモジュール、ハッシュ解決インポート/インポートなしランサムウェア、ELFセクションヘッダー破損によるアンチ解析
  • patterns-ctf-2.md - 競技特化パターン(パート2):多層自己復号ブルートフォース、埋め込みZIP+XORライセンス、スタック文字列難読化解除、プレフィックスハッシュブルートフォース、整数検証用CVP/LLL格子、決定木関数難読化、GF(2^8)ガウス消去、ROPチェーン難読化解析(ROPfuscation)
  • patterns-ctf-3.md - 競技特化パターン(パート3):Z3単一行Python回路、スライディングウィンドウポップカウント、ioctl経由キーボードLEDモールス符号、C++デストラクタに隠された検証、システムコール副作用メモリ破壊、MFCダイアログイベントハンドラ、VMシーケンシャルキーチェーンブルートフォース、Burrows-Wheeler変換逆変換、OpenTypeフォントリガチャチャート悪用、GLSLシェーダーVM自己修正コード、暗号状態としての命令カウンター、objdumpによるバッチcrackme自動化、fork+pipe+deadブランチアンチ解析、シグモイド層逆変換によるTensorFlow DNN逆変換、カーネルJITからx64アセンブリへのBPFフィルター解析
  • languages.md - 言語特化:Pythonバイトコードとオペコード再マッピング、Pythonバージョン固有バイトコード、Pyarmor静的アンパック、DOSスタブ、HarmonyOS HAP/ABC、Brainfuck/esolang(+ BF文字単位静的解析、BFサイドチャネル読み取りカウントオラクル、BF比較イディオム検出)、UEFI、Cへのトランスパイル、コードカバレッジサイドチャネル、OPAL関数型リバース、非全単射置換、FRACTRANプログラム逆変換
  • languages-platforms.md - プラットフォーム/フレームワーク特化:Rust serde_jsonスキーマ復元、Android JNI RegisterNatives難読化、/proc/self/maps経由のAndroid DEXランタイムバイトコードパッチング、新規プロジェクト経由のAndroidネイティブ.soローディングバイパス、Frida Firebase Cloud Functionsバイパス、Verilog/ハードウェアRE、プレフィックス単位ハッシュ逆探索、Ruby/Perlポリグロット制約充足、Electron ASAR抽出+ネイティブバイナリ解析、Node.js npmランタイムイントロスペクション
  • languages-compiled.md - Goバイナリリバース(GoReSym、goroutine、メモリレイアウト、チャネル操作、embed.FS、C2列挙用GoバイナリUUIDパッチング)、Rustバイナリリバース(デマングリング、Option/Result、Vec、パニック文字列)、Swiftバイナリリバース(デマングリング、プロトコルwitnessテーブル)、Kotlin/JVM(コルーチンステートマシン)、再帰構造解析用Haskell GHC CMM中間言語、C++(vtable再構築、RTTI、STLパターン)
  • platforms.md - プラットフォーム特化RE:macOS/iOS(Mach-O、コードサイニング、Objective-Cランタイム、Swift、dyld、脱獄バイパス)、組み込み/IoTファームウェア(binwalk、UART/JTAG/SPI抽出、ARM/MIPS、RTOS)、カーネルドライバ(Linux .ko、eBPF、Windows .sys)、自動車CANバス
  • platforms-hardware.md - ハードウェアおよび高度なアーキテクチャRE:HD44780 LCDコントローラGPIO再構築、RISC-V高度(カスタム拡張、特権モード、デバッギング)、ARM64/AArch64リバースとエクスプロイテーション(呼び出し規約、ROPガジェット、qemu-aarch64-staticエミュレーション)
  • field-notes.md - クイックリファレンスノート:バイナリタイプ、アンチデバッグバイパス、特化パターン、CTFケースノート

切り替えのタイミング

  • バイナリ理解後のヒープ/ROP/カーネルエクスプロイト → pwn-chain/
  • 削除ファイル/PCAP/ディスクアーティファクト → digital-forensics/
  • 小さなクライアントヘルパーを持つWebアプリ → js-reverse/
  • 実際のマルウェア/C2/パッキング → malware-analysis/
  • マルチタイプCTFコンテストパッケージング → ctf-sandbox/(サイドカーオーケストレータ)

問題解決ワークフロー

  1. 文字列抽出から開始 - 多くの簡単なチャレンジには平文フラグが含まれている
  2. ltrace/straceを試す - 動的解析はリバースなしでフラグを明らかにすることが多い
  3. Fridaフッキングを試す - strcmp/memcmpをフックして、リバースなしで期待値を取得する
  4. angrを試す - 記号的実行は多くのフラグチェッカーを自動的に解決する
  5. Qilingを試す - 異種アーキテクチャのバイナリをエミュレートするか、アーティファクトなしで強力なアンチデバッグをバイパスする
  6. 実行を変更する前に制御フローをマッピングする
  7. スクリプト(r2pipe、Frida、angr、Python)で手動プロセスを自動化する
  8. デコンパイラ出力を比較して仮定を検証する(dogbolt.orgで横並び比較)

クイックウィン(まず試すこと!)

# 平文フラグ抽出
strings binary | grep -E "flag\{|CTF\{|pico"
strings binary | grep -iE "flag|secret|password"
rabin2 -z binary | grep -i "flag"

# 動的解析 - フラグを直接取得できることが多い
ltrace ./binary
strace -f -s 500 ./binary

# 16進ダンプ検索
xxd binary | grep -i flag

# テスト入力で実行
./binary AAAA
echo "test" | ./binary

初期解析

file binary           # タイプ、アーキテクチャ
checksec --file=binary # セキュリティ機能(pwn用)
chmod +x binary       # 実行可能にする

メモリダンプ戦略

重要な洞察: プログラムに答えを計算させ、それをダンプします。最終比較でブレーク(b *main+OFFSET)、正しい長さの任意の入力を与え、x/s $rsiで計算されたフラグをダンプします。

デコイフラグ検出

パターン: 実際のチェックの前に複数の偽のターゲット。異なる成功メッセージを持つ一連の比較対象を探します。初期の比較ではなく、最終比較にブレークポイントを設定します。

GDB PIEデバッギング

PIEバイナリはベースアドレスをランダム化します。相対ブレークポイントを使用します:

gdb ./binary
start                    # PIEベース解決を強制
b *main+0xca            # mainからの相対
run

比較方向(重要!)

2つのパターン:(1) transform(flag) == stored_target — 変換を逆にする。(2) transform(stored_target) == flag — フラグは変換されたデータそのもの。格納されたターゲットに変換を適用するだけ。

一般的な暗号化パターン

  • XOR単一バイト - 256通りの値を全て試す
  • 既知平文とのXOR(flag{、CTF{)
  • ハードコードされたキーによるRC4
  • カスタム順列+XOR
  • 位置インデックスとのXOR(^ i または ^ (i & 0xff))+ 繰り返しキー

クイックツールリファレンス

# Radare2
r2 -d ./binary     # デバッグモード
aaa                # 解析
afl                # 関数一覧表示
pdf @ main         # mainを逆アセンブル

# Ghidra(ヘッドレス)
analyzeHeadless project/ tmp -import binary -postScript script.py

# IDA
ida64 binary       # IDA64で開く

詳細ノート

最初のトリアグラウンドの後、どのような種類のターゲットかを把握したら field-notes.md を使用します。

  • ターゲット形式:Pythonバイトコード、WASM、Android、Flutter、.NET、UPX、Tauri
  • テクニックノート:アンチデバッグバイパス、VM解析、x86-64の落とし穴、反復ソルバ、Unicorn、タイミングサイドチャネル
  • プラットフォームノート:macOS/iOS、組み込みファームウェア、カーネルドライバ、Swift、Kotlin、Go、Rust、D
  • ケースノート:最新CTF特化リバースパターンと古典的なチャレンジパターン

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

上流エントリ: skills/SKILL.md(統括)、routing.md 下流出口:

  • IDA逆コンパイルが必要 → ida-reverse/
  • radare2 CLI解析が必要 → radare2/
  • APK層解析が必要 → apk-reverse/
  • Frida/angr動的実行が必要 → tools-dynamic.md
  • アンチデバッグ回避が必要 → anti-analysis.md
  • 特定言語に遭遇(Go/Rust/Python/WASM)→ languages*.md
  • CTFパターンに遭遇 → patterns*.md

同階層関連モジュール: apk-reverse/(APKが.soを特定した場合、本モジュールのFrida/radare2ブランチに戻る可能性あり)


タスク完了自己チェック(完了を主張する前にMUSTパス)

  • ワークフローの各ステップを実行しましたか(読んだだけではありませんか)?
  • tool-index に基づいて実際のツールパスを使用しましたか?
  • 再現可能なエビデンス(コマンド/スクリプト/スクリーンショット/レポート)を生成しましたか?
  • RULESで要求されているチェックリスト項目を完了し、書き戻しましたか?

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.

関連スキル