首页
社区
课程
招聘
[讨论]Win7x64 无法通过替换表项进行SSDT HOOK???
发表于: 2013-9-11 14:15 5320

[讨论]Win7x64 无法通过替换表项进行SSDT HOOK???

2013-9-11 14:15
5320
RT
刚开始玩x64驱动 想试试SSDT HOOK
在论坛资源以及各位兄弟的帮助下 目前搞定了PG SSDT获取 NT函数定位 等等

我想尝试用x86替换SSDT中ServiceTable表项的方式进行SSDT HOOK
但是发现一个不知道该怎么解决的问题

问题描述:
以下都是WINDBG 调试过程中 我记录的一些值
0xfffff800`0190a840 struct _SERVICE_DESCRIPTOR_TABLE *
0xfffff800`016da300 ServiceTable

0xfffff800`019ca1c8 NtReadFile

kd> u Drv!NtReadFile
Drv!NtReadFile  [d:\desktop\x64hookssdt\x64hookssdt\drv.c @ 26]:
0xfffff880`1552a050 4889542410      mov     qword ptr [rsp+10h],rdx

问题在这里:
根据X64 SSDT 定位NT函数的办法  可以简单的描述位 NTADDR= ServiceTable[Index]>>4 +ServiceTable
但是这样算的前提是  NT函数和 ServiceTable的高位地址相同

但是我新加载的驱动  高位地址 从0xfffff800 变成了 0xfffff880
这样的话 原来的NT函数定位公式就不合适了

我想问下 在Win7X64环境下 是否可以跟x86环境下一样 通过表项进行SSDT HOOK
如果可以的话  那么 ServiceTable[index] 里面对应的值应该怎么写呢?

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 796
活跃值: (370)
能力值: ( LV9,RANK:380 )
在线值:
发帖
回帖
粉丝
2
你都可以得到64下SSDT表的地址了,为什么不操起windbg看下这个64下SSDT表数据结构呢
2013-9-11 15:31
0
雪    币: 140
活跃值: (125)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
3
看了啊 可是根据那个NT函数定位的公式  只能是高位地址跟他在同一段内的才行
我自己上的驱动 跟他不在同一区域,没法用那个公式来算了啊。

你说的看ssdt结构是指什么?  上面的那些都是我从WINDBG里面摘出来的。

PS:顺便请教个问题  ServiceTable>>4 才是相对偏移   那么呗右移忽略掉的4位是干什么的?
2013-9-11 23:55
0
游客
登录 | 注册 方可回帖
返回
//