立即注册 登录
金融博弈 返回首页

道上道 http://bbs.jrboyi.com/?888888 [收藏] [复制] [RSS] 市场沉浮,大浪淘走的是沙,留下的是金子...

日志

编写自己的驱动过游戏保护-需要具备的理论知识

已有 280 次阅读2021-4-12 21:23 |个人分类:编程

A、了解SSDT结构

        B、由SSDT索引号获取当前函数地址       

        C、如何获取索引号

        D、获取起源地址-判断SSDT是否被HOOK

        E、如何向内核地址写入自己代码

 

 A、了解SSDT结构

SSDT的全称是System Services Descriptor Table,系统服务描述符表 在ntoskrnl.exe导出KeServiceDescriptorTable 这个表

typedef struct ServiceDescriptorTable {
   PVOID ServiceTableBase; //System Service Dispatch Table 的基地址
   PVOID ServiceCounterTable(0);

 //包含着 SSDT 中每个服务被调用次数的计数器。这个计数器一般由sysenter 更新。
   unsigned int NumberOfServices;//由 ServiceTableBase 描述的服务的数目。
   PVOID ParamTableBase; //包含每个系统服务参数字节数表的基地址-系统服务参数表
   } 
  用windbg 了解SSDT结构:

  windbg符号路径设置: srv*D:\WINDDK\symbols*http://msdl.microsoft.com/download/symbols

 

 poi

 

 B、由SSDT索引号获取当前函数地址 

  [[KeServiceDescriptorTable]+index*4]  

 C、如何获取索引号

 用工具

 D、获取起源地址-判断SSDT是否被HOOK

 MmGetSystemRoutineAddress

 E、如何向内核地址写入自己代码

   mov [xxx],xx //

   1、如何向SSDT表写入内容呢,这个表是被保护的 正常情况不能被写入

  方法有三

(1) 更改注册表 -最简单的做法

HKLM\SYSTEM\CurrentControlset\Control\SessionManger\MemoryManagement\

EnforceWriteProtection=0


HKLM\SYSTEM\CurrentControlset\Control\SessionManger\MemoryManagement\

DisablePagingExecutive=1


(2)改变CR0寄存器的第1位wp位 置0-常用

(3)通过Memory Descriptor List(MDL)-正规做法
MmCreateMdl
————————————————
版权声明:本文为CSDN博主「zang141588761」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zang141588761/article/details/82720889

路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 立即注册

QQ|小黑屋|手机版|Archiver|金融博弈 ( 桂ICP备12004758号 )

GMT+8, 2024-4-28 03:23 , Processed in 0.288394 second(s), 15 queries , File On.