mcpField
R
reverse-engineering

reverse-engineering

github.com/r00tedbrain-backupセキュリティ294 回インストール27 週間前に更新
リポジトリ

reverse-engineering について

セキュリティ分野のリバースエンジニアリングとデバッグ向けスキルです。静的・動的解析や脆弱性調査を扱い、タスク別の資料と IDA エクスポート、Android DEX ダンプ用ツールを備えています。

主な機能

  1. 01形式・タスク別の解析ガイド
  2. 02静的・動的解析の手順
  3. 03脆弱性調査の方法論
  4. 04IDA エクスポートプラグイン
  5. 05Android DEX ダンプスクリプト

活用シーン

  1. 01未知のバイナリの初期調査
  2. 02モバイルアプリやマルウェアの解析
  3. 03クラッシュのデバッグと脆弱性調査
  4. 04Ghidra または IDA の解析スクリプト作成

MCP 対応

ida-pro-mcp、GhidraMCP、r2mcp などの上流 MCP サーバーへの接続設定と、ライブクエリの手順を記載しています。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/r00tedbrain-backup/skills --skill reverse-engineering

インストール後、Claude Code で/reverse-engineeringを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
android-re.md
anticheat-re.md
dynamic-debugging.md
exploit-dev.md
firmware-embedded.md
frida.md
ghidra-scripting.md
idapython.md
ios-re.md
macos-kernel-re.md
malware-analysis.md
managed-code-re.md
protocol-re.md
static-analysis.md
struct-recovery.md
symbol-recovery.md
unicorn-emulation.md
windows-re.md
tools/
dex_memory_dumper.js
ida_export_plugin.py
README.md
tools/mcp/
claude-config-snippets.json
cline-config-snippets.json
continue-config-snippets.json
cursor-config-snippets.json
ghidra-mcp.md
ida-pro-mcp.md
opencode-config-snippets.json
README.md
windsurf-config-snippets.json

詳細

リバースエンジニアリングとデバッグ

静的解析、動的解析、デバッグ、バイナリ悪用のための専門的な手法です。

クイックリファレンス — 適切なリファレンスファイルを読み込む

タスクリファレンスファイル
静的解析、逆アセンブル、Ghidra、radare2、objdump、パッチ適用references/static-analysis.md
GDB(+pwndbg/gef/peda)、LLDB、strace/ltrace、クラッシュ解析references/dynamic-debugging.md
Android APK、DEX、smali、ADB、Android での Frida、再パッケージ化references/android-re.md
iOS IPA、Mach-O、class-dump、Frida ObjC/Swift、Keychainreferences/ios-re.md
macOS XPC、launchd、kext、SIP、Linux カーネルモジュールreferences/macos-kernel-re.md
Windows PE、WinDbg、x64dbg、.NET/dnSpy、カーネルドライバーreferences/windows-re.md
Frida スクリプト、Java/Native/ObjC のフック、SSL ピンニング解除、ガジェットreferences/frida.md
.NET IL、dnSpy、de4dot、Java/JVM、Kotlin、Unity/IL2CPP、Monoreferences/managed-code-re.md
マルウェア、難読化、パッカー解析、IOC 抽出、Volatilityreferences/malware-analysis.md
CTF pwn/rev、BOF、ROP、ヒープ悪用、pwntools、angr/Z3references/exploit-dev.md
ネットワークプロトコルのリバースエンジニアリング、Wireshark、mitmproxy、Protobuf、gRPC、Lua ディセクター、Boofuzzreferences/protocol-re.md
ファームウェア、binwalk、QEMU エミュレーション、JTAG/UART、U-Boot、IoTreferences/firmware-embedded.md
EAC、BattlEye、Vanguard、FACEIT、VAC、カーネル AC 解析references/anticheat-re.md
Ghidra Python/Java スクリプト、ヘッドレス、脆弱性の発見、カスタムアナライザーreferences/ghidra-scripting.md
IDAPython / IDALib スクリプト、Hex-Rays API、一括デコンパイル、OLLVM ヘルパーreferences/idapython.md
Unicorn エンジンのエミュレーション、関数レベルのエミュレーション、JNI スタブ化、システムコールのシミュレーションreferences/unicorn-emulation.md
削除されたシンボルの復元、マジックナンバー、ペアになった呼び出し、xref 解析references/symbol-recovery.md
C/C++ 構造体の復元、vtable、std::string/vector/map、フィールド型の推定references/struct-recovery.md

同梱ツール(tools/)

このスキルには、すぐに使える補助ユーティリティが付属しています(すべて独自開発、MIT ライセンス)。

ツール用途
tools/ida_export_plugin.pyIDA Pro プラグイン(Ctrl-Shift-E)— IDB を decompile/ ディレクトリにプレーンテキストファイルとしてエクスポートします。エージェントが直接読み取れます
tools/dex_memory_dumper.jsFrida エージェント — メモリスキャンと ClassLoader の走査により、実行中の Android プロセスから DEX をダンプします
tools/mcp/エージェントを上流の MCP サーバー(ida-pro-mcp、GhidraMCP、r2mcp)に接続するためのセットアップ手順と設定スニペット

使い方の詳細は tools/README.md を参照してください。tools/mcp/ ディレクトリでは、(ファイルのエクスポートに代わる)ライブクエリのワークフローについて説明しています。上記の方法ファイルでは、どちらのモードにも対応しています。


あらゆるケースに共通する最初の手順

リファレンスファイルを読み込む前に、コンテキストを確認します。

1. 対象を特定する
file <binary>           # file type, arch, bits, stripped?
xxd <binary> | head -4  # magic bytes
strings -a <binary> | head -60
checksec --file=<binary>  # NX, PIE, RELRO, stack canary, ASLR

バイナリ形式の判断ツリー:

  • ELF → Linux ネイティブ → references/static-analysis.md + references/dynamic-debugging.md
  • PE/PE32+ → Windows ネイティブ → references/windows-re.md + references/static-analysis.md
  • .NET メタデータを含む PE → references/managed-code-re.md(最初に dnSpy)
  • Mach-O → macOS/iOS → references/macos-kernel-re.md + references/ios-re.md
  • DEX/APK/AAB → Android → references/android-re.md
  • JAR/WAR/AAR → Java → references/managed-code-re.md
  • .sys ドライバー → references/windows-re.md(カーネルセクション)または references/anticheat-re.md
  • Assembly-CSharp.dll → Unity → references/managed-code-re.md(Unity セクション)
  • 不明/ファームウェア → references/firmware-embedded.md(binwalk + エントロピー)

タスク種別の判断ツリー(すべての形式に適用):

  • シンボルが除去されたバイナリで、関数が不明 → references/symbol-recovery.md
  • デコンパイル時に構造体のレイアウトが不明 → references/struct-recovery.md
  • 1 つの関数だけを単独で実行する必要がある → references/unicorn-emulation.md
  • 分析に IDA Pro を使用する → references/idapython.md
  • 分析に Ghidra を使用する → references/ghidra-scripting.md
2. 範囲を定める

ユーザーに尋ねる(または文脈から推測する)項目:

  • 目標:ロジックの理解/脆弱性の発見/保護の回避/パッチ適用/CTF フラグ/マルウェアの IOC?
  • プラットフォーム:Linux/Windows/macOS/Android/iOS/組み込み?
  • 利用可能なツール:Ghidra/IDA/radare2/Binary Ninja/Hopper?
  • 動的分析は可能か?:実行できるか? VM はあるか? エミュレーターはあるか? 実機はあるか?
3. 分析モードを選択する
Static only  → No execution risk, slower understanding
Dynamic only → Fast but misses dead code
Static + Dynamic (recommended) → Static for map, dynamic for runtime truth

コアツールチェーンの概要

静的分析
ツール最適な用途
Ghidra完全なデコンパイル、スクリプト作成、無料
radare2 / cutter強力な CLI、スクリプト作成、組み込み
Binary NinjaAPI ファースト、高速、商用
IDA Pro / IDA Free業界標準、優れたシグネチャ
objdump手軽な逆アセンブル、インストール不要
readelf / nmELF のシンボル/セクションの検査
jadxAndroid DEX → Java、GUI
apktoolAPK の展開/再パッケージ/smali
動的分析
ツール最適な用途
GDB + pwndbg/peda/gefLinux ELF のデバッグ
LLDBmacOS/iOS/Swift のデバッグ
Fridaクロスプラットフォームのフック、ソース不要
strace / ltraceシステムコール/ライブラリ呼び出しのトレース
Valgrindメモリーエラー、Helgrind
WinDbgWindows カーネル+ユーザーモード
x64dbgWindows GUI デバッガー
ネットワーク
ツール最適な用途
Wireshark / tsharkパケットキャプチャ+解析
mitmproxy / Burp SuiteHTTP/S MITM
Fridaプロセス内での SSL ピンニング解除
tcpdumpヘッドレスキャプチャ

方法論フレームワーク

静的分析のワークフロー
1. file + strings + checksec           → quick triage
2. Entropy analysis                    → packed/encrypted?
3. Import table / symbol table         → understand capabilities
4. Load in decompiler                  → rename, retype, annotate
5. Identify key functions              → main(), crypto, network, anti-debug
6. Trace data flow                     → user input → sink
7. Document findings                   → comment inline
動的分析のワークフロー
1. Set up isolated environment         → VM / container / device
2. Run with strace/ltrace first        → understand syscall footprint
3. Attach debugger                     → set breakpoints at key functions
4. Observe runtime behavior            → memory, registers, branches taken
5. Correlate with static              → validate decompiler output
6. Patch / hook as needed             → bypass checks, log values
脆弱性発見のワークフロー
1. Attack surface mapping             → inputs: file, network, env vars, args
2. Dangerous function search          → strcpy, gets, sprintf, memcpy, system
3. Integer overflow candidates        → size calculations, loops
4. Format string candidates           → printf(user_input)
5. UAF / double-free candidates       → heap allocation patterns
6. Trigger + confirm                  → crash → controlled → exploitable

解析妨害の回避 — クイックリファレンス

アンチデバッグ検出
# Check if binary detects debugger
strings <bin> | grep -iE "ptrace|debugger|isDebuggerPresent|TracerPid"

# Linux: ptrace self-detection
# Bypass: preload hook or patch the ptrace call
一般的な保護機能
保護機能検出方法回避方法
ptrace アンチデバッグstrace に ptrace(TRACEME) が表示されるJNZ→JMP にパッチするか、LD_PRELOAD で偽の ptrace を使う
タイミングチェックループ内の rdtsc / clock_gettime比較処理にパッチするか NOP に置き換える
チェックサム/整合性チェック独自の .text セクションのハッシュ復号後、チェック前にパッチする
パッカー(UPX など)高エントロピー+少数のインポートupx -d を実行するか、展開後にメモリーからダンプする
文字列の難読化読み取れる文字列がない実行してメモリーから抽出する/Frida フックを使う
SSL ピンニング(モバイル)アプリ内でネットワークエラーが発生するFrida で SSL ピンニングを解除する/references/frida.md を参照

出力基準

リバースエンジニアリングの調査結果を報告する際は、必ず次の形式で出力します:

## Binary: <name>
- **Format**: ELF64 / PE32+ / DEX / Mach-O
- **Arch**: x86_64 / ARM64 / ARMv7 / MIPS
- **Stripped**: Yes/No | **PIE**: Yes/No | **NX**: Yes/No

## Key Findings
1. <function name @ offset> — <what it does>
2. ...

## Vulnerability / Behavior
- <description with evidence>
- Offset: 0x<addr>
- Triggerable via: <input vector>

## Recommended Next Steps
- [ ] <action>

デコンパイラー作業の命名規則

Ghidra/IDA/r2 で注釈を付ける際は、次の基準に従います:

Functions:  verb_noun_context      → decrypt_config_xor, check_license_hwid
Variables:  type_purpose           → buf_user_input, sz_packet, ptr_heap_chunk
Structs:    ST_<name>              → ST_PacketHeader, ST_LicenseData
Labels:     loc_<purpose>         → loc_anti_debug_fail, loc_success

スクリプトのクイックスタート

Frida のパターン全般については references/frida.md を参照してください。

GDB Python ワンライナー(関数の引数を記録)
# In GDB: source this file
import gdb
class LogArgs(gdb.Breakpoint):
    def stop(self):
        frame = gdb.selected_frame()
        print(f"[*] {frame.name()} rdi={gdb.parse_and_eval('$rdi')} rsi={gdb.parse_and_eval('$rsi')}")
        return False  # don't stop, just log
LogArgs("target_function")
radare2 の一括分析
r2 -A -q -c "afl~suspicious; pdf @ sym.check_license" <binary>
Ghidra のヘッドレス分析
$GHIDRA_HOME/support/analyzeHeadless /tmp/proj MyProject \
  -import <binary> -postScript PrintAST.java -scriptPath ~/ghidra_scripts

コメント