mirror of
https://github.com/HyperDbg/HyperDbg.git
synced 2026-07-09 17:19:26 +00:00
compile HyperDbg SDK for Linux
This commit is contained in:
parent
b35e0dd43c
commit
c5ba5ccd89
21 changed files with 185 additions and 165 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -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
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -60,7 +60,6 @@
|
|||
//
|
||||
// Platform independent headers
|
||||
//
|
||||
#include "platform/general/header/GeneralTypes.h"
|
||||
#include "platform/kernel/header/PlatformMem.h"
|
||||
|
||||
//
|
||||
|
|
|
|||
|
|
@ -84,7 +84,6 @@
|
|||
//
|
||||
// Platform independent headers
|
||||
//
|
||||
#include "platform/general/header/GeneralTypes.h"
|
||||
#include "platform/kernel/header/PlatformMem.h"
|
||||
|
||||
//
|
||||
|
|
|
|||
|
|
@ -48,5 +48,4 @@
|
|||
//
|
||||
// Platform independent headers
|
||||
//
|
||||
#include "platform/general/header/GeneralTypes.h"
|
||||
#include "platform/kernel/header/PlatformMem.h"
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
//
|
||||
|
|
|
|||
|
|
@ -55,7 +55,6 @@
|
|||
//
|
||||
// Platform independent headers
|
||||
//
|
||||
#include "platform/general/header/GeneralTypes.h"
|
||||
#include "platform/kernel/header/PlatformMem.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 <linux/slab.h>
|
||||
|
||||
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
|
||||
//
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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 //
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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");
|
||||
|
||||
/* ==============================================================================================
|
||||
*/
|
||||
// ==============================================================================================
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -21,8 +21,6 @@
|
|||
|
||||
# include <linux/slab.h>
|
||||
|
||||
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
|
||||
|
|
|
|||
|
|
@ -157,7 +157,7 @@ ShowMessages(const char * Fmt, ...)
|
|||
else
|
||||
{
|
||||
memcpy(g_MessageHandlerSharedBuffer, TempMessage, strlen(TempMessage) + 1);
|
||||
((SendMessageWWithSharedBufferCallback)g_MessageHandler)();
|
||||
((SendMessageWithSharedBufferCallback)g_MessageHandler)();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -35,3 +35,8 @@
|
|||
// Platform headers
|
||||
//
|
||||
#include "../../include/platform/kernel/header/PlatformMem.h"
|
||||
|
||||
//
|
||||
// Platform headers
|
||||
//
|
||||
#include "../../include/SDK/HyperDbgSdk.h"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue