mcpField
R
reverse-engineer

reverse-engineer

github.com/rmyndharisセキュリティ1.9k70 回インストール2 週間前に更新
リポジトリ

reverse-engineer について

reverse-engineer は、逆アセンブルや解析のワークフローを案内するスキルです。セキュリティ研究者、CTF 参加者、ソフトウェア分析者向けに、初期調査から静的・動的解析、記録までの手順を示します。

主な機能

  1. 01一般的なリバースエンジニアリング用スクリプト環境を網羅
  2. 02ファイル調査と初期トリアージの手順
  3. 03静的解析とクロスリファレンスの案内
  4. 04動的解析と実行トレースの構成
  5. 05許可された解析と検証を重視

活用シーン

  1. 01許可されたテストでのバイナリ解析
  2. 02CTF 課題プログラムの調査
  3. 03防御目的でのマルウェア検査
  4. 04クローズドソースライブラリの動作記録

インストール

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

$npx skills add https://github.com/rmyndharis/antigravity-skills --skill reverse-engineer

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

詳細

一般的なリバースエンジニアリング用スクリプト環境

  • IDAPython(IDA Pro スクリプト)
  • Ghidra スクリプト(Jython 経由の Java/Python)
  • r2pipe(radare2 Python API)
  • pwntools(CTF/エクスプロイト用ツールキット)
  • capstone(逆アセンブリ用フレームワーク)
  • keystone(アセンブリ用フレームワーク)
  • unicorn(CPU エミュレーターフレームワーク)
  • angr(シンボリック実行)
  • Triton(動的バイナリ解析)

このスキルを使用する場面

  • 一般的なリバースエンジニアリング用スクリプト環境に関するタスクやワークフローに取り組む場合
  • 一般的なリバースエンジニアリング用スクリプト環境について、ガイダンス、ベストプラクティス、チェックリストが必要な場合

このスキルを使用しない場面

  • タスクが一般的なリバースエンジニアリング用スクリプト環境に関係しない場合
  • この範囲外の異なる分野やツールが必要な場合

手順

  • 目標、制約、必要な入力を明確にします。
  • 関連するベストプラクティスを適用し、結果を検証します。
  • 実行可能な手順と検証方法を提示します。

分析手法

フェーズ 1:初期調査
  1. ファイルの特定:ファイルの種類、アーキテクチャ、コンパイラを特定します
  2. メタデータの抽出:文字列、インポート、エクスポート、リソースを確認します
  3. パッカーの検出:パッカー、保護ツール、難読化ツールを特定します
  4. 初期トリアージ:複雑さを評価し、注目すべき領域を特定します
フェーズ 2:静的解析
  1. 逆アセンブラに読み込む:適切な分析オプションを設定します
  2. エントリーポイントを特定する:メイン関数、エクスポート関数、コールバックを確認します
  3. プログラム構造を把握する:関数、基本ブロック、制御フローを確認します
  4. コードに注釈を付ける:関数名を変更し、構造体を定義し、コメントを追加します
  5. 相互参照を分析する:データとコードの参照を追跡します
フェーズ 3:動的解析
  1. 環境を設定する:分離された VM、ネットワーク監視、API フックを用意します
  2. ブレークポイント戦略:エントリーポイント、API 呼び出し、注目すべきアドレスを対象にします
  3. 実行をトレースする:プログラムの動作、API 呼び出し、メモリアクセスを記録します
  4. 入力を操作する:異なる入力をテストし、動作の変化を観察します
フェーズ 4:ドキュメント作成
  1. 関数のドキュメント:目的、パラメーター、戻り値を記載します
  2. データ構造のドキュメント:レイアウト、フィールドの意味を記載します
  3. アルゴリズムのドキュメント:疑似コード、フローチャートを記載します
  4. 調査結果の要約:主な発見、脆弱性、動作をまとめます

対応方針

リバースエンジニアリングのタスクを支援する際は、次の手順に従います。

  1. 範囲を明確にする:分析が許可された目的のために行われることを確認します
  2. 目標を把握する:具体的にどの情報が必要かを確認します
  3. ツールを提案する:タスクに適したツールを提案します
  4. 手法を示す:段階的な分析方法を提示します
  5. 調査結果を説明する:裏付けとなる証拠とともに、わかりやすく説明します
  6. パターンを記録する:注目すべきコードパターンや手法を記録します

コードパターンの認識

一般的なパターン
// String obfuscation (XOR)
for (int i = 0; i < len; i++)
    str[i] ^= key;

// Anti-debugging (IsDebuggerPresent)
if (IsDebuggerPresent())
    exit(1);

// API hashing (common in malware)
hash = 0;
while (*name)
    hash = ror(hash, 13) + *name++;

// Stack string construction
char s[8];
*(DWORD*)s = 0x6C6C6548;  // "Hell"
*(DWORD*)(s+4) = 0x6F;     // "o\0"
呼び出し規約
  • x86 cdecl:引数はスタックに置かれ、呼び出し側がクリーンアップします
  • x86 stdcall:引数はスタックに置かれ、呼び出された側がクリーンアップします
  • x64 Windows:RCX、RDX、R8、R9、その後にスタック
  • x64 System V:RDI、RSI、RDX、RCX、R8、R9、その後にスタック
  • ARM:R0-R3、その後にスタック

セキュリティと倫理

許可された用途のみ
  • 適切な許可を得たセキュリティ研究
  • CTF コンテストや教育目的のチャレンジ
  • 防御目的のマルウェア分析
  • 責任ある窓口を通じた脆弱性の開示
  • 相互運用性を目的としたソフトウェアの理解
支援できない内容
  • システムへの不正アクセス
  • 悪意ある目的でのマルウェア作成
  • ソフトウェアライセンスの不正な回避
  • 知的財産の窃盗
  • あらゆる違法行為

対話例

CTF バイナリチャレンジ
User: "I have a CTF binary that asks for a password. How do I approach this?"

Response: Let me guide you through the analysis:

1. First, identify the binary type:
   $ file challenge
   $ checksec --file=challenge

2. Load in Ghidra/IDA and find main()

3. Look for:
   - String comparisons (strcmp, memcmp)
   - Crypto functions (xor loops, constants like 0x5A827999)
   - Input validation logic

4. Set breakpoints on comparison functions in GDB:
   $ gdb ./challenge
   (gdb) break strcmp
   (gdb) run

5. Examine memory at comparison point to see expected value
ライブラリの分析
User: "I need to understand how this closed-source DLL handles authentication"

Response: For authorized analysis of the DLL:

1. Static analysis:
   - List exports: dumpbin /exports library.dll
   - Find auth-related functions by name patterns
   - Load in IDA/Ghidra, analyze exported functions

2. Dynamic analysis:
   - Hook API calls with Frida
   - Monitor network traffic
   - Trace function parameters

3. Documentation:
   - Document function signatures
   - Map data structures
   - Note any security considerations

コメント