HyperDbg/HyperDbg

GitHub: HyperDbg/HyperDbg

一款基于虚拟机辅助的 Windows 原生调试器,通过硬件扩展实现高级隐蔽调试与逆向分析。

Stars: 3725 | Forks: 459

Website Documentation Doxygen Published Academic Researches License

# HyperDbg 调试器 HyperDbg 调试器
**HyperDbg 调试器**是一款免费(自由软件意义上的免费)、开源、社区驱动、基于虚拟机辅助的用户模式和内核模式 Windows 调试器,专注于使用现代硬件技术。它是一款用于分析、模糊测试和逆向工程的调试器。 您可以关注 **HyperDbg** 的 **[Twitter](https://twitter.com/HyperDbg)** 或 **[Mastodon](https://infosec.exchange/@hyperdbg)** 以获取新版本通知,或加入任意 HyperDbg 群组,在其中可以向开发者及开源逆向爱好者咨询设置和使用 HyperDbg 的帮助。 - **[Telegram](https://t.me/HyperDbg)** - **[Discord](https://discord.gg/anSPsGUtzN)** - **[Matrix](https://matrix.to/#/#hyperdbg-discussion:matrix.org)** ## 描述 **HyperDbg** 的设计重点在于使用现代硬件技术为调试器世界提供新功能。它在 Windows 之上运行,通过虚拟化已运行的系统,利用 Intel VT-x 和 EPT 实现。该调试器旨在不使用任何 API 和软件调试机制,而是广泛使用第二层页表(又称扩展页表或 EPT)来监控内核和用户执行。

HyperDbg Debugger

HyperDbg comes with features like hidden hooks, which are as fast as old inline hooks, but also stealth. It mimics hardware debug registers for (read & write) to a specific location, but this time invisible for both the Windows kernel and the programs, and of course, without any limitation in size or count! 通过 TLB 分割以及诸如测量代码覆盖率、监控函数对内存的所有 mov(s) 等功能,HyperDbg 成为一款独特的调试器。 尽管具备新颖的功能,HyperDbg 力求尽可能隐蔽。它不使用任何调试 API 来调试 Windows 或任何应用程序,因此经典的反调试方法无法检测到它。此外,它还能抵抗利用时间差方法(例如 RDTSC/RDTSCP)检测虚拟机监控程序的存在,从而让应用程序、打包器、保护器、恶意软件、反作弊引擎等更难发现调试器。 ## 为何选择 HyperDbg? 与传统调试器相比,HyperDbg 更难设置和使用,同时也需要更深入的低级系统知识。然而,它提供了两大优势: 1. **完整的系统与操作系统控制** HyperDbg 在虚拟机监控程序级别运行,为您提供经典调试器无法实现的强大能力。这使您能够利用硬件辅助的 **[功能](https://github.com/HyperDbg/HyperDbg?tab=readme-ov-file#unique-features)** 进行高级逆向工程和调试场景。 2. **隐蔽性与反检测能力** 由于 HyperDbg 不依赖标准的操作系统调试 API,因此通常更难(尽管并非不可能)被检测到。这使它成为对抗反调试保护时的有力选择。 这些优势开启了超越传统调试器所能提供的全新调试与逆向工程技术。 ## 构建与安装 您可以从 **[发布版本](https://github.com/HyperDbg/HyperDbg/releases)** 下载最新的编译二进制文件;否则,若您希望构建 HyperDbg,应使用 `--recursive` 标志克隆 HyperDbg。 ``` git clone --recursive https://github.com/HyperDbg/HyperDbg.git ``` 请访问 **[构建与安装](https://docs.hyperdbg.org/getting-started/build-and-install)** 和 **[快速入门](https://docs.hyperdbg.org/getting-started/quick-start)** 获取详细的启动说明。您也可以查看 **[常见问题解答](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. [The Reversing Machine: Reconstructing Memory Assumptions](https://arxiv.org/pdf/2405.00298)** [[arXiv](https://arxiv.org/abs/2405.00298)] ``` @article{karvandi2024reversing, title={The Reversing Machine: Reconstructing Memory Assumptions}, 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 van der Kouwe, Erik}, journal={arXiv preprint arXiv:2405.00298}, year={2024} } ``` **3. [hwdbg: Debugging Hardware Like Software (EuroSec'25)](https://dl.acm.org/doi/abs/10.1145/3722041.3723101)** [[PDF](https://dl.acm.org/doi/pdf/10.1145/3722041.3723101)] ``` @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} } ```
您还可以阅读 [这篇文章](https://research.hyperdbg.org/debugger/kernel-debugger-design/),它描述了 HyperDbg 调试器的整体架构、技术难点、设计决策及内部机制,[这篇文章](https://research.hyperdbg.org/vmm/transparency/) 介绍我们在虚拟机退出透明化方面的努力,[这篇文章](https://research.hyperdbg.org/debugger/chasing-bugs/) 探讨了虚拟机监控器中的漏洞追踪,以及 [这篇文章](https://research.hyperdbg.org/debugger/gaining-insights/) 介绍了 HyperDbg 引入的新逆向工程技术。更多文章、帖子与资源请查阅 **[awesome](https://github.com/HyperDbg/awesome)** 仓库,此外 **[slides](https://github.com/HyperDbg/slides)** 仓库还提供了用于进一步参考的演示幻灯片。 ## 独特功能 * 高级基于虚拟机监控器的内核模式调试器 [链接][链接][链接] * 经典 EPT 钩子(隐藏断点)[链接][链接][链接] * 内联 EPT 钩子(内联钩子)[链接][链接] * 监控内存的读写(在不限制硬件调试寄存器的情况下模拟)[链接][链接][链接] * 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-root 与非根(内核与用户)运行自定义汇编代码 [链接] * 检查自定义条件 [链接][链接] * 针对特定进程与线程的调试 [链接][链接][链接] * VMX-root 兼容的消息追踪 [链接] * 强大的内核级脚本引擎 [链接][链接] * 支持符号(解析 PDB 文件)[链接][链接] * 将数据映射到符号并从 PDB 文件创建结构体、枚举 [链接][链接][链接] * 事件转发(#DFIR)[链接][链接] * 透明断点处理程序 [链接][链接] * 各种自定义脚本 [链接] * HyperDbg 软件开发套件(SDK)[链接] * 事件短路 [链接][链接] * 调用与返回地址的跟踪记录 [链接] * 内核级长度反汇编引擎(LDE)[链接][< href="https://docs.hyperdbg.org/commands/scripting-language/functions/diassembler/disassemble_len32" target="_blank">链接] * 内存执行监控与执行阻塞 [链接] * 自定义页面错误注入 [链接] * 不同的事件调用阶段 [链接] * 注入自定义中断/异常/错误 [链接][链接] * 调试器模式下的即时事件 [链接] * 检测内核到用户及用户到内核的转换 [链接] * 物理内存监控钩子 [链接] * 枚举 PCI/PCI-e 设备 [链接] * 解释与转储 PCI/PCI-e 配置空间(CAM)[链接] * 转储 IDT 项、I/O APIC 和本地 APIC(XAPIC 与 X2APIC 模式)[链接][链接][链接] * 触发并统计系统管理模式(SMM)中断(SMIs)[链接] * 附加到用户模式进程并阻止其执行 [链接] * 拦截 XSETBV 指令的执行 [链接] * 编写库脚本文件 [链接] ## 工作原理 您可以阅读文档了解 HyperDbg 的内部设计及其功能特性:[文档](https://docs.hyperdbg.org/design)。以下是一个顶层架构图,展示了 HyperDbg 的工作方式:

HyperDbg Design


## 脚本 您可以编写自己的 **[脚本](https://github.com/HyperDbg/scripts)** 来自动化调试过程。**HyperDbg** 拥有一个强大、快速且完全在内核层面实现的 [脚本引擎](https://docs.hyperdbg.org/commands/scripting-language)。 ## 许可证 **HyperDbg** 及其所有子模块与仓库,除非另有说明,均在 **GPLv3** 许可证下授权。 依赖项各自拥有独立的许可证。
标签:GPLv3, HyperDbg, Hypervisor 辅助调试, Python 3.9+, UML, URL提取, Velociraptor, Wayback Machine, Windows 内核, Windows 调试, 二进制可视化, 云资产清单, 代码分析, 内核态调试, 内核调试, 凭证管理, 原生调试, 反汇编, 反编译, 客户端加密, 开源调试器, 性能分析, 漏洞分析, 现代硬件调试, 用户态调试, 用户模式调试, 硬件辅助调试, 社区驱动, 调试技术, 路径探测, 逆向工程