
HyperDbg v0.22
最先端のネイティブデバッギングツール
HyperDbg Debugger

HyperDbg Debugger は、Windows 向けのオープンソースのハイパーバイザ支援型デバッガです(Linux 対応は現在開発中です!)。ユーザーモードとカーネルモード(ネイティブ)の両方のデバッグをサポートしています。リバースエンジニアリング、ファジング、そして最新のハードウェア仮想化とトレーシング機能を活用した高度なシステム解析のために作られています。
HyperDbg の新リリースに関する通知を受け取るには、Twitter または Mastodon をフォローしてください。また、HyperDbg の各種グループに参加して、開発者やオープンソースのリバースエンジニアリング愛好家に、HyperDbg のセットアップや使用方法について質問することもできます。
説明
HyperDbg は、従来のデバッガを超える機能を実現するために、最新のハードウェア仮想化技術を基盤として構築されています。Intel VT-x と Extended Page Tables(EPT)を使用して、稼働中のシステムを仮想化することで、オペレーティングシステムの上で動作します。Intel Processor Trace(Intel PT)などの高度なトレーシング技術と仮想化を組み合わせることで、HyperDbg は強力なトレーシング機能と Virtual Machine Introspection(VMI)機能を提供します。
主な機能
HyperDbg は、EPTベースの隠しフック の複数の種類を含む、幅広い高度なデバッグ機能を提供します。特定のアドレス範囲におけるメモリの読み取り、書き込み、実行を監視するためのハードウェアデータブレークポイントをエミュレートでき、オペレーティングシステムと対象アプリケーションの両方に対して透過的です。ハードウェアデバッグレジスタとは異なり、これらの監視機能は、利用可能なデバッグレジスタの数やサイズの制約を受けません。さらに、HyperDbg は、ユーザーモードからカーネルモードへの移行(システムコール、heaven's gate、フォールト、例外、割り込みなど)、カーネルからデバイスドライバ、カーネルモードからユーザーモードへの復帰といった、異なる特権レベル間での実行の追跡が可能であり、実行フロー全体の包括的な分析を実現します。
さらに、HyperDbg はシステムコールフック、ハードウェアトレーシング機能による制御フロートレーシング、そしてメモリマップドI/O(MMIO)とポートマップドI/O(PMIO)の両方を含むI/O操作の包括的な監視をサポートし、デバイスとのやり取りや外部周辺機器の詳細な分析を可能にします。
その他にも、HyperDbg には、リバースエンジニアリング、マルウェア解析、低レベルプログラム解析用に特別に設計された、多数の追加イベントが含まれています。サポートされているイベントの完全なリストとそのドキュメントについては、全機能一覧を参照してください。
HyperDbg は、可能な限りステルスに動作するように設計されています。オペレーティングシステムやアプリケーションのデバッグにデバッグAPIを使用しないため、従来のアンチデバッグ手法では検出されません。また、ステルス機能を強化するために設計された専用モジュールも含まれています。このモジュールは、ハイパーバイザやデバッガの存在を検出しようとする試みを監視し、まず報告し、その後、そのような検出メカニズムを軽減または回避するためのさまざまな技術を適用します。すべてのシナリオで完全な透過性を保証することはできませんが、これらの機能により、HyperDbg の検出が非常に困難になり、アプリケーション、パッカー、ソフトウェアプロテクタ、マルウェア、アンチチートシステム、その他のセキュリティメカニズムがその存在を識別することがはるかに難しくなります。
なぜ HyperDbg なのか?
HyperDbg は、従来のデバッガと比較してセットアップと使用が難しく、より深い低レベルシステムの知識も必要です。しかし、次の2つの大きな利点があります。
-
システム全体とOSの完全な制御
HyperDbg はハイパーバイザレベルで動作するため、従来のデバッガでは不可能な強力な機能を提供します。これにより、ハードウェア支援の機能を高度なリバースエンジニアリングやデバッグシナリオに活用できます。 -
ステルス性と検出耐性
HyperDbg は標準のOSデバッグAPIに依存していないため、一般的に検出がはるかに困難です(不可能ではありません)。そのため、アンチデバッグプロテクションに対処する場合に有力な選択肢となります。
これらの利点により、従来のデバッガが提供できる範囲を超えた、まったく新しいデバッグおよびリバースエンジニアリング技術が開拓されます。
ビルドとインストール
最新のコンパイル済みバイナリファイルは、releases からダウンロードできます。それ以外で HyperDbg をビルドする場合は、--recursive フラグを付けて HyperDbg をクローンする必要があります。```
git clone --recursive https://github.com/HyperDbg/HyperDbg.git
**HyperDbg** の始め方の詳細については、**[ビルドとインストール](https://docs.hyperdbg.org/getting-started/build-and-install)** および **[クイックスタート](https://docs.hyperdbg.org/getting-started/quick-start)** をご覧ください。詳細については **[FAQ](https://docs.hyperdbg.org/getting-started/faq)** もご覧いただけます。また、GDB、LLDB、WinDbg などの他のネイティブデバッガを以前に使用したことがある場合は、[コマンドマップ](https://hyperdbg.github.io/commands-map) をご覧ください。
## チュートリアル
**OpenSecurityTraining2の"Reversing with HyperDbg (Dbg3301)**" チュートリアルシリーズは、[**OST2 のウェブサイト**](https://ost2.fyi/Dbg3301) (_推奨_) と [**YouTube**](https://www.youtube.com/playlist?list=PLUFkSN0XLZ-kF1f143wlw8ujlH2A45nZY) で公開されており、HyperDbg を始めて学習するのに推奨される方法です。このシリーズでは、HyperDbg の使用初期ステップを解説し、重要な概念、原理、デバッグ機能に加えて、実践的な例と HyperDbg 独自の数多くのリバースエンジニアリング手法を紹介しています。
ハイパーバイザと HyperDbg の内部設計やアーキテクチャを理解することに興味がある場合は、[**Hypervisor From Scratch**](https://rayanfam.com/tutorials) チュートリアルをご覧ください。
## 出版物
**HyperDbg** のコンポーネントを研究や作業で使用する場合は、私たちの論文の引用を検討してください。
**1. [HyperDbg: Reinventing Hardware-Assisted Debugging (CCS'22)](https://dl.acm.org/doi/abs/10.1145/3548606.3560649)** [[arXiv](https://arxiv.org/abs/2207.05676)]```
@inproceedings{karvandi2022hyperdbg,
title={HyperDbg: Reinventing Hardware-Assisted Debugging},
author={Karvandi, Mohammad Sina and Gholamrezaei, MohammadHosein and Khalaj Monfared, Saleh and Meghdadizanjani, Soroush and Abbassi, Behrooz and Amini, Ali and Mortazavi, Reza and Gorgin, Saeid and Rahmati, Dara and Schwarz, Michael},
booktitle={Proceedings of the 2022 ACM SIGSAC Conference on Computer and Communications Security},
pages={1709--1723},
year={2022}
}
HyperDbg を基盤とした他の論文...
2. hwdbg: ハードウェアをソフトウェアのようにデバッグする (EuroSec'25) [PDF]``` @inproceedings{karvandi2025hwdbg, title={hwdbg: Debugging Hardware Like Software}, author={Karvandi, Mohammad Sina and Meghdadizanjani, Soroush and Monfared, Saleh Khalaj and van der Kouwe, Erik and Slowinska, Asia}, booktitle={Proceedings of the 18th European Workshop on Systems Security}, pages={56--62}, year={2025} }
**3. [HyperEvade: HyperDbgを用いたネスト型仮想化におけるアンチデバッグ技術への対抗と透明性の向上 (DEBT'25)](https://www.jot.fm/contents/issue_2026_01/a8.html)** [[PDF](https://www.jot.fm/issues/issue_2026_01/a8.pdf)]```
@article{ruytenberg2026hyperevade,
title={HyperEvade: Countering Anti-Debugging Techniques and Enhancing Transparency in Nested Virtualization using HyperDbg},
author={Ruytenberg, Bj{\"o}rn and Karvandi, Mohammad Sina},
journal={Journal of Object Technology},
volume={25},
number={1},
pages={1--3},
year={2026},
publisher={Association Internationale pour les Technologies Objets}
}
4. デジタルホール: DReaMcatcherによる商用オーディオDRMソリューションの回避 (EuroSys'26) [PDF]``` @inproceedings{ruytenberg2026digital, title={Digital Hole: Bypassing Commercial Audio DRM Solutions with DReaMcatcher}, author={Ruytenberg, Bj{"o}rn and Karvandi, Mohammad Sina and Bos, Herbert and van der Kouwe, Erik and Slowinska, Asia}, booktitle={Proceedings of the 21st European Conference on Computer Systems}, pages={484--496}, year={2026} }
**5. [TRM: マルウェア解析とメモリ再構築のための効率的なハイパーバイザーベースのフレームワーク (AsiaCCS'26)](https://dl.acm.org/doi/10.1145/3779208.3785293)** [[PDF](https://dl.acm.org/doi/pdf/10.1145/3779208.3785293)]```
@inproceedings{karvandi2026trm,
title={TRM: An Efficient Hypervisor-Based Framework For Malware Analysis and Memory Reconstruction},
author={Karvandi, Mohammad Sina and Meghdadizanjani, Soroush and Arasteh, Sima and Monfared, Saleh Khalaj and Fallah, Mohammad K and Gorgin, Saeid and Lee, Jeong-A and Slowinska, Asia and van der Kouwe, Erik},
booktitle={Proceedings of the ACM Asia Conference on Computer and Communications Security},
pages={68--82},
year={2026}
}
また、この記事では、HyperDbgデバッガの全体的なアーキテクチャ、技術的な難しさ、設計上の決定、内部構造について説明しています。この記事では、vm-exitの透過性に関する私たちの取り組みについて、この記事では、ハイパーバイザー内のバグの追跡について、この記事では、HyperDbgで導入された新しいリバースエンジニアリング技術について説明しています。その他の記事、投稿、リソースは awesome リポジトリで入手できます。さらに、slides リポジトリでは、参照用のプレゼンテーションスライドが提供されています。
独自機能
- 高度なハイパーバイザーベースのカーネルモードデバッガ [リンク][リンク][リンク]
- クラシックEPTフック(隠しブレークポイント) [リンク][リンク][リンク]
- インラインEPTフック(インラインフック) [リンク][リンク]
- メモリのR/W監視(ハードウェアデバッグレジスタを制限なくエミュレート) [リンク][リンク][リンク]
- SYSCALLフック(EFERを無効化して#UDを処理) [リンク][リンク][リンク]
- SYSRETフック(EFERを無効化して#UDを処理) [リンク][リンク]
- CPUIDフック&モニター [リンク][リンク]
- RDMSRフック&モニター [リンク][リンク]
- WRMSRフック&モニター [リンク][リンク]
- RDTSC/RDTSCPフック&モニター [リンク]
- RDPMCフック&モニター [リンク]
- VMCALLフック&モニター [リンク]
- デバッグレジスタフック&モニター [リンク]
- I/Oポート(IN命令)フック&モニター [リンク][リンク]
- I/Oポート(OUT命令)フック&モニター [リンク][リンク]
- MMIOモニター [リンク]
- 例外(IDT < 32)モニター [リンク][リンク][リンク]
- 外部割り込み(IDT > 32)モニター [リンク][リンク][リンク]
- 自動スクリプトの実行 [リンク]
- 透過モードとHyperevadeプロジェクト(アンチデバッグおよびアンチハイパーバイザー耐性) [リンク][リンク][リンク]
- VMXルートとVMX非ルート(カーネル&ユーザー)の両方でカスタムアセンブリを実行 [リンク]
- カスタム条件のチェック [リンク][リンク]
- プロセス固有&スレッド固有のデバッグ [リンク][リンク][リンク]
- VMXルート互換のメッセージトレーシング [リンク]
- 強力なカーネルサイドスクリプティングエンジン [リンク][リンク]
- シンボルのサポート(PDBファイルの解析) [リンク][リンク]
- データをシンボルにマッピング&PDBファイルから構造体や列挙型を作成 [リンク][リンク][リンク]
- イベント転送(#DFIR) [リンク][リンク]
- 透過的ブレークポイントハンドラー [リンク][リンク]
- さまざまなカスタムスクリプト [リンク]
- HyperDbgソフトウェア開発キット(SDK) [リンク]
- イベントのショートサーキット [リンク][リンク]
- 関数呼び出しと戻りアドレスの追跡 [リンク]
- カーネルレベルの長さ逆アセンブラエンジン(LDE) [リンク][リンク]
- メモリ実行モニター&実行ブロッキング [リンク]
- カスタムページフォールト注入 [リンク]
- さまざまなイベント呼び出しステージ [リンク]
- カスタム割り込み/例外/フォールトの注入 [リンク][リンク]
- デバッガーモードでのインスタントイベント [リンク]
- カーネルからユーザー、ユーザーからカーネルへの遷移の検出 [リンク]
- 物理メモリ監視フック [リンク]
- PCI/PCI-eデバイスの列挙 [リンク]
- PCI/PCI-eコンフィギュレーションスペース(CAM)の解釈とダンプ [リンク]
- XAPICおよびX2APICモードでのIDTエントリ、I/O APIC、ローカルAPICのダンプ [リンク][リンク][リンク]
- システム管理モード(SMM)割り込み(SMI)のトリガーとカウント [リンク]
- ユーザーモードプロセスへのアタッチと実行の防止 [リンク]
- XSETBV命令の実行のインターセプト [リンク]
- ライブラリスクリプトファイルの作成 [リンク]
- 拡張ポータブル実行可能(PE)パーサー [リンク]
- ラストブランチレコード(LBR)を使用したブランチのトレース [リンク][リンク][リンク][リンク][リンク][リンク][リンク]
仕組み
HyperDbgの内部設計とその機能については、ドキュメントで読むことができます。以下は、HyperDbgの仕組みを示すトップレベルの図です:
スクリプト
デバッグ作業を自動化するために、スクリプト を作成できます。HyperDbg には、強力かつ高速で、完全にカーネルサイドで実装されたスクリプトエンジンがあります。
コントリビューション
HyperDbgへのコントリビューションは大歓迎です。コントリビュートに興味を持っていただけるかもしれない、候補となるタスクのリストを作成しました。
HyperDbgにコントリビュートしたい場合は、コントリビューションガイドをお読みください。
ライセンス
HyperDbg およびそのすべてのサブモジュールとリポジトリは、特にライセンスが指定されていない限り、GPLv3 ライセンスの下でライセンスされています。
依存関係はそれぞれ独自のライセンスの下でライセンスされています。

