ScyllaHide - ユーザーモードアンチアンチデバッグチートシート
ScyllaHideは、Windows (x86/x64)向けの高度なオープンソースユーザーモードアンチアンチデバッグライブラリです。マルウェアと商用パッカーは、よく知られているAPI呼び出しとフラグのセットを通じてデバッガーを検出します。ScyllaHideはこれらの機能をフックして、「デバッガーが存在しない」を返し、保護されたコードをデバッグでき、その回避機構をトリップしません。x64dbg、IDA、OllyDbgのプラグインとして出荷され、ターゲットへのインジェクションによってスタンドアロンで実行することもできます。
認可されたマルウェア分析およびソフトウェアリサーチのみ。ScyllaHideは防御的研究ツールです。分析する権限があるサンプルおよびソフトウェアでのみ使用してください。
インストール
| 方法 | 方法 |
|---|
| x64dbg | プラグインDLLを x64dbg/plugins/ にドロップ |
| IDA | IDAプラグインをIDAの plugins/ フォルダにコピー |
| スタンドアロン (インジェクター) | InjectorCLIx64.exe / InjectorGUI.exe を使用 |
| ソース | x64dbg/ScyllaHideリポジトリからビルド |
| 確認 | プラグインメニューがデバッガーに表示される |
隠蔽対象
| テクニック | ScyllaHideが対抗 |
|---|
IsDebuggerPresent | falseを返す |
CheckRemoteDebuggerPresent | デバッガーなしを報告 |
PEB BeingDebugged フラグ | クリア |
NtGlobalFlag | 正規化 |
NtQueryInformationProcess | ProcessDebugPort/Flagsなりすまし |
| ヒープフラグ | 正規化 |
NtSetInformationThread (HideFromDebugger) | ブロック |
タイミングチェック (GetTickCount, rdtsc) | オプションで軽減 |
OutputDebugString / ハードウェアブレークポイント | 処理/隠蔽 |
プラグインの使用 (x64dbg)
| ステップ | アクション |
|---|
| ターゲットを開く | パック/保護されたバイナリをx64dbgに読み込む |
| オプション | プラグイン → ScyllaHide → オプション |
| プロフィールを選択 | プロフィールを選択またはチューニング |
| フックをアタッチ | アンチデバッグチェックを実行する前に有効化 |
| 実行 | 実行を続ける、チェックがパスするようになる |
プロフィール
| プロフィール | 用途 |
|---|
| プリセットテンプレート | 一般的なパッカー (例: VMProtect、Themidaスタイル) |
| カスタム | 頑固なターゲット用に個別フックを切り替え |
| 保存/読み込み | サンプル/パッカーごとにプロフィールを永続化 |
スタンドアロンインジェクション
# 実行中 (または起動された) プロセスにScyllaHideをインジェクト
InjectorCLIx64.exe <pid|path> HookLibraryx64.dll <profile>
| オプション | 目的 |
|---|
| Spawn vs attach | ターゲットをScyllaHide下で起動または後で接続 |
| Hook library | フックをインストールするDLL |
| Profile | 適用するアンチデバッグフック |
典型的なアンパッキングワークフロー
ScyllaHideは通常、兄弟ツールと共にアンパッキングツールキットの一部です。
| ツール | 役割 |
|---|
| ScyllaHide | アンチデバッグを回避してOEPまで実行可能にする |
| x64dbg | デバッグして元のエントリーポイントに到達 |
| Scylla | インポートアドレステーブルを再構築、PEをダンプ |
| Detect It Easy | パッカー/形式を特定、アンパック済みファイルを検証 |
# コンセプト: 保護されたサンプルのアンパック
1. x64dbgでScyllaHideを有効にしてサンプルを読み込む
2. パッカースタブをOEPまで実行 (アンチデバッグは無効化される)
3. ScyllaでプロセスをダンプしてIATを再構築
4. Detect It Easyでダンプを検証
ScyllaHideと関連ツール
| 側面 | ScyllaHide | TitanHide | 手動パッチング |
|---|
| レイヤー | ユーザーモードフック | カーネルモードドライバー | チェック単位のパッチ |
| カバレッジ | 広いAPI設定 | カーネルレベルのステルス | パッチしたもののみ |
| セットアップ | プラグイン/インジェクト | ドライバーインストール | 退屈 |
| 最適用途 | 日常的なREデバッグ | 深いステルスが必要 | ワンオフチェック |
リソース