飞龙在天 发表于 2024-2-29 12:50:20

过驱动如此简单..和谐快乐


过DNF主要分为三步,也许我的思路不太正确,反正可以OD调试,下断。

程序没怎么修边幅,因为只是测试,所以一般都没有写更改内核后的恢复,不过不妨碍使用。

第一步,这也是最起码的,你必须要能够打开游戏进程和线程,能够开打进程和线程后不被检测到

第二步,能够读写进程内存

第三步,能够用OD附加游戏进程

第四步,能够下硬件断点而不被检测

跳过NtReadVirtualMemory,NtWriteVirtualMemory函数头的钩子
代码:

#include<ntddk.h>

typedef struct _SERVICE_DESCRIPTOR_TABLE
{
PVOID
ServiceTableBase;
PULONG
ServiceCounterTableBase;
ULONG
NumberOfService;
ULONG
ParamTableBase;

}SERVICE_DESCRIPTOR_TABLE,*PSERVICE_DESCRIPTOR_TABLE; //由于KeServiceDescriptorTable只有一项,这里就简单点了

extern PSERVICE_DESCRIPTOR_TABLE
KeServiceDescriptorTable;//KeServiceDescriptorTable为导出函数

/////////////////////////////////////

VOID Hook();

VOID Unhook();

VOID OnUnload(IN PDRIVER_OBJECT DriverObject);

//////////////////////////////////////

ULONG JmpAddress;//跳转到NtOpenProcess里的地址

ULONG JmpAddress1;//跳转到NtOpenProcess里的地址

ULONG OldServiceAddress;//原来NtOpenProcess的服务地址

ULONG OldServiceAddress1;//原来NtOpenProcess的服务地址

//////////////////////////////////////

__declspec(naked) NTSTATUS __stdcall MyNtReadVirtualMemory(HANDLE ProcessHandle,

PVOID BaseAddress,

PVOID Buffer,

ULONG NumberOfBytesToRead,

PULONG NumberOfBytesReaded)

{

页: [1]
查看完整版本: 过驱动如此简单..和谐快乐