思路: 注册驱动回调函数 执行顺序主要看海拔高度win10 18363.778 中海拔高度越小 加载越靠后 也就是优胜于 后面加载的回调。
见代码:
#include <ntifs.h>
constexpr char DebugTargetPrefixA[] = "x64dbg.exe";
constexpr wchar_t DebugTargetPrefixW[] = L"测试";
# define PROTECT_NAME "testVMP.exe"
PVOID g_Reg_Handle;
EXTERN_C PUCHAR PsGetProcessImageFileName(__in PEPROCESS Process);
//进程管理器详细界面结束代码
#define PROCESS_TERMINATE_0 0x1001
//taskkill指令结束代码
#define PROCESS_TERMINATE_1 0x0001
//taskkill指令加/f参数强杀进程结束码
#define PROCESS_KILL_F 0x1401
//进程管理器结束代码
#define PROCESS_TERMINATE_2 0x1041
// _LDR_DATA_TABLE_ENTRY ,注意32位与64位的对齐大小
BOOLEAN BypassCheckSign(PDRIVER_OBJECT pDriverObject)
{
#ifdef _WIN64
//0xa0 bytes (sizeof)
typedef struct _KLDR_DATA_TABLE_ENTRY
{
struct _LIST_ENTRY InLoadOrderLinks; //0x0
VOID* ExceptionTable; //0x10
ULONG ExceptionTableSize; //0x18
VOID* GpValue; //0x20
struct _NON_PAGED_DEBUG_INFO* NonPagedDebugInfo; //0x28
VOID* DllBase; //0x30
VOID* EntryPoint; //0x38
ULONG SizeOfImage; //0x40
struct _UNICODE_S