驱动过游戏保护基础知识点

本文介绍了如何在Windows驱动中利用KeServiceDescriptorTable表来获取系统服务的地址,并通过SSDT索引号计算出NtOpenProcess函数的地址。同时,文章还探讨了JMP指令在地址转换中的应用,展示了如何进行JMP地址的计算。内容适合对驱动逆向和系统底层操作感兴趣的读者。
摘要由CSDN通过智能技术生成

A、引用KeServiceDescriptorTable表

    B、通过ServiceTableBase+偏移读出当前函数地址

    C、用windbg测试读取的值

系统服务描述符表 在ntoskrnl.exe导出KeServiceDescriptorTable 这个表

typedef struct _ServiceDescriptorTable {
   
         PVOID ServiceTableBase; //System Service Dispatch Table 的基地址 

         PVOID ServiceCounterTable;

         //包含着 SSDT 中每个服务被调用次数的计数器。这个计数器一般由sysenter 更新。

         unsigned int NumberOfServices;//由 ServiceTableBase 描述的服务的数目。 

         PVOID ParamTableBase; //包含每个系统服务参数字节数表的基地址-系统服务参数表

}*PServiceDescriptorTable; 

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

//NtOpenProcess [[KeServiceDescriptorTable]+0x7A*4]

//导出系统服务描述符表SSDT的指针
extern PServiceDescriptorTable KeServiceDescriptorTable;

方法1 纯汇编读取

ULONG SSDT_NtOpenProcess_Addr;

         //[[KeServiceDescriptorTable]+0x7A*4]

         __asm

         {
   
     push eax   

        
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值