mcpField
D
deobf-all

deobf-all

github.com/zeij-driveセキュリティ1343 回インストール10 週間前に更新
リポジトリ

deobf-all について

リバースエンジニアリングやマルウェア分析向けの難読化解除スキル集です。対象と保護方式を先に分類し、全項目を読み込まずに関連するサブスキルへ振り分けます。

主な機能

  1. 01対象形式と難読化方式の判定
  2. 02必要なサブスキルのみ段階的に読み込み
  3. 03ネイティブバイナリと JavaScript の分析
  4. 04Android、Java、PowerShell の手順
  5. 05静的解析を優先し結果を検証

活用シーン

  1. 01保護されたネイティブプログラムの分析
  2. 02難読化 JavaScript や悪意あるスクリプトの解析
  3. 03Android APK の分析手順の選択

インストール

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

$npx skills add https://github.com/zeij-drive/deobf --skill deobf-all

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

詳細

Deobf-All — 統合型難読化解除ディスパッチャー

あらゆる難読化または保護されたコードに遭遇した場合、このスキルはまず対象をトリアージし、その後、関連するサブスキルのみを読み込みます。26 個すべてを一度に読み込むことはありません。これにより、ツール呼び出しとコンテキストの使用量を最小限に抑えます。

0. 実行契約(最初に読む)

DO NOT read_skill all 26 sub-skills blindly.
Instead: triage → load P0 → route → load P1/P2 only if needed.
フェーズアクションツール呼び出し
トリアージ対象ファイルを調査し、種類を特定します0–1(read_file / file コマンド)
P0 の読み込みコアスキル 1~2 個に対して read_skill を実行します1–2
ルーティングP1/P2 が必要かどうかを判断します0
P1/P2 の読み込みルートで必要とされるスキルに対してのみ read_skill を実行します0–3

目標:対象が本当に不明な場合を除き、1 回の呼び出しで read_skill を 5 回以上実行しないでください。

1. サブスキル一覧

#スキル目的レイヤー
1code-obfuscation-deobfuscationネイティブバイナリの難読化解除:CFF、オペーク述語、文字列暗号化、インポートの隠蔽、逆アセンブル対策P0
2ast-deobfuscationJavaScript AST の難読化解除:パターン検出、パイプライン、サイト固有アダプターP0(JS のみ)
3vm-and-bytecode-reverseVM プロテクター(VMProtect/Themida)、カスタム VM ディスパッチャー、オペコードの対応付けP1
4anti-debugging-techniquesデバッグ対策の検出と回避(ptrace、PEB、タイミング、TLS、VEH)P1
5symbolic-execution-toolsangr/Z3/Triton:自動制約解決、エミュレーションによるアンパックP1
6binary-protection-bypassASLR/NX/PIE/Canary/RELRO の回避P2
7ctf-reverseCTF のリバースエンジニアリング手法P2
8anti-reversing-techniquesリバースエンジニアリング対策の特定と回避P2
9deep-analysis詳細なリバースエンジニアリングのトリアージ(包括的な分析)P2
10java-decompileJava バイトコードの逆コンパイル:CFR/Procyon/FernflowerP2
11jadxAndroid APK の逆コンパイル:DEX → Java ソースP2
12apktoolAPK の展開、smali の逆アセンブル、リソースの抽出P3
13reverse-engineering-android-malware-with-jadxJADX を使用した Android マルウェアのリバースエンジニアリングのワークフローP3
14firebase-apk-scannerFirebase APK の設定セキュリティスキャンP3
15deobf-stringパターン分析と自動復号による難読化文字列の復号・復元P3
16deobf-indirectシンボリック実行と BFS による間接分岐(CSEL+BR)の難読化解除P3
17llvm-obfuscationLLVM ベースの難読化:OLLVM、CFF、文字列暗号化、偽の制御フローP3
18binary-lifting分析、逆コンパイル、再コンパイルのためのマシンコード → LLVM IR リフティングP3
19deobfuscating-javascript-malwareJS マルウェアの難読化解除:ウェブ攻撃、フィッシングページ、ドロッパースクリプトP3
20deobfuscating-powershell-obfuscated-malwareAST と動的解析による多層 PowerShell 難読化解除P3
21binary-analysis-patternsバイナリ分析:逆アセンブル、逆コンパイル、CFG 分析、コードのパッチ適用P3
22yara-rule-authoringマルウェアの分類と脅威ハンティングのための YARA ルール作成P3
23ghidra-headlessGhidra ヘッドレスアナライザー:自動逆コンパイル、スクリプト分析P3
24frida-17Frida 17 の JS API 互換性:フック、トレース、動的インストルメンテーションP3
25reverse-engineering-malware-with-ghidraGhidra を使用したマルウェアのリバースエンジニアリングのワークフロー:インポート、文字列、復号、アンパックP3
26radare2radare2 によるリバースエンジニアリング:逆アセンブル、デバッグ、スクリプト作成P3

2. トリアージ — まず最初に行うこと(read_skill の前)

対象を調査し、次の項目を特定します。

  1. 対象の種類:ネイティブバイナリ(ELF/PE/Mach-O)/JavaScript/バイトコード(DotNet/Java/Python)/Android APK/その他
  2. 難読化の種類(特定できる場合):CFF、VM 保護、文字列暗号化、パッキング、JS 難読化(obfuscator.io、JSFuck など)
  3. アンチデバッグ/アンチリバースのレイヤーの有無
  4. コンテキスト:CTF チャレンジ? 本番環境の解析? 手早いクリーンアップ?

出力:次のようなトリアージ行を出力します。TRIAGE: native PE, VMProtect, has anti-debug → P0:code-obfuscation-deobfuscation P1:vm-and-bytecode-reverse,anti-debugging-techniques

3. ルーティングマトリクス — 必要なものだけを読み込む

トリアージに基づき、✓ が付いたスキルについてのみ read_skill を実行します。

3a. コアルーティング — P0 / P1 / P2
対象P0 core-deobfP0 ast-deobfP1 vm-reverseP1 anti-debugP1 symbolicP2 bin-bypassP2 ctf-revP2 anti-revP2 deepP2 java-decompileP2 jadx
ネイティブバイナリ、一般✓
ネイティブ + VM 保護✓✓
ネイティブ + VM + アンチデバッグ✓✓✓
ネイティブ + CFF(OLLVM)✓✓
ネイティブ + パッキング + アンチリバース✓✓✓
JavaScript(すべて)✓
JavaScript + 強力な難読化✓✓
JavaScript マルウェア/フィッシング✓✓
DotNet/Java/Python バイトコード✓✓✓
Java バイトコード(JAR/class)✓
Android APK✓
Android マルウェア解析✓✓
PowerShell 難読化
CTF リバースチャレンジ✓✓✓
不明/不明瞭✓

ルール:セルが空の場合、そのスキルを読み込まないでください。これにより、ツール呼び出しを最小限に抑えられます。

3b. P3 ツール選択 — 詳細な解析で必要になった場合に読み込む

コアマトリクスに従って P0〜P2 を読み込んだ後、難読化解除で特定のボトルネックが発生した場合は、該当する P3 ツールを読み込みます。

シナリオ読み込む P3 スキル
文字列暗号化を検出(実行時の復号ループ、.rdata 内のエンコードされた文字列)deobf-string
間接分岐(CSEL/BR パターン)が CFG の復元を妨げているdeobf-indirect
LLVM で難読化されたバイナリ(OLLVM、偽の CF、CFF)llvm-obfuscation
再コンパイルや高度な解析のためにバイナリを LLVM IR に変換する必要があるbinary-lifting
JavaScript マルウェア(フィッシング、ドロッパー、ウェブ攻撃)deobfuscating-javascript-malware
多層 PowerShell ペイロードdeobfuscating-powershell-obfuscated-malware
逆アセンブル/CFG/コードパッチ解析が必要binary-analysis-patterns
解析後のシグネチャ生成(脅威ハンティング、分類)yara-rule-authoring
Ghidra のヘッドレス逆コンパイルを大規模に自動化するghidra-headless
動的インストルメンテーション/実行時フックが必要frida-17
Ghidra を使ったマルウェア解析ワークフロー(インポート、復号、アンパック)reverse-engineering-malware-with-ghidra
radare2 での逆アセンブル、デバッグ、またはスクリプト作成が望ましいradare2

ルール:一度に読み込む P3 スキルは 1 つだけとし、P0〜P2 のワークフローで、P3 ツールが解決できる特定のボトルネックが発生した場合にのみ読み込みます。

4. ワークフロー

ステップ 1:トリアージ(ツール呼び出し 0〜1 回)

対象を調査します。ソースコードには read_file を、バイナリには file/DIE/PEiD の出力を使用します。トリアージ行を出力します。

ステップ 2:P0 を読み込む(ツール呼び出し 1〜2 回)

ルートで必要とされる P0 スキルについて read_skill を実行します。ネイティブバイナリの場合は code-obfuscation-deobfuscation、JavaScript の場合は ast-deobfuscation です。

ステップ 3:ルートに該当する場合のみ P1/P2 を読み込む(ツール呼び出し 0〜3 回)

ルーティングマトリクスで対象の種類に ✓ が付いている P1/P2 スキルについてのみ read_skill を実行します。

Step 4: 難読化を解除する
  • まずは静的解析:パターンマッチング、CFF の削減、文字列の復号、ディスパッチャーのインライン化
  • 行き詰まった場合は動的解析:デバッガースクリプト、エミュレーション、シンボリック実行
  • JS の場合:まず ast-deobfuscation の scripts/detect-patterns.js を実行し、その後、該当するパイプラインを適用します
  • JS マルウェア/フィッシングの場合:Web 固有の難読化解除パターンには deobfuscating-javascript-malware (P3) を読み込みます
  • PowerShell の場合:階層化された AST/動的解析には deobfuscating-powershell-obfuscated-malware (P3) を読み込みます
  • ネイティブコードの場合:戦略を選ぶ前に、保護ツール(VMProtect/Themida/OLLVM/custom)を特定します
  • 文字列暗号化されたネイティブコードの場合:実行時の復号ループを自動復号するには deobf-string (P3) を読み込みます
  • 間接分岐が難読化されたネイティブコード(CSEL+BR)の場合:CFG の復元には deobf-indirect (P3) を読み込みます
  • LLVM で難読化されたターゲットの場合:OLLVM/CFF/偽の制御フローを削減するには llvm-obfuscation (P3) を読み込みます
  • バイナリリフティング/再コンパイルの場合:マシンコードを LLVM IR に変換するには binary-lifting (P3) を読み込みます
  • 逆アセンブル/CFG/コードパッチの場合:一般的な解析支援として binary-analysis-patterns (P3) を読み込みます
  • 解析後に YARA シグネチャを作成する場合:yara-rule-authoring (P3) を読み込みます
  • Ghidra の自動ヘッドレス解析の場合:ghidra-headless (P3) を読み込みます
  • Ghidra でマルウェアを解析するワークフローの場合:reverse-engineering-malware-with-ghidra (P3) を読み込みます
  • 動的計装/実行時フックの場合:frida-17 (P3) を読み込みます
  • radare2 で逆アセンブル/デバッグ/スクリプトを行う場合:radare2 (P3) を読み込みます
  • Java バイトコードの場合:java-decompile (CFR/Procyon/Fernflower) で逆コンパイルします
  • 文字列が難読化された Java バイトコードの場合:deobf-string (P3) も読み込みます
  • Android APK の場合:apktool で展開し、その後 jadx で DEX を逆コンパイルします
  • Android マルウェアの場合:reverse-engineering-android-malware-with-jadx も読み込み、必要に応じて firebase-apk-scanner で Firebase 設定をスキャンします
Step 5: 検証する
  • 難読化解除後の出力を元の症状と比較します
  • 機能的に同等であることを確認します
  • 残存する/入れ子になった難読化レイヤーがないか確認します

5. フォールバック — トリアージで判断できない場合

検査後もターゲットの種類を特定できない場合:

  1. deep-analysis (P2) に対して read_skill を実行します
  2. deep-analysis の手法に従ってターゲットを分類します
  3. 分類結果をもとにルーティングマトリックスに戻ります
  4. 適切な P0/P1 スキルを読み込みます

P0 より前に P2 スキルを読み込むのは、この場合に限ります。

6. クイックリファレンスチェックリスト

ネイティブバイナリ
  1. トリアージ:保護ツール/パッカーを特定する(file、DIE、PEiD)
  2. P0 を読み込む:code-obfuscation-deobfuscation
  3. アンチデバッグがあるか? → anti-debugging-techniques を読み込む
  4. VM で保護されているか? → vm-and-bytecode-reverse を読み込む
  5. CFF で行き詰まったか? → symbolic-execution-tools を読み込む
  6. パック/保護されているか? → binary-protection-bypass を読み込む
  7. アンチリバーシングがあるか? → anti-reversing-techniques を読み込む
  8. 文字列暗号化があるか? → deobf-string を読み込む
  9. 間接分岐の難読化があるか? → deobf-indirect を読み込む
  10. LLVM で難読化されている(OLLVM)か? → llvm-obfuscation を読み込む
  11. バイナリリフティング/再コンパイルが必要か? → binary-lifting を読み込む
  12. 逆アセンブル/CFG/パッチが必要か? → binary-analysis-patterns を読み込む
  13. 動的計装/フックが必要か? → frida-17 を読み込む
  14. Ghidra のヘッドレス解析を大規模に行うか? → ghidra-headless を読み込む
  15. Ghidra でのマルウェア解析ワークフローが必要か? → reverse-engineering-malware-with-ghidra を読み込む
  16. radare2 を使うか? → radare2 を読み込む
  17. 解析後に YARA シグネチャが必要か? → yara-rule-authoring を読み込む
  18. 難読化を解除する → 検証する
JavaScript
  1. トリアージ:難読化ツールを特定します(obfuscator.io、JSFuck、カスタム)
  2. P0 を読み込みます:ast-deobfuscation
  3. scripts/detect-patterns.js を実行してサイト/フレームワークを特定します
  4. 該当するパイプラインを適用します(CFF の削減、文字列の復号、ディスパッチャーのインライン化)
  5. 高度な難読化が施されていますか? → code-obfuscation-deobfuscation も読み込みます
  6. JavaScript マルウェア/フィッシング/ドロッパーですか? → deobfuscating-javascript-malware を読み込みます
  7. PowerShell のペイロードが混在していますか? → deobfuscating-powershell-obfuscated-malware を読み込みます
  8. 各段階の後に再解析し、検証します
CTF
  1. P2 を読み込みます:ctf-reverse + deep-analysis
  2. チャレンジの種類を特定します(VM、パッキング、暗号、カスタム)
  3. ルーティングマトリックスに従って P0/P1 を読み込みます
  4. チャレンジで文字列が暗号化されていますか? → deobf-string を読み込みます
  5. VM ベースのチャレンジですか? → deobf-indirect も検討します
  6. OLLVM/CFF のチャレンジですか? → llvm-obfuscation も検討します
  7. 動的解析が必要ですか? → frida-17 または radare2 を読み込みます
  8. 解決し、フラグを検証します
Java / Android
  1. トリアージ:JAR/class ファイルですか? Android APK ですか?
  2. Java バイトコード → P2 を読み込みます:java-decompile
  3. Android APK → P2 を読み込みます:jadx(必要に応じて展開用に apktool も読み込みます)
  4. Android マルウェア解析 → reverse-engineering-android-malware-with-jadx も読み込みます
  5. Firebase 設定のスキャン → P3 を読み込みます:firebase-apk-scanner
  6. 文字列が難読化されていますか? → deobf-string も読み込みます
  7. 動的インストルメンテーションが必要ですか? → frida-17 を読み込みます
  8. 逆コンパイルし、解析して、検証します
PowerShell / JS マルウェア
  1. トリアージ:難読化レイヤーを特定します(base64、XOR、圧縮、eval チェーン)
  2. PowerShell → P3 を読み込みます:deobfuscating-powershell-obfuscated-malware
  3. JavaScript マルウェア → P0 を読み込みます:ast-deobfuscation + deobfuscating-javascript-malware も読み込みます
  4. レイヤーごとに難読化を解除します(Unicode → デコード → AST のクリーンアップ)
  5. 解析後に YARA シグネチャが必要ですか? → yara-rule-authoring を読み込みます
  6. 動作の同等性を検証します
汎用 P3 ツール — ボトルネックが発生したら読み込む
  1. 文字列が暗号化されていますか? → deobf-string
  2. 間接分岐/CFG が妨げになっていますか? → deobf-indirect
  3. LLVM の難読化ですか? → llvm-obfuscation
  4. バイナリリフティングが必要ですか? → binary-lifting
  5. 一般的なバイナリ解析ですか? → binary-analysis-patterns
  6. Ghidra の自動化ですか? → ghidra-headless
  7. Ghidra を使ったマルウェア解析ワークフローですか? → reverse-engineering-malware-with-ghidra
  8. ライブフック/トレースですか? → frida-17
  9. radare2 のスクリプト作成ですか? → radare2
  10. YARA シグネチャですか? → yara-rule-authoring

コメント