From c5ba5ccd899dd0d7eb0971a430ec5f52f6f9c74e Mon Sep 17 00:00:00 2001 From: sina Date: Tue, 28 Apr 2026 14:39:54 +0200 Subject: [PATCH] compile HyperDbg SDK for Linux --- hyperdbg/hyperhv/code/interface/Export.c | 4 +- hyperdbg/hyperhv/code/vmm/vmx/CrossVmcalls.c | 2 +- hyperdbg/hyperhv/code/vmm/vmx/Hv.c | 4 +- hyperdbg/hyperhv/code/vmm/vmx/Vmcall.c | 2 +- hyperdbg/hyperhv/code/vmm/vmx/Vmx.c | 2 +- hyperdbg/hyperhv/header/vmm/vmx/Hv.h | 2 +- hyperdbg/hyperhv/header/vmm/vmx/Vmcall.h | 2 +- hyperdbg/hyperhv/pch.h | 1 - hyperdbg/hyperkd/header/pch.h | 1 - hyperdbg/hyperlog/header/pch.h | 1 - hyperdbg/hypertrace/code/lbr/Lbr.c | 16 +- hyperdbg/hypertrace/header/pch.h | 1 - hyperdbg/include/SDK/headers/BasicTypes.h | 90 +++++++++--- hyperdbg/include/SDK/headers/Constants.h | 46 +++--- hyperdbg/include/SDK/headers/DataTypes.h | 20 ++- hyperdbg/include/SDK/headers/LbrDefinitions.h | 2 +- .../include/SDK/headers/RequestStructures.h | 138 +++++++----------- hyperdbg/include/SDK/modules/HyperTrace.h | 4 +- .../platform/general/header/GeneralTypes.h | 5 - hyperdbg/libhyperdbg/code/app/libhyperdbg.cpp | 2 +- hyperdbg/linux/mock/pch.h | 5 + 21 files changed, 185 insertions(+), 165 deletions(-) diff --git a/hyperdbg/hyperhv/code/interface/Export.c b/hyperdbg/hyperhv/code/interface/Export.c index 649764d3..64e62c51 100644 --- a/hyperdbg/hyperhv/code/interface/Export.c +++ b/hyperdbg/hyperhv/code/interface/Export.c @@ -453,7 +453,7 @@ VmFuncSetDebugctlVmcallOnTargetCore(UINT64 Value) } /** - * @brief Set the guest state of MSR_LBR_SELECT + * @brief Set the guest state of MSR_LEGACY_LBR_SELECT * @param FilterOptions * * @return VOID @@ -465,7 +465,7 @@ VmFuncSetLbrSelect(UINT64 FilterOptions) } /** - * @brief Set the guest state of MSR_LBR_SELECT on the target core from VMCS using VMCALL + * @brief Set the guest state of MSR_LEGACY_LBR_SELECT on the target core from VMCS using VMCALL * @param FilterOptions * * @return VOID diff --git a/hyperdbg/hyperhv/code/vmm/vmx/CrossVmcalls.c b/hyperdbg/hyperhv/code/vmm/vmx/CrossVmcalls.c index 9201ca31..77756fd2 100644 --- a/hyperdbg/hyperhv/code/vmm/vmx/CrossVmcalls.c +++ b/hyperdbg/hyperhv/code/vmm/vmx/CrossVmcalls.c @@ -38,7 +38,7 @@ CrossVmcallSetDebugctlVmcallOnTargetCore(UINT64 Value) } /** - * @brief Set the guest state of MSR_LBR_SELECT on the target core from VMCS using VMCALL + * @brief Set the guest state of MSR_LEGACY_LBR_SELECT on the target core from VMCS using VMCALL * @param FilterOptions * * @return VOID diff --git a/hyperdbg/hyperhv/code/vmm/vmx/Hv.c b/hyperdbg/hyperhv/code/vmm/vmx/Hv.c index 4699da72..95325dd9 100644 --- a/hyperdbg/hyperhv/code/vmm/vmx/Hv.c +++ b/hyperdbg/hyperhv/code/vmm/vmx/Hv.c @@ -1507,14 +1507,14 @@ HvSetDebugctl(UINT64 Value) /** * @brief Set LBR selector * @details If VMM is active, this should be done in vmx-root, otherwise, it doesn't work - * @param FilterOptions The value to write on MSR_LBR_SELECT + * @param FilterOptions The value to write on MSR_LEGACY_LBR_SELECT * * @return VOID */ VOID HvSetLbrSelect(UINT64 FilterOptions) { - __writemsr(MSR_LBR_SELECT, FilterOptions); + __writemsr(MSR_LEGACY_LBR_SELECT, FilterOptions); } /** diff --git a/hyperdbg/hyperhv/code/vmm/vmx/Vmcall.c b/hyperdbg/hyperhv/code/vmm/vmx/Vmcall.c index 97d8a788..a2389482 100644 --- a/hyperdbg/hyperhv/code/vmm/vmx/Vmcall.c +++ b/hyperdbg/hyperhv/code/vmm/vmx/Vmcall.c @@ -558,7 +558,7 @@ VmxVmcallHandler(VIRTUAL_MACHINE_STATE * VCpu, case VMCALL_SET_MSR_LBR_SELECT: { // - // Perform setting MSR_LBR_SELECT + // Perform setting MSR_LEGACY_LBR_SELECT // HvSetLbrSelect(OptionalParam1); VmcallStatus = STATUS_SUCCESS; diff --git a/hyperdbg/hyperhv/code/vmm/vmx/Vmx.c b/hyperdbg/hyperhv/code/vmm/vmx/Vmx.c index 6053f9d0..1f7ed6e2 100644 --- a/hyperdbg/hyperhv/code/vmm/vmx/Vmx.c +++ b/hyperdbg/hyperhv/code/vmm/vmx/Vmx.c @@ -1203,7 +1203,7 @@ VmxVmxoff(VIRTUAL_MACHINE_STATE * VCpu) // // Now that VMX is OFF, we have to unset vmx-enable bit on cr4 // - __writecr4(__readcr4() & (~X86_CR4_VMXE)); + __writecr4(__readcr4() & (~REG_CR4_VMXE)); } /** diff --git a/hyperdbg/hyperhv/header/vmm/vmx/Hv.h b/hyperdbg/hyperhv/header/vmm/vmx/Hv.h index 4b23ff43..412659ed 100644 --- a/hyperdbg/hyperhv/header/vmm/vmx/Hv.h +++ b/hyperdbg/hyperhv/header/vmm/vmx/Hv.h @@ -481,7 +481,7 @@ HvSetDebugctl(UINT64 Value); /** * @brief Set LBR selector * @details If VMM is active, this should be done in vmx-root, otherwise, it doesn't work - * @param FilterOptions The value to write on MSR_LBR_SELECT + * @param FilterOptions The value to write on MSR_LEGACY_LBR_SELECT * * @return VOID */ diff --git a/hyperdbg/hyperhv/header/vmm/vmx/Vmcall.h b/hyperdbg/hyperhv/header/vmm/vmx/Vmcall.h index acec4776..7b4af5b1 100644 --- a/hyperdbg/hyperhv/header/vmm/vmx/Vmcall.h +++ b/hyperdbg/hyperhv/header/vmm/vmx/Vmcall.h @@ -334,7 +334,7 @@ #define VMCALL_SET_VMCS_DEBUGCTL 0x00000033 /** - * @brief VMCALL to set MSR_LBR_SELECT using WRMSR + * @brief VMCALL to set MSR_LEGACY_LBR_SELECT using WRMSR * */ #define VMCALL_SET_MSR_LBR_SELECT 0x00000034 diff --git a/hyperdbg/hyperhv/pch.h b/hyperdbg/hyperhv/pch.h index 55611260..7f939959 100644 --- a/hyperdbg/hyperhv/pch.h +++ b/hyperdbg/hyperhv/pch.h @@ -60,7 +60,6 @@ // // Platform independent headers // -#include "platform/general/header/GeneralTypes.h" #include "platform/kernel/header/PlatformMem.h" // diff --git a/hyperdbg/hyperkd/header/pch.h b/hyperdbg/hyperkd/header/pch.h index 56c3ba27..b6b331bc 100644 --- a/hyperdbg/hyperkd/header/pch.h +++ b/hyperdbg/hyperkd/header/pch.h @@ -84,7 +84,6 @@ // // Platform independent headers // -#include "platform/general/header/GeneralTypes.h" #include "platform/kernel/header/PlatformMem.h" // diff --git a/hyperdbg/hyperlog/header/pch.h b/hyperdbg/hyperlog/header/pch.h index ea05698e..45be603f 100644 --- a/hyperdbg/hyperlog/header/pch.h +++ b/hyperdbg/hyperlog/header/pch.h @@ -48,5 +48,4 @@ // // Platform independent headers // -#include "platform/general/header/GeneralTypes.h" #include "platform/kernel/header/PlatformMem.h" diff --git a/hyperdbg/hypertrace/code/lbr/Lbr.c b/hyperdbg/hypertrace/code/lbr/Lbr.c index 036aec6a..0d14adf4 100644 --- a/hyperdbg/hypertrace/code/lbr/Lbr.c +++ b/hyperdbg/hypertrace/code/lbr/Lbr.c @@ -176,7 +176,7 @@ LbrFlush() // // - // Set LBR filter (MSR_LBR_SELECT) to 0 to capture all branch types (reset) + // Set LBR filter (MSR_LEGACY_LBR_SELECT) to 0 to capture all branch types (reset) // if (g_RunningOnHypervisorEnvironment) { @@ -189,21 +189,21 @@ LbrFlush() if (IsOnVmxRootMode) { // - // It is on VMX-root mode, run it directly to set the MSR_LBR_SELECT MSR value + // It is on VMX-root mode, run it directly to set the MSR_LEGACY_LBR_SELECT MSR value // g_Callbacks.VmFuncSetLbrSelect(0); } else { // - // It is not on VMX-root mode, so we need to perform a VMCALL to set the MSR_LBR_SELECT MSR value on the target core + // It is not on VMX-root mode, so we need to perform a VMCALL to set the MSR_LEGACY_LBR_SELECT MSR value on the target core // g_Callbacks.VmFuncSetLbrSelectVmcallOnTargetCore(0); } } else { - xwrmsr(MSR_LBR_SELECT, 0); + xwrmsr(MSR_LEGACY_LBR_SELECT, 0); } // @@ -238,7 +238,7 @@ LbrStart(UINT64 FilterOptions) } // - // Set LBR filter (MSR_LBR_SELECT) to selection mask + // Set LBR filter (MSR_LEGACY_LBR_SELECT) to selection mask // if (g_RunningOnHypervisorEnvironment) { @@ -251,21 +251,21 @@ LbrStart(UINT64 FilterOptions) if (IsOnVmxRootMode) { // - // It is on VMX-root mode, run it directly to set the MSR_LBR_SELECT MSR value + // It is on VMX-root mode, run it directly to set the MSR_LEGACY_LBR_SELECT MSR value // g_Callbacks.VmFuncSetLbrSelect(FilterOptions); } else { // - // It is not on VMX-root mode, so we need to perform a VMCALL to set the MSR_LBR_SELECT MSR value on the target core + // It is not on VMX-root mode, so we need to perform a VMCALL to set the MSR_LEGACY_LBR_SELECT MSR value on the target core // g_Callbacks.VmFuncSetLbrSelectVmcallOnTargetCore(FilterOptions); } } else { - xwrmsr(MSR_LBR_SELECT, FilterOptions); + xwrmsr(MSR_LEGACY_LBR_SELECT, FilterOptions); } // diff --git a/hyperdbg/hypertrace/header/pch.h b/hyperdbg/hypertrace/header/pch.h index 22739483..9fa1eded 100644 --- a/hyperdbg/hypertrace/header/pch.h +++ b/hyperdbg/hypertrace/header/pch.h @@ -55,7 +55,6 @@ // // Platform independent headers // -#include "platform/general/header/GeneralTypes.h" #include "platform/kernel/header/PlatformMem.h" // diff --git a/hyperdbg/include/SDK/headers/BasicTypes.h b/hyperdbg/include/SDK/headers/BasicTypes.h index 95e322f8..7e5f1236 100644 --- a/hyperdbg/include/SDK/headers/BasicTypes.h +++ b/hyperdbg/include/SDK/headers/BasicTypes.h @@ -11,43 +11,83 @@ */ #pragma once -#pragma warning(disable : 4201) // Suppress nameless struct/union warning +#ifdef _WIN32 // Windows + +# pragma warning(disable : 4201) // Suppress nameless struct/union warning + +#endif ////////////////////////////////////////////////// // Basic Datatypes // ////////////////////////////////////////////////// typedef unsigned long long QWORD; -typedef unsigned __int64 UINT64, *PUINT64; -typedef unsigned long DWORD; typedef int BOOL; -typedef unsigned char BYTE; -typedef unsigned short WORD; -typedef int INT; -typedef unsigned int UINT; -typedef unsigned int * PUINT; -typedef unsigned __int64 ULONG64, *PULONG64; -typedef unsigned __int64 DWORD64, *PDWORD64; -typedef char CHAR; -typedef wchar_t WCHAR; -#define VOID void -typedef unsigned char UCHAR; +typedef short SHORT; +typedef long LONG; + typedef unsigned short USHORT; typedef unsigned long ULONG; -typedef UCHAR BOOLEAN; // winnt -typedef BOOLEAN * PBOOLEAN; // winnt +typedef char CHAR; +typedef unsigned char UCHAR; +typedef UCHAR BOOLEAN; +typedef BOOLEAN * PBOOLEAN; + +typedef unsigned long DWORD; +typedef unsigned long ULONG; +typedef unsigned char BYTE; +typedef unsigned short USHORT; +typedef unsigned short WORD; +typedef int INT; +typedef unsigned int UINT; +typedef unsigned int * PUINT; + +typedef int INT; +typedef signed char INT8, *PINT8; +typedef signed short INT16, *PINT16; +typedef signed int INT32, *PINT32; + +typedef unsigned char UINT8, *PUINT8; +typedef unsigned short UINT16, *PUINT16; +typedef unsigned int UINT32, *PUINT32; + +typedef void * PVOID; + +#ifdef _WIN32 // Windows -typedef signed char INT8, *PINT8; -typedef signed short INT16, *PINT16; -typedef signed int INT32, *PINT32; typedef signed __int64 INT64, *PINT64; -typedef unsigned char UINT8, *PUINT8; -typedef unsigned short UINT16, *PUINT16; -typedef unsigned int UINT32, *PUINT32; typedef unsigned __int64 UINT64, *PUINT64; +typedef unsigned __int64 ULONG64, *PULONG64; +typedef unsigned __int64 DWORD64, *PDWORD64; +typedef wchar_t WCHAR; + +#elif defined(__linux__) // Linux + +# include + +typedef void VOID; + +typedef size_t SIZE_T; + +typedef signed long long INT64, *PINT64; +typedef unsigned long long UINT64, *PUINT64; + +typedef unsigned long long ULONG64, *PULONG64; +typedef unsigned long long DWORD64, *PDWORD64; + +typedef UINT16 wchar_t; +typedef wchar_t WCHAR; + +typedef PVOID HANDLE; +typedef HANDLE * PHANDLE; + +typedef long long time_t; + +#endif + #define NULL_ZERO 0 #define NULL64_ZERO 0ull @@ -63,6 +103,12 @@ typedef unsigned __int64 UINT64, *PUINT64; #define SECOND_LOWER_8_BITS 0x000000000000ff00 #define UPPER_48_BITS_AND_LOWER_8_BITS 0xffffffffffff00ff +#if defined(__linux__) // Linux + +# define MAX_PATH 260 + +#endif + // // DO NOT FUCKING TOUCH THIS STRUCTURE WITHOUT COORDINATION WITH SINA // diff --git a/hyperdbg/include/SDK/headers/Constants.h b/hyperdbg/include/SDK/headers/Constants.h index a32b1151..94a4252f 100644 --- a/hyperdbg/include/SDK/headers/Constants.h +++ b/hyperdbg/include/SDK/headers/Constants.h @@ -611,34 +611,34 @@ typedef enum _SEGMENT_REGISTERS /** * @brief Intel CPU flags in CR0 */ -#define X86_CR0_PE 0x00000001 /* Enable Protected Mode (RW) */ -#define X86_CR0_MP 0x00000002 /* Monitor Coprocessor (RW) */ -#define X86_CR0_EM 0x00000004 /* Require FPU Emulation (RO) */ -#define X86_CR0_TS 0x00000008 /* Task Switched (RW) */ -#define X86_CR0_ET 0x00000010 /* Extension type (RO) */ -#define X86_CR0_NE 0x00000020 /* Numeric Error Reporting (RW) */ -#define X86_CR0_WP 0x00010000 /* Supervisor Write Protect (RW) */ -#define X86_CR0_AM 0x00040000 /* Alignment Checking (RW) */ -#define X86_CR0_NW 0x20000000 /* Not Write-Through (RW) */ -#define X86_CR0_CD 0x40000000 /* Cache Disable (RW) */ -#define X86_CR0_PG 0x80000000 /* Paging */ +#define REG_CR0_PE 0x00000001 /* Enable Protected Mode (RW) */ +#define REG_CR0_MP 0x00000002 /* Monitor Coprocessor (RW) */ +#define REG_CR0_EM 0x00000004 /* Require FPU Emulation (RO) */ +#define REG_CR0_TS 0x00000008 /* Task Switched (RW) */ +#define REG_CR0_ET 0x00000010 /* Extension type (RO) */ +#define REG_CR0_NE 0x00000020 /* Numeric Error Reporting (RW) */ +#define REG_CR0_WP 0x00010000 /* Supervisor Write Protect (RW) */ +#define REG_CR0_AM 0x00040000 /* Alignment Checking (RW) */ +#define REG_CR0_NW 0x20000000 /* Not Write-Through (RW) */ +#define REG_CR0_CD 0x40000000 /* Cache Disable (RW) */ +#define REG_CR0_PG 0x80000000 /* Paging */ /** * @brief Intel CPU features in CR4 * */ -#define X86_CR4_VME 0x0001 /* enable vm86 extensions */ -#define X86_CR4_PVI 0x0002 /* virtual interrupts flag enable */ -#define X86_CR4_TSD 0x0004 /* disable time stamp at ipl 3 */ -#define X86_CR4_DE 0x0008 /* enable debugging extensions */ -#define X86_CR4_PSE 0x0010 /* enable page size extensions */ -#define X86_CR4_PAE 0x0020 /* enable physical address extensions */ -#define X86_CR4_MCE 0x0040 /* Machine check enable */ -#define X86_CR4_PGE 0x0080 /* enable global pages */ -#define X86_CR4_PCE 0x0100 /* enable performance counters at ipl 3 */ -#define X86_CR4_OSFXSR 0x0200 /* enable fast FPU save and restore */ -#define X86_CR4_OSXMMEXCPT 0x0400 /* enable unmasked SSE exceptions */ -#define X86_CR4_VMXE 0x2000 /* enable VMX */ +#define REG_CR4_VME 0x0001 /* enable vm86 extensions */ +#define REG_CR4_PVI 0x0002 /* virtual interrupts flag enable */ +#define REG_CR4_TSD 0x0004 /* disable time stamp at ipl 3 */ +#define REG_CR4_DE 0x0008 /* enable debugging extensions */ +#define REG_CR4_PSE 0x0010 /* enable page size extensions */ +#define REG_CR4_PAE 0x0020 /* enable physical address extensions */ +#define REG_CR4_MCE 0x0040 /* Machine check enable */ +#define REG_CR4_PGE 0x0080 /* enable global pages */ +#define REG_CR4_PCE 0x0100 /* enable performance counters at ipl 3 */ +#define REG_CR4_OSFXSR 0x0200 /* enable fast FPU save and restore */ +#define REG_CR4_OSXMMEXCPT 0x0400 /* enable unmasked SSE exceptions */ +#define REG_CR4_VMXE 0x2000 /* enable VMX */ /* * @brief Segment register and corresponding GDT meaning in Windows diff --git a/hyperdbg/include/SDK/headers/DataTypes.h b/hyperdbg/include/SDK/headers/DataTypes.h index cc0df192..6f9db996 100644 --- a/hyperdbg/include/SDK/headers/DataTypes.h +++ b/hyperdbg/include/SDK/headers/DataTypes.h @@ -28,6 +28,24 @@ typedef enum _PAGING_LEVEL PagingLevelPageMapLevel4 } PAGING_LEVEL; +////////////////////////////////////////////////// +// List Entries // +////////////////////////////////////////////////// + +// +// Doubly linked list structure. Can be used as either a list head, or +// as link words. +// +#if defined(__linux__) + +typedef struct _LIST_ENTRY +{ + struct _LIST_ENTRY * Flink; + struct _LIST_ENTRY * Blink; +} LIST_ENTRY, *PLIST_ENTRY; + +#endif // defined(__linux__) + ////////////////////////////////////////////////// // Pool Manager // ////////////////////////////////////////////////// @@ -126,7 +144,7 @@ typedef int (*SendMessageWithParamCallback)(const char * Text); * as a custom ShowMessages function (using shared buffer) * */ -typedef int (*SendMessageWWithSharedBufferCallback)(); +typedef int (*SendMessageWithSharedBufferCallback)(VOID); ////////////////////////////////////////////////// // Communications // diff --git a/hyperdbg/include/SDK/headers/LbrDefinitions.h b/hyperdbg/include/SDK/headers/LbrDefinitions.h index d8114cf0..6510de2d 100644 --- a/hyperdbg/include/SDK/headers/LbrDefinitions.h +++ b/hyperdbg/include/SDK/headers/LbrDefinitions.h @@ -18,7 +18,7 @@ /** * @brief MSR address of LBR_SELECT, which is used to configure the LBR filtering options */ -#define MSR_LBR_SELECT 0x000001C8 +#define MSR_LEGACY_LBR_SELECT 0x000001C8 /* * Intel LBR_SELECT bits diff --git a/hyperdbg/include/SDK/headers/RequestStructures.h b/hyperdbg/include/SDK/headers/RequestStructures.h index 8db4ac97..e3a80d62 100644 --- a/hyperdbg/include/SDK/headers/RequestStructures.h +++ b/hyperdbg/include/SDK/headers/RequestStructures.h @@ -41,8 +41,7 @@ typedef struct _DEBUGGER_READ_PAGE_TABLE_ENTRIES_DETAILS } DEBUGGER_READ_PAGE_TABLE_ENTRIES_DETAILS, *PDEBUGGER_READ_PAGE_TABLE_ENTRIES_DETAILS; -/* ============================================================================================== - */ +// ============================================================================================== #define SIZEOF_DEBUGGER_VA2PA_AND_PA2VA_COMMANDS \ sizeof(DEBUGGER_VA2PA_AND_PA2VA_COMMANDS) @@ -61,8 +60,8 @@ typedef struct _DEBUGGER_VA2PA_AND_PA2VA_COMMANDS } DEBUGGER_VA2PA_AND_PA2VA_COMMANDS, *PDEBUGGER_VA2PA_AND_PA2VA_COMMANDS; -/* ============================================================================================== - */ +// ============================================================================================== + #define SIZEOF_DEBUGGER_PAGE_IN_REQUEST \ sizeof(DEBUGGER_PAGE_IN_REQUEST) @@ -80,8 +79,7 @@ typedef struct _DEBUGGER_PAGE_IN_REQUEST } DEBUGGER_PAGE_IN_REQUEST, *PDEBUGGER_PAGE_IN_REQUEST; -/* ============================================================================================== - */ +// ============================================================================================== /** * @brief different modes of reconstruct requests @@ -122,8 +120,7 @@ typedef struct _REVERSING_MACHINE_RECONSTRUCT_MEMORY_REQUEST } REVERSING_MACHINE_RECONSTRUCT_MEMORY_REQUEST, *PREVERSING_MACHINE_RECONSTRUCT_MEMORY_REQUEST; -/* ============================================================================================== - */ +// ============================================================================================== #define SIZEOF_DEBUGGER_DT_COMMAND_OPTIONS \ sizeof(DEBUGGER_DT_COMMAND_OPTIONS) @@ -144,8 +141,7 @@ typedef struct _DEBUGGER_DT_COMMAND_OPTIONS } DEBUGGER_DT_COMMAND_OPTIONS, *PDEBUGGER_DT_COMMAND_OPTIONS; -/* ============================================================================================== - */ +// ============================================================================================== /** * @brief different types of prealloc requests @@ -179,8 +175,7 @@ typedef struct _DEBUGGER_PREALLOC_COMMAND } DEBUGGER_PREALLOC_COMMAND, *PDEBUGGER_PREALLOC_COMMAND; -/* ============================================================================================== - */ +// ============================================================================================== /** * @brief different types of preactivate requests @@ -206,8 +201,7 @@ typedef struct _DEBUGGER_PREACTIVATE_COMMAND } DEBUGGER_PREACTIVATE_COMMAND, *PDEBUGGER_PREACTIVATE_COMMAND; -/* ============================================================================================== - */ +// ============================================================================================== #define SIZEOF_DEBUGGER_READ_MEMORY sizeof(DEBUGGER_READ_MEMORY) @@ -281,8 +275,7 @@ typedef struct _DEBUGGER_READ_MEMORY } DEBUGGER_READ_MEMORY, *PDEBUGGER_READ_MEMORY; -/* ============================================================================================== - */ +// ============================================================================================== #define SIZEOF_DEBUGGER_FLUSH_LOGGING_BUFFERS \ sizeof(DEBUGGER_FLUSH_LOGGING_BUFFERS) @@ -299,8 +292,7 @@ typedef struct _DEBUGGER_FLUSH_LOGGING_BUFFERS } DEBUGGER_FLUSH_LOGGING_BUFFERS, *PDEBUGGER_FLUSH_LOGGING_BUFFERS; -/* ============================================================================================== - */ +// ============================================================================================== #define SIZEOF_DEBUGGER_TEST_QUERY_BUFFER \ sizeof(DEBUGGER_TEST_QUERY_BUFFER) @@ -338,8 +330,7 @@ typedef struct _DEBUGGER_DEBUGGER_TEST_QUERY_BUFFER } DEBUGGER_DEBUGGER_TEST_QUERY_BUFFER, *PDEBUGGER_DEBUGGER_TEST_QUERY_BUFFER; -/* ============================================================================================== - */ +// ============================================================================================== #define SIZEOF_DEBUGGER_PERFORM_KERNEL_TESTS \ sizeof(DEBUGGER_PERFORM_KERNEL_TESTS) @@ -354,8 +345,7 @@ typedef struct _DEBUGGER_PERFORM_KERNEL_TESTS } DEBUGGER_PERFORM_KERNEL_TESTS, *PDEBUGGER_PERFORM_KERNEL_TESTS; -/* ============================================================================================== - */ +// ============================================================================================== #define SIZEOF_DEBUGGER_SEND_COMMAND_EXECUTION_FINISHED_SIGNAL \ sizeof(DEBUGGER_SEND_COMMAND_EXECUTION_FINISHED_SIGNAL) @@ -371,8 +361,7 @@ typedef struct _DEBUGGER_SEND_COMMAND_EXECUTION_FINISHED_SIGNAL } DEBUGGER_SEND_COMMAND_EXECUTION_FINISHED_SIGNAL, *PDEBUGGER_SEND_COMMAND_EXECUTION_FINISHED_SIGNAL; -/* ============================================================================================== - */ +// ============================================================================================== #define SIZEOF_DEBUGGEE_SEND_GENERAL_PACKET_FROM_DEBUGGEE_TO_DEBUGGER \ sizeof(DEBUGGEE_SEND_GENERAL_PACKET_FROM_DEBUGGEE_TO_DEBUGGER) @@ -395,8 +384,7 @@ typedef struct _DEBUGGEE_SEND_GENERAL_PACKET_FROM_DEBUGGEE_TO_DEBUGGER } DEBUGGEE_SEND_GENERAL_PACKET_FROM_DEBUGGEE_TO_DEBUGGER, *PDEBUGGEE_SEND_GENERAL_PACKET_FROM_DEBUGGEE_TO_DEBUGGER; -/* ============================================================================================== - */ +// ============================================================================================== #define SIZEOF_DEBUGGER_SEND_USERMODE_MESSAGES_TO_DEBUGGER \ sizeof(DEBUGGER_SEND_USERMODE_MESSAGES_TO_DEBUGGER) @@ -417,8 +405,7 @@ typedef struct _DEBUGGER_SEND_USERMODE_MESSAGES_TO_DEBUGGER } DEBUGGER_SEND_USERMODE_MESSAGES_TO_DEBUGGER, *PDEBUGGER_SEND_USERMODE_MESSAGES_TO_DEBUGGER; -/* ============================================================================================== - */ +// ============================================================================================== #define SIZEOF_DEBUGGER_READ_AND_WRITE_ON_MSR \ sizeof(DEBUGGER_READ_AND_WRITE_ON_MSR) @@ -449,8 +436,7 @@ typedef struct _DEBUGGER_READ_AND_WRITE_ON_MSR } DEBUGGER_READ_AND_WRITE_ON_MSR, *PDEBUGGER_READ_AND_WRITE_ON_MSR; -/* ============================================================================================== - */ +// ============================================================================================== #define SIZEOF_DEBUGGER_EDIT_MEMORY sizeof(DEBUGGER_EDIT_MEMORY) @@ -491,8 +477,7 @@ typedef struct _DEBUGGER_EDIT_MEMORY } DEBUGGER_EDIT_MEMORY, *PDEBUGGER_EDIT_MEMORY; -/* ============================================================================================== - */ +// ============================================================================================== #define SIZEOF_DEBUGGER_SEARCH_MEMORY sizeof(DEBUGGER_SEARCH_MEMORY) @@ -536,8 +521,7 @@ typedef struct _DEBUGGER_SEARCH_MEMORY } DEBUGGER_SEARCH_MEMORY, *PDEBUGGER_SEARCH_MEMORY; -/* ============================================================================================== - */ +// ============================================================================================== /** * @brief Windows System call values that are intercepted by transparency mode @@ -600,8 +584,7 @@ typedef struct _DEBUGGER_HIDE_AND_TRANSPARENT_DEBUGGER_MODE } DEBUGGER_HIDE_AND_TRANSPARENT_DEBUGGER_MODE, *PDEBUGGER_HIDE_AND_TRANSPARENT_DEBUGGER_MODE; -/* ============================================================================================== - */ +// ============================================================================================== #define SIZEOF_DEBUGGER_PREPARE_DEBUGGEE sizeof(DEBUGGER_PREPARE_DEBUGGEE) @@ -619,8 +602,7 @@ typedef struct _DEBUGGER_PREPARE_DEBUGGEE } DEBUGGER_PREPARE_DEBUGGEE, *PDEBUGGER_PREPARE_DEBUGGEE; -/* ============================================================================================== - */ +// ============================================================================================== /** * @brief The structure of changing core packet in HyperDbg @@ -633,8 +615,8 @@ typedef struct _DEBUGGEE_CHANGE_CORE_PACKET } DEBUGGEE_CHANGE_CORE_PACKET, *PDEBUGGEE_CHANGE_CORE_PACKET; -/* ============================================================================================== - */ +// ============================================================================================== + #define SIZEOF_DEBUGGER_ATTACH_DETACH_USER_MODE_PROCESS \ sizeof(DEBUGGER_ATTACH_DETACH_USER_MODE_PROCESS) @@ -678,8 +660,8 @@ typedef struct _DEBUGGER_ATTACH_DETACH_USER_MODE_PROCESS } DEBUGGER_ATTACH_DETACH_USER_MODE_PROCESS, *PDEBUGGER_ATTACH_DETACH_USER_MODE_PROCESS; -/* ============================================================================================== - */ +// ============================================================================================== + #define SIZEOF_DEBUGGER_QUERY_ACTIVE_PROCESSES_OR_THREADS \ sizeof(DEBUGGER_QUERY_ACTIVE_PROCESSES_OR_THREADS) @@ -785,8 +767,7 @@ typedef struct _DEBUGGER_QUERY_ACTIVE_PROCESSES_OR_THREADS } DEBUGGER_QUERY_ACTIVE_PROCESSES_OR_THREADS, *PDEBUGGER_QUERY_ACTIVE_PROCESSES_OR_THREADS; -/* ============================================================================================== - */ +// ============================================================================================== /** * @brief The structure for saving the callstack frame of one parameter @@ -836,8 +817,8 @@ typedef struct _DEBUGGER_CALLSTACK_REQUEST } DEBUGGER_CALLSTACK_REQUEST, *PDEBUGGER_CALLSTACK_REQUEST; -/* ============================================================================================== - */ +// ============================================================================================== + #define SIZEOF_USERMODE_DEBUGGING_THREAD_OR_PROCESS_STATE_DETAILS \ sizeof(USERMODE_DEBUGGING_THREAD_OR_PROCESS_STATE_DETAILS) @@ -850,8 +831,7 @@ typedef struct _USERMODE_DEBUGGING_THREAD_OR_PROCESS_STATE_DETAILS } USERMODE_DEBUGGING_THREAD_OR_PROCESS_STATE_DETAILS, *PUSERMODE_DEBUGGING_THREAD_OR_PROCESS_STATE_DETAILS; -/* ============================================================================================== - */ +// ============================================================================================== /** * @brief Used for run the script @@ -891,8 +871,7 @@ typedef struct _DEBUGGER_EVENT_REQUEST_CUSTOM_CODE } DEBUGGER_EVENT_REQUEST_CUSTOM_CODE, *PDEBUGGER_EVENT_REQUEST_CUSTOM_CODE; -/* ============================================================================================== - */ +// ============================================================================================== /** * @brief User-mode debugging actions @@ -937,8 +916,7 @@ typedef struct _DEBUGGER_UD_COMMAND_PACKET } DEBUGGER_UD_COMMAND_PACKET, *PDEBUGGER_UD_COMMAND_PACKET; -/* ============================================================================================== - */ +// ============================================================================================== /** * @brief Debugger process switch and process details @@ -970,8 +948,7 @@ typedef struct _DEBUGGEE_DETAILS_AND_SWITCH_PROCESS_PACKET } DEBUGGEE_DETAILS_AND_SWITCH_PROCESS_PACKET, *PDEBUGGEE_DETAILS_AND_SWITCH_PROCESS_PACKET; -/* ============================================================================================== - */ +// ============================================================================================== /** * @brief Debugger size of DEBUGGEE_DETAILS_AND_SWITCH_PROCESS_PACKET @@ -1018,8 +995,7 @@ typedef struct _DEBUGGEE_DETAILS_AND_SWITCH_THREAD_PACKET #define SIZEOF_DEBUGGEE_DETAILS_AND_SWITCH_THREAD_PACKET \ sizeof(DEBUGGEE_DETAILS_AND_SWITCH_THREAD_PACKET) -/* ============================================================================================== - */ +// ============================================================================================== /** * @brief stepping and tracking types @@ -1060,7 +1036,7 @@ typedef struct _DEBUGGEE_STEP_PACKET */ #define DEBUGGER_REMOTE_TRACKING_DEFAULT_COUNT_OF_STEPPING 0xffffffff -/* ============================================================================================== +// ============================================================================================== /** * @brief Perform actions related to APIC @@ -1194,8 +1170,7 @@ typedef struct _LAPIC_PAGE UINT8 Reserved3F4[0x0C]; // valid only for X2APIC } LAPIC_PAGE, *PLAPIC_PAGE; -/* ============================================================================================== - */ +// ============================================================================================== /** * @brief Maximum number of I/O APIC entries @@ -1228,8 +1203,7 @@ typedef struct _IO_APIC_ENTRY_PACKETS static_assert(sizeof(IO_APIC_ENTRY_PACKETS) < PacketChunkSize, "err (static_assert), size of PacketChunkSize should be bigger than IO_APIC_ENTRY_PACKETS"); -/* ============================================================================================== - */ +// ============================================================================================== /** * @brief Perform actions related to SMIs @@ -1261,8 +1235,7 @@ typedef struct _SMI_OPERATION_PACKETS #define SIZEOF_SMI_OPERATION_PACKETS \ sizeof(SMI_OPERATION_PACKETS) -/* ============================================================================================== - */ +// ============================================================================================== /** * @brief Perform actions related to HyperTrace for LBR @@ -1298,8 +1271,7 @@ typedef struct _HYPERTRACE_LBR_OPERATION_PACKETS #define SIZEOF_HYPERTRACE_LBR_OPERATION_PACKETS \ sizeof(HYPERTRACE_LBR_OPERATION_PACKETS) -/* ============================================================================================== - */ +// ============================================================================================== /** * @brief Perform actions related to HyperTrace for PT @@ -1332,8 +1304,7 @@ typedef struct _HYPERTRACE_PT_OPERATION_PACKETS #define SIZEOF_HYPERTRACE_PT_OPERATION_PACKETS \ sizeof(HYPERTRACE_PT_OPERATION_PACKETS) -/* ============================================================================================== - */ +// ============================================================================================== /** * @brief Maximum number of IDT entries @@ -1366,8 +1337,7 @@ typedef struct _INTERRUPT_DESCRIPTOR_TABLE_ENTRIES_PACKETS static_assert(sizeof(INTERRUPT_DESCRIPTOR_TABLE_ENTRIES_PACKETS) < PacketChunkSize, "err (static_assert), size of PacketChunkSize should be bigger than INTERRUPT_DESCRIPTOR_TABLE_ENTRIES_PACKETS"); -/* ============================================================================================== - */ +// ============================================================================================== /** * @brief The structure of .formats result packet in HyperDbg @@ -1380,8 +1350,7 @@ typedef struct _DEBUGGEE_FORMATS_PACKET } DEBUGGEE_FORMATS_PACKET, *PDEBUGGEE_FORMATS_PACKET; -/* ============================================================================================== - */ +// ============================================================================================== /** * @brief The structure of .sym reload packet in HyperDbg @@ -1393,8 +1362,7 @@ typedef struct _DEBUGGEE_SYMBOL_REQUEST_PACKET } DEBUGGEE_SYMBOL_REQUEST_PACKET, *PDEBUGGEE_SYMBOL_REQUEST_PACKET; -/* ============================================================================================== - */ +// ============================================================================================== /** * @brief The structure of bp command packet in HyperDbg @@ -1445,8 +1413,7 @@ typedef struct _DEBUGGEE_BP_LIST_OR_MODIFY_PACKET } DEBUGGEE_BP_LIST_OR_MODIFY_PACKET, *PDEBUGGEE_BP_LIST_OR_MODIFY_PACKET; -/* ============================================================================================== - */ +// ============================================================================================== /** * @brief Whether a jump is taken or not taken @@ -1462,8 +1429,7 @@ typedef enum _DEBUGGER_CONDITIONAL_JUMP_STATUS } DEBUGGER_CONDITIONAL_JUMP_STATUS; -/* ============================================================================================== - */ +// ============================================================================================== /** * @brief The structure of script packet in HyperDbg @@ -1483,8 +1449,7 @@ typedef struct _DEBUGGEE_SCRIPT_PACKET } DEBUGGEE_SCRIPT_PACKET, *PDEBUGGEE_SCRIPT_PACKET; -/* ============================================================================================== - */ +// ============================================================================================== /** * @brief The structure of result of search packet in HyperDbg @@ -1497,8 +1462,7 @@ typedef struct _DEBUGGEE_RESULT_OF_SEARCH_PACKET } DEBUGGEE_RESULT_OF_SEARCH_PACKET, *PDEBUGGEE_RESULT_OF_SEARCH_PACKET; -/* ============================================================================================== - */ +// ============================================================================================== /** * @brief Register Descriptor Structure to use in r command. @@ -1512,8 +1476,7 @@ typedef struct _DEBUGGEE_REGISTER_READ_DESCRIPTION } DEBUGGEE_REGISTER_READ_DESCRIPTION, *PDEBUGGEE_REGISTER_READ_DESCRIPTION; -/* ============================================================================================== - */ +// ============================================================================================== /** * @brief Register Descriptor Structure to write on registers. @@ -1527,8 +1490,7 @@ typedef struct _DEBUGGEE_REGISTER_WRITE_DESCRIPTION } DEBUGGEE_REGISTER_WRITE_DESCRIPTION, *PDEBUGGEE_REGISTER_WRITE_DESCRIPTION; -/* ============================================================================================== - */ +// ============================================================================================== #define SIZEOF_DEBUGGEE_PCITREE_REQUEST_RESPONSE_PACKET \ sizeof(DEBUGGEE_PCITREE_REQUEST_RESPONSE_PACKET) @@ -1552,8 +1514,7 @@ typedef struct _DEBUGGEE_PCITREE_REQUEST_RESPONSE_PACKET static_assert(sizeof(DEBUGGEE_PCITREE_REQUEST_RESPONSE_PACKET) < PacketChunkSize, "err (static_assert), size of PacketChunkSize should be bigger than DEBUGGEE_PCITREE_REQUEST_RESPONSE_PACKET"); -/* ============================================================================================== - */ +// ============================================================================================== #define SIZEOF_DEBUGGEE_PCIDEVINFO_REQUEST_RESPONSE_PACKET \ sizeof(DEBUGGEE_PCIDEVINFO_REQUEST_RESPONSE_PACKET) @@ -1577,5 +1538,4 @@ typedef struct _DEBUGGEE_PCIDEVINFO_REQUEST_RESPONSE_PACKET static_assert(sizeof(DEBUGGEE_PCIDEVINFO_REQUEST_RESPONSE_PACKET) < PacketChunkSize, "err (static_assert), size of PacketChunkSize should be bigger than DEBUGGEE_PCIDEVINFO_REQUEST_RESPONSE_PACKET"); -/* ============================================================================================== - */ +// ============================================================================================== diff --git a/hyperdbg/include/SDK/modules/HyperTrace.h b/hyperdbg/include/SDK/modules/HyperTrace.h index 29aea9f1..4fdc93c9 100644 --- a/hyperdbg/include/SDK/modules/HyperTrace.h +++ b/hyperdbg/include/SDK/modules/HyperTrace.h @@ -71,13 +71,13 @@ typedef VOID (*VM_FUNC_SET_DEBUGCTL)(UINT64 Value); typedef VOID (*VM_FUNC_SET_DEBUGCTL_VMCALL_ON_TARGET_CORE)(UINT64 Value); /** - * @brief A function that set MSR_LBR_SELECT + * @brief A function that set MSR_LEGACY_LBR_SELECT * */ typedef VOID (*VM_FUNC_SET_LBR_SELECT)(UINT64 FilterOptions); /** - * @brief A function that set MSR_LBR_SELECT on the target core using VMCALL + * @brief A function that set MSR_LEGACY_LBR_SELECT on the target core using VMCALL * */ typedef VOID (*VM_FUNC_SET_LBR_SELECT_VMCALL_ON_TARGET_CORE)(UINT64 FilterOptions); diff --git a/hyperdbg/include/platform/general/header/GeneralTypes.h b/hyperdbg/include/platform/general/header/GeneralTypes.h index 8e94ca97..ee8fd30c 100644 --- a/hyperdbg/include/platform/general/header/GeneralTypes.h +++ b/hyperdbg/include/platform/general/header/GeneralTypes.h @@ -21,8 +21,6 @@ # include -typedef long PLAT_STATUS; - typedef void VOID; typedef void * PVOID; @@ -46,7 +44,4 @@ typedef short SHORT; typedef long LONG; typedef int INT; -# define PLAT_SUCCESS 0 -# define PLAT_FAIL -1 - #endif diff --git a/hyperdbg/libhyperdbg/code/app/libhyperdbg.cpp b/hyperdbg/libhyperdbg/code/app/libhyperdbg.cpp index 3ed91633..4595a8b9 100644 --- a/hyperdbg/libhyperdbg/code/app/libhyperdbg.cpp +++ b/hyperdbg/libhyperdbg/code/app/libhyperdbg.cpp @@ -157,7 +157,7 @@ ShowMessages(const char * Fmt, ...) else { memcpy(g_MessageHandlerSharedBuffer, TempMessage, strlen(TempMessage) + 1); - ((SendMessageWWithSharedBufferCallback)g_MessageHandler)(); + ((SendMessageWithSharedBufferCallback)g_MessageHandler)(); } } } diff --git a/hyperdbg/linux/mock/pch.h b/hyperdbg/linux/mock/pch.h index 86be3b9b..6bc76d51 100644 --- a/hyperdbg/linux/mock/pch.h +++ b/hyperdbg/linux/mock/pch.h @@ -35,3 +35,8 @@ // Platform headers // #include "../../include/platform/kernel/header/PlatformMem.h" + +// +// Platform headers +// +#include "../../include/SDK/HyperDbgSdk.h"