- 注册时间
 - 2010-7-27
 
- 最后登录
 - 2017-5-27
 
- 在线时间
 - 6 小时
 
 
 
 
 
编程入门 
  
	- 魔鬼币
 - 581 
 
 
 
 | 
 
过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) 
 
  
- {
 
  复制代码 |   
 
 
 
 |