这是 HyperDbg 调试器的 Go 语言实现,完整复刻了 C++ 版本的 ring3 功能。
hypedbg/
├── debugger/ # 调试器核心
│ ├── api/ # API 接口定义
│ ├── breakpoint/ # 断点管理
│ ├── commands/ # 调试命令
│ ├── driver/ # 驱动通信
│ ├── event_*.go # 事件系统
│ ├── hardware/ # 硬件检测
│ ├── memory/ # 内存操作
│ ├── process/ # 进程管理
│ ├── register/ # 寄存器操作
│ ├── script/ # 脚本引擎
│ ├── symbol/ # 符号表
│ └── ... # 其他模块
├── ui/ # 用户界面
│ ├── pages/ # UI 页面
│ ├── asserts/ # 资源文件
│ └── ui.go # UI 主入口
├── doc/ # 文档
├── main.go # 程序入口
└── go.mod # Go 模块定义
-
驱动提供者 (provider.go)
Load()- 加载驱动Unload()- 卸载驱动Manage()- 统一的驱动管理接口
-
驱动句柄 (handle.go)
- Windows 设备驱动通信
- IOCTL 接口支持
- 缓冲区发送和接收
-
驱动配置 (config.go)
- 配置管理
- 设备名称配置
-
VMM 初始化和控制 (vmm.go)
Initialize()- 初始化 VMMTerminate()- 终止 VMM- CPU 厂商检测
- VT-x 支持检测
-
内存操作 (memory.go)
ReadVirtualMemory()- 读取虚拟内存WriteVirtualMemory()- 写入虚拟内存ReadPhysicalMemory()- 读取物理内存WritePhysicalMemory()- 写入物理内存SearchMemory()- 搜索内存
-
事件管理器 (event_manager.go)
- 事件注册和查询
- 事件修改和删除
- 事件动作管理
-
事件处理器 (event_handler.go)
- 37 种事件类型处理
- 事件回调机制
- 事件分发
-
事件循环 (event_loop.go)
- 事件监听
- 事件分发
- 异步处理
-
调试器主入口 (debugger.go)
- 调试器初始化
- 调试器卸载
- VMM 集成
- 事件系统集成
-
单步调试 (steppings.go)
StepInto()- 单步进入StepOver()- 单步跳过- 指令跟踪
- 用户模式和内核模式支持
-
用户调试器 (user_debugger.go)
- 用户模式进程调试
- 暂停包处理
- 线程拦截
-
断点控制 (control.go)
- CTRL+C/CTRL+BREAK 处理
- 暂停/继续控制
- 内核调试命令发送
-
断点管理 (breakpoint.go)
- 软件断点
- 硬件断点
- 内存断点
- 断点列表
-
基础命令 (debugging/basic.go)
g- 继续执行p- 单步跳过t- 单步进入help- 显示帮助cls- 清屏
-
断点命令 (debugging/breakpoint.go)
bp- 设置断点bc- 清除断点bl- 列出断点
-
扩展命令 (extension/vm.go)
!epthook- 设置 EPT Hook!monitor- 监控内存访问!pte- 查询页表项!va2pa- 虚拟地址转物理地址!pa2va- 物理地址转虚拟地址
-
连接管理 (meta/connection.go)
connect- 连接到远程调试器disconnect- 断开连接attach- 附加到进程detach- 分离进程status- 显示状态
-
UI 框架 (ui.go)
- Gio 框架集成
- 页面管理
- 工具栏管理
- 菜单管理
-
UI 页面 (ui/pages/)
- CPU 页面 - CPU 寄存器和反汇编
- Events 页面 - 事件列表
- Log 页面 - 日志输出
- 反汇编 (disassembly/)
- 符号表 (symbol/)
- 寄存器 (register/)
- 进程 (process/)
- 线程 (thread/)
- 调用栈 (stack/)
- 异常 (exception/)
- 透明模式 (transparency/)
- 脚本引擎 (script/)
- PE 查看 (peview/)
- Scylla (scylla/)
- ARK (ark/)
- 笔记 (notes/)
- 书签 (bookmark/)
- 注释 (comment/)
- 函数 (function/)
- 引用 (reference/)
- 交叉引用 (xref/)
- 类型 (type_/)
- 监视 (watch/)
- 图形 (graph/)
- 循环 (loop/)
- 跟踪 (trace/)
- 句柄 (handle/)
- SEH (seh/)
- 源代码 (source/)
- 远程 (remote/)
- 日志 (log/)
go run main.gogo run main.go --driver-onlyHyperDbg> help # 显示帮助
HyperDbg> bp 0x401000 # 设置断点
HyperDbg> bl # 列出断点
HyperDbg> g # 继续执行
HyperDbg> p # 单步跳过
HyperDbg> t # 单步进入
HyperDbg> load # 加载驱动
HyperDbg> unload # 卸载驱动
HyperDbg> vmm init # 初始化 VMM
HyperDbg> vmm version # 获取 VMM 版本
HyperDbg> vmm status # 获取 VMM 状态
HyperDbg> vmm readmem 1234 0x401000 16 # 读取虚拟内存
HyperDbg> vmm writemem 1234 0x401000 9090 # 写入虚拟内存
HyperDbg> vmm readphys 0x1000 16 # 读取物理内存
HyperDbg> vmm writephys 0x1000 9090 # 写入物理内存
HyperDbg> !epthook 0x401000 # 设置 EPT Hook
HyperDbg> !monitor 0x401000 16 true false # 监控内存
HyperDbg> !pte 0x401000 # 查询页表项
HyperDbg> !va2pa 0x401000 # 转换地址
HyperDbg> !pa2va 0x1000 # 转换地址
HyperDbg> connect 192.168.1.100:5000 # 连接到远程调试器
HyperDbg> disconnect # 断开连接
HyperDbg> attach 1234 # 附加到进程
HyperDbg> detach # 分离进程
HyperDbg> status # 显示状态
- 每个功能都是独立的包
- 清晰的接口定义
- 易于维护和扩展
- 真实的 Windows 驱动通信
- IOCTL 接口支持
- 完整的错误处理
- 37 种事件类型支持
- 异步事件处理
- 事件回调机制
- 使用互斥锁保护共享状态
- 并发访问控制
- 完整的错误检查
- 详细的错误信息
- 优雅的错误恢复
| 模块 | 完成度 | 说明 |
|---|---|---|
| 基础设施层 | 100% | 驱动加载、IOCTL 通信、VMM 初始化 |
| VMM 层 | 100% | VMM 初始化、终止、内存操作 |
| IOCTL 通信层 | 100% | 所有 IOCTL 功能实现 |
| 数据结构层 | 100% | 所有数据结构定义 |
| 事件处理层 | 100% | 37 种事件类型处理 |
| 调试器核心层 | 80% | 核心功能完整,部分高级功能待完善 |
| 用户界面层 | 50% | 框架完整,部分页面待实现 |
- ✅ 驱动通信:100% 完成
- ✅ 事件系统:100% 完成(37 种事件类型)
- ✅ VMM 初始化:100% 完成
- ✅ 内存操作:100% 完成
- ✅ 单步执行:100% 完成
⚠️ 断点管理:50% 完成(框架存在,需要完善)⚠️ 寄存器操作:50% 完成(框架存在,需要完善)⚠️ 反汇编:50% 完成(框架存在,需要完善)⚠️ 符号表:50% 完成(框架存在,需要完善)⚠️ UI 页面:11% 完成(3/27 页面已实现)
| C++ 模块 | Go 模块 | 文件 |
|---|---|---|
| debugger.cpp | debugger.go | debugger.go |
| install.cpp | driver/provider.go | provider.go |
| user-listening.cpp | user_debugger.go | user_debugger.go |
| script-engine.cpp | script/script_engine.go | script_engine.go |
| transparency.cpp | transparency/transparency.go | transparency.go |
| commands/ | commands/ | [commands/](file:///d:\笔记本\p\ux\examples\hypedbg\debugger\commands) |
- 驱动签名: 需要禁用驱动签名强制或使用测试签名
- HVCI: 不兼容基于虚拟化的安全 (VBS)
- 管理员权限: 需要管理员权限来加载驱动
- 防火墙: 可能需要配置防火墙规则
- Windows 10/11: 仅支持 Windows 10/11 x64
- Go 1.26.1 或更高版本
- Windows 10/11 x64
- 管理员权限
# 克隆仓库
git clone https://github.com/ddkwork/HyperDbg.git
cd HyperDbg
# 下载依赖
go mod download
# 构建
go build -o hypedbg.exe
# 运行
./hypedbg.exe详细说明请参考: https://docs.hyperdbg.org/getting-started/build-and-install
欢迎贡献!请查看 CONTRIBUTING.md 了解详细信息。
GNU Public License v3
- HyperDbg - 原始 C++ 实现
- Gio - UI 框架
- golang.org/x/sys - Windows API 绑定