统计日期: 2026-04-12 C++ 源码路径:
HyperDbgUnified/HyperDbg/hyperdbg/libhyperdbg/code/Go 源码路径:debugger/
| 目录 | C++ 函数数 | Go 函数数 | 完成度 |
|---|---|---|---|
| app/ | 15 | 22 | ✅ 超集 |
| kernel-level/ | 64 | 110 | ✅ 超集 |
| user-level/ | 30 | 37 | ✅ 超集 |
| core/ | 31 | 73 | ✅ 超集 |
| communication/ | 36 | 40 | ✅ 超集 |
| misc/ | 30 | 34 | ✅ 超集 |
| script-engine/ | 41 | 52 | ✅ 超集 |
| transparency/ | 13 | 24 | ✅ 超集 |
| driver-loader/ | 6 | 6 | ✅ 完成 |
| common/ | 38 | 38 | ✅ 完成 |
| export/ | 57 | 64 | ✅ 超集 |
| commands/ | 279 | 155 | 56% |
| objects/ | 2 | 3 | ✅ 超集 |
| rev/ | 1 | 4 | ✅ 超集 |
| tests/ | 4 | 3 | 75% |
| pdbex/ (Go独有) | 0 | 131 | N/A |
| 总计 | 647 | 796 | — |
| C++ 函数 | Go 实现 | 状态 |
|---|---|---|
| SetTextMessageCallback | Libhyperdbg.SetTextMessageCallback | ✅ |
| SetTextMessageCallbackUsingSharedBuffer | Libhyperdbg.SetTextMessageCallbackUsingSharedBuffer | ✅ |
| UnsetTextMessageCallback | Libhyperdbg.UnsetTextMessageCallback | ✅ |
| ShowMessages | Libhyperdbg.ShowMessages | ✅ |
| ReadIrpBasedBuffer | — | ⏭ 跳过(需IOCTL) |
| IrpBasedBufferThread | — | ⏭ 跳过(需IOCTL) |
| SetDebugPrivilege | SetDebugPrivilege | ✅ |
| HyperDbgInstallVmmDriver | Libhyperdbg.HyperDbgInstallVmmDriver | ✅ |
| HyperDbgStopDriver | Libhyperdbg.HyperDbgStopDriver | ✅ |
| HyperDbgStopVmmDriver | Libhyperdbg.HyperDbgStopVmmDriver | ✅ |
| HyperDbgUninstallDriver | Libhyperdbg.HyperDbgUninstallDriver | ✅ |
| HyperDbgUninstallVmmDriver | Libhyperdbg.HyperDbgUninstallVmmDriver | ✅ |
| HyperDbgCreateHandleFromVmmModule | Libhyperdbg.CreateHandleFromVmmModule | ✅ |
| HyperDbgUnloadVmm | Libhyperdbg.UnloadVmm | ✅ |
| HyperDbgLoadVmmModule | Libhyperdbg.LoadVmmModule | ✅ |
Go 额外函数: NewLibhyperdbg, UdUninitializeUserDebugger, SetupPathForFileName, SetCustomDriverPath, UseDefaultDriverPath, IsDriverLoaded, GetDeviceHandle
| C++ 文件 | 函数数 | Go 文件 | 函数数 |
|---|---|---|---|
| kd.cpp | 60 | kd.go | 56 |
| kernel-listening.cpp | 4 | kernel_listening.go | 54 |
Go端将C++内联逻辑拆分为33个独立handle*Packet函数,功能覆盖完整。
| C++ 文件 | 函数数 | Go 文件 | 函数数 |
|---|---|---|---|
| ud.cpp | 22 | ud.go | 24 |
| user-listening.cpp | 1 | user_listening.go | 3 |
| pe-parser.cpp | 7 | pe_parser.go | 10 |
Go 额外函数: UdAttachToProcess, UdUninitializeUserDebugger, ParsePeHeaders, GetEntryPoint, GetImageBase, IsPeFileValid, Disassemble64, Disassemble32
| C++ 文件 | 函数数 | Go 文件 | 函数数 |
|---|---|---|---|
| debugger.cpp | 14 | debugger.go | 47 |
| interpreter.cpp | 11 | interpreter.go | 8 |
| break-control.cpp | 1 | break_control.go | 7 |
| steppings.cpp | 5 | steppings.go | 10 |
| — | — | error_codes.go | 1 |
Go 额外函数: 大量序列化/反序列化辅助函数、getter/setter
| C++ 文件 | 函数数 | Go 文件 | 函数数 |
|---|---|---|---|
| namedpipe.cpp | 12 | namedpipe.go | 8 |
| remote-connection.cpp | 6 | remote_connection.go | 11 |
| tcpclient.cpp | 5 | tcp.go | 12 |
| tcpserver.cpp | 4 | — | — |
| forwarding.cpp | 9 | forwarding.go | 9 |
| C++ 文件 | 函数数 | Go 文件 | 函数数 |
|---|---|---|---|
| assembler.cpp | 3 | assembler.go | 7 |
| callstack.cpp | 2 | callstack.go | 3 |
| disassembler.cpp | 10 | disassembler.go | 8 |
| pci-id.cpp | 9 | pci_id.go | 10 |
| readmem.cpp | 6 | readmem.go | 6 |
| C++ 文件 | 函数数 | Go 文件 | 函数数 |
|---|---|---|---|
| script-engine.cpp | 2 | script_engine.go | 14 |
| script-engine-wrapper.cpp | 25 | script_engine_wrapper.go | 26 |
| symbol.cpp | 14 | symbol.go | 22 |
新增包装器函数:
- ✅ ConvertFileToPdbPathWrapper
- ✅ SymbolInitLoadWrapper
- ✅ ShowDataBasedOnSymbolTypesWrapper
- ✅ SymbolAbortLoadingWrapper
- ✅ ConvertFileToPdbFileAndGuidAndAgeDetailsWrapper
- ✅ ParseWrapper
- ✅ PrintSymbolBufferWrapper
- ✅ AutomaticStatementsTestWrapper
- ✅ AllocateStructForCasting
- ✅ TestParser / TestParserForHwdbg
- ✅ GetHead / GetSize / GetPointer / RemoveSymbolBuffer
- ✅ SearchSymbolForMaskWrapper
- ✅ GetFieldOffsetWrapper
- ✅ GetDataTypeSizeWrapper
- ✅ CreateSymbolTableForDisassemblerWrapper
- ✅ EvalUInt64StyleExpressionWrapper
| C++ 文件 | 函数数 | Go 文件 | 函数数 |
|---|---|---|---|
| transparency.cpp | 6 | transparency.go | 18 |
| gaussian-rng.cpp | 7 | gaussian_rng.go | 6 |
| C++ 函数 | Go 实现 | 状态 |
|---|---|---|
| InstallDriver | InstallDriver | ✅ |
| ManageDriver | ManageDriver | ✅ |
| RemoveDriver | RemoveDriver | ✅ |
| StartDriver | StartDriver | ✅ |
| StopDriver | StopDriver | ✅ |
| SetupPathForFileName | SetupPathForFileName | ✅ |
| C++ 函数 | Go 实现 | 状态 |
|---|---|---|
| PrintBits | PrintBits | ✅ |
| ReplaceAll | ReplaceAll | ✅ |
| Split | Split | ✅ |
| IsNumber | IsNumber | ✅ |
| IsHexNotation | IsHexNotation | ✅ |
| IsDecimalNotation | IsDecimalNotation | ✅ |
| HexToBytes | HexToBytes | ✅ |
| ConvertStringToUInt64 | ConvertStringToUInt64 | ✅ |
| SeparateTo64BitValue | SeparateTo64BitValue | ✅ |
| SetPrivilege | SetPrivilegeForToken | ✅ |
| IsFileExistA/W | IsFileExist | ✅ |
| IsEmptyString | IsEmptyString | ✅ |
| GetConfigFilePath | GetConfigFilePath | ✅ |
| ListDirectory | ListDirectory | ✅ |
| StringToWString | StringToWString | ✅ |
| FindCaseInsensitive/W | FindCaseInsensitive | ✅ |
| ConvertStringVectorToCharPointerArray | ConvertStringVectorToCharPointerArray | ✅ |
| CommonCpuidInstruction | CpuId (cpu.go) | ✅ |
| CheckCpuSupportRtm | CheckCpuSupportRtm | ✅ |
| CheckAddressCanonicality | CheckAddressCanonicality | ✅ |
| CheckAddressValidityUsingTsx | CheckAddressValidityUsingTsx | ✅ |
| CheckAccessValidityAndSafety | CheckAccessValidityAndSafety | ✅ |
| HasEnding | HasEnding | ✅ |
| ValidateIP | ValidateIP | ✅ |
| ltrim/rtrim/Trim | Ltrim/Rtrim/Trim | ✅ |
| RemoveSpaces | RemoveSpaces | ✅ |
| GetCaseSensitiveStringFromCommandToken | (移到core) | ✅ |
| CompareLowerCaseStrings | (移到core) | ✅ |
| IsTokenBracketString | (移到core) | ✅ |
| GetLowerStringFromCommandToken | GetLowerStringFromCommandToken | ✅ |
| VmxSupportDetection | VmxSupportDetection (cpu.go) | ✅ |
| SpinlockTryLock | SpinlockTryLock | ✅ |
| SpinlockLock | SpinlockLock | ✅ |
| SpinlockUnlock | SpinlockUnlock | ✅ |
| InitializeListHead | InitializeListHead | ✅ |
| InsertHeadList | InsertHeadList | ✅ |
| InsertTailList | InsertTailList | ✅ |
| RemoveEntryList | RemoveEntryList | ✅ |
| IsListEmpty | IsListEmpty | ✅ |
| PopEntryList | PopEntryList | ✅ |
Go 额外函数: ConvertStringToUInt32, ConvertTokenToUInt64, ConvertTokenToUInt32, Log2Ceil, IsValidIp4, Getx86VirtualAddressWidth
| C++ 函数 | Go 实现 | 状态 |
|---|---|---|
| hyperdbg_u_detect_vmx_support | DetectVmxSupport | ✅ |
| hyperdbg_u_read_vendor_string | ReadVendorString | ✅ |
| hyperdbg_u_load_vmm | LoadVmm | ✅ |
| hyperdbg_u_unload_vmm | UnloadVmm | ✅ |
| hyperdbg_u_install_vmm_driver | InstallVmmDriver | ✅ |
| hyperdbg_u_uninstall_vmm_driver | UninstallVmmDriver | ✅ |
| hyperdbg_u_stop_vmm_driver | StopVmmDriver | ✅ |
| hyperdbg_u_run_command | RunCommand | ✅ |
| hyperdbg_u_test_command_parser | TestCommandParser | ✅ |
| hyperdbg_u_test_command_parser_show_tokens | TestCommandParserShowTokens | ✅ |
| hyperdbg_u_show_signature | ShowSignature | ✅ |
| hyperdbg_u_set_text_message_callback | SetTextMessageCallback | ✅ |
| hyperdbg_u_set_text_message_callback_using_shared_buffer | SetTextMessageCallbackUsingSharedBuffer | ✅ |
| hyperdbg_u_unset_text_message_callback | UnsetTextMessageCallback | ✅ |
| hyperdbg_u_script_read_file_and_execute_commandline | ScriptReadFileAndExecuteCommandline | ✅ |
| hyperdbg_u_continue_previous_command | ContinuePreviousCommand | ✅ |
| hyperdbg_u_check_multiline_command | CheckMultilineCommand | ✅ |
| hyperdbg_u_connect_local_debugger | ConnectLocalDebugger | ✅ |
| hyperdbg_u_connect_remote_debugger | ConnectRemoteDebugger | ✅ |
| hyperdbg_u_continue_debuggee | ContinueDebuggee | ✅ |
| hyperdbg_u_pause_debuggee | PauseDebuggee | ✅ |
| hyperdbg_u_set_breakpoint | SetBreakpoint | ✅ |
| hyperdbg_u_set_custom_driver_path | SetCustomDriverPath | ✅ |
| hyperdbg_u_use_default_driver_path | UseDefaultDriverPath | ✅ |
| hyperdbg_u_read_memory | ReadMemory | ✅ |
| hyperdbg_u_show_memory_or_disassemble | ShowMemoryOrDisassemble | ✅ |
| hyperdbg_u_read_all_registers | ReadAllRegisters | ✅ |
| hyperdbg_u_read_target_register | ReadTargetRegister | ✅ |
| hyperdbg_u_write_target_register | WriteTargetRegister | ✅ |
| hyperdbg_u_show_all_registers | ShowAllRegisters | ✅ |
| hyperdbg_u_show_target_register | ShowTargetRegister | ✅ |
| hyperdbg_u_write_memory | WriteMemory | ✅ |
| hyperdbg_u_get_kernel_base | GetKernelBase | ✅ |
| hyperdbg_u_connect_remote_debugger_using_com_port | ConnectRemoteDebuggerUsingComPort | ✅ |
| hyperdbg_u_connect_remote_debugger_using_named_pipe | ConnectRemoteDebuggerUsingNamedPipe | ✅ |
| hyperdbg_u_debug_close_remote_debugger | DebugCloseRemoteDebugger | ✅ |
| hyperdbg_u_connect_current_debugger_using_com_port | ConnectCurrentDebuggerUsingComPort | ✅ |
| hyperdbg_u_start_process | StartProcess | ✅ |
| hyperdbg_u_start_process_with_args | StartProcessWithArgs | ✅ |
| hyperdbg_u_assemble_get_length | AssembleGetLength | ✅ |
| hyperdbg_u_assemble | Assemble | ✅ |
| hyperdbg_u_setup_path_for_filename | SetupPathForFilename | ✅ |
| hyperdbg_u_stepping_instrumentation_step_in | SteppingInstrumentationStepIn | ✅ |
| hyperdbg_u_stepping_regular_step_in | SteppingRegularStepIn | ✅ |
| hyperdbg_u_stepping_step_over | SteppingStepOver | ✅ |
| hyperdbg_u_stepping_instrumentation_step_in_for_tracking | SteppingInstrumentationStepInForTracking | ✅ |
| hyperdbg_u_stepping_step_over_for_gu | SteppingStepOverForGu | ✅ |
| hyperdbg_u_get_local_apic | GetLocalApic | ✅ |
| hyperdbg_u_get_io_apic | GetIoApic | ✅ |
| hyperdbg_u_get_idt_entry | GetIdtEntry | ✅ |
| hyperdbg_u_perform_smi_operation | PerformSmiOperation | ✅ |
| hwdbg_script_run_script | HwdbgScriptRunScript | ✅ |
| hwdbg_script_engine_wrapper_test_parser | HwdbgScriptEngineWrapperTestParser | ✅ |
| hyperdbg_u_enable_transparent_mode | EnableTransparentMode | ✅ |
| hyperdbg_u_disable_transparent_mode | DisableTransparentMode | ✅ |
| hyperdbg_u_run_script | RunScript | ✅ |
| hyperdbg_u_eval_expression | EvalExpression | ✅ |
Go 额外函数 (common_export.go): ConvertStringToUInt64, SeparateTo64BitValue, IsHexNotation, IsDecimalNotation, IsNumber, HexToBytes, Split
更新日期: 2026-04-12
核心 IOCTL 通信层已完成:
| 命令类别 | 文件 | 状态 |
|---|---|---|
| Meta命令 | meta/meta_commands.go |
✅ Attach/Detach/PageIn已实现 |
| 调试命令 | debugging/debugging_commands.go |
✅ Bp/G/Pause/R/S已实现 |
| 扩展命令 | extension/extension_commands.go |
✅ Apic/Idt/Smi已实现 |
已实现的 IOCTL 通信方法:
CommandAttachRequest()→core.DebuggerCore.AttachToProcess()CommandDetachRequest()→core.DebuggerCore.DetachFromProcess()CommandBpRequest()→core.DebuggerCore.SetBreakpoint()CommandGRequest()→core.DebuggerCore.ContinueDebuggee()CommandPauseRequest()→core.DebuggerCore.PauseDebuggee()CommandRRequest()→core.DebuggerCore.ReadMemory()CommandSRequest()→core.DebuggerCore.SearchMemory()CommandPageInRequest()→core.DebuggerCore.BringPagesIn()CommandApicRequest()→core.DebuggerCore.PerformActionsOnApic()HyperDbgGetIdtEntry()→core.DebuggerCore.QueryIdtEntry()HyperDbgPerformSmiOperation()→core.DebuggerCore.PerformSmiOperation()
| C++ 子目录 | 函数数 | Go 文件 | 函数数 |
|---|---|---|---|
| debugging-commands/ (39个cpp) | 168 | debugging_commands.go | 56 |
| extension-commands/ (34个cpp) | 88 | extension_commands.go | 44 |
| meta-commands/ (24个cpp) | 56 | meta_commands.go | 42 |
| hwdbg-commands/ (2个cpp) | 5 | — | 0 |
注: 命令函数为薄包装层(callback驱动),实际IOCTL通信逻辑待完善
C++ 2个函数 → Go 3个函数
C++ 1个函数 → Go 4个函数
C++ 4个函数 → Go 3个函数
| Go 文件 | 函数数 |
|---|---|
| pdbex.go | 31 |
| symbol.go | 8 |
| reconstructor.go | 20 |
| source_mapper.go | 19 |
| pe_integration.go | 22 |
| dia_windows.go | 29 |
| dia_vtable_gen.go | 2 |
| 小计 | 131 |
- 新增
libhyperdbg_export.go,实现全部 57 个 C++ 导出函数的 Go 对应版本 - 涵盖: 驱动管理、命令执行、消息回调、脚本执行、调试器连接、内存操作、寄存器操作、单步执行、APIC/IDT/SMI 扩展、透明模式、hwdbg
- 新增
SetTextMessageCallback/SetTextMessageCallbackUsingSharedBuffer/UnsetTextMessageCallback - 新增
ShowMessages核心消息显示函数 - 新增
HyperDbgInstallVmmDriver/HyperDbgStopDriver/HyperDbgStopVmmDriver/HyperDbgUninstallDriver/HyperDbgUninstallVmmDriver - 新增
SetupPathForFileName/SetCustomDriverPath/UseDefaultDriverPath - 新增
IsDriverLoaded/GetDeviceHandle
- 新增
SetPrivilege/IsFileExist/IsEmptyString/GetConfigFilePath - 新增
ListDirectory/StringToWString/FindCaseInsensitive - 新增
ConvertStringVectorToCharPointerArray/CheckCpuSupportRtm - 新增
CheckAddressCanonicality/CheckAddressValidityUsingTsx/CheckAccessValidityAndSafety - 新增
HasEnding/ValidateIP/Ltrim/Rtrim/Trim/RemoveSpaces - 新增
GetLowerStringFromCommandToken/ConvertStringToUInt32 - 新增
ConvertTokenToUInt64/ConvertTokenToUInt32/Log2Ceil/IsValidIp4 - cpu.go 新增
Getx86VirtualAddressWidth/SetPrivilegeForToken
- script_engine.go 新增
EvalWithRegisters/ExecuteSingleExpression - script_engine_wrapper.go 新增全部缺失的包装器函数
- symbol.go 新增
ConvertFileToPdbPath/SymbolInitLoad/ShowDataBasedOnSymbolTypes - symbol.go 新增
AbortLoading/ConvertFileToPdbFileAndGuidAndAgeDetails - symbol.go 新增
SearchSymbolForMask/GetFieldOffset/GetDataTypeSize - symbol.go 新增
CreateSymbolTableForDisassembler/SymbolConvertNameOrExprToAddress/DeleteSymTable
- 新增
SetupPathForFileName
- debugging_commands.go 新增: CommandARequest, CommandGgRequest, CommandShowMemoryRequest, CommandDisassembleRequest, CommandEditMemoryRequest, CommandReadMemoryAndDisassembleRequest, CommandWriteMemoryRequest, CommandRegisterShowRequest, CommandRegisterReadRequest, CommandRegisterWriteRequest
- extension_commands.go 新增: CommandEpthook2Request, CommandMsrReadEventRequest, CommandMsrWriteEventRequest, CommandTscRequestExtended, CommandPteRequestExtended, CommandVmcallRequestExtended
- meta_commands.go 新增: CommandSymReloadRequest, CommandSymDownloadRequest, CommandSymLoadRequestExtended, CommandSymUnloadRequestExtended, CommandProcessAttachRequest, CommandProcessDetachRequest, CommandTcpListenRequest, CommandTcpConnectRequest, CommandTcpDisconnectRequest, CommandSerialConnectRequest, CommandNamedPipeConnectRequest, CommandProcessInterpretRequest, CommandCloseRequest