首页
社区
课程
招聘
[求助]虚心请教,不胜感激(关于SSDT)
发表于: 2008-9-15 14:03 4454

[求助]虚心请教,不胜感激(关于SSDT)

2008-9-15 14:03
4454
其实就是关于SSDT中的一些知道,但是有些地方还是不明白,希望能够得到解决

1:为什么我们在编程的时候只要声明了
extern PServiceDescriptorTable EntryKeServiceDescriptorTable;
就找到了SSDT这个表的入口地址,到底是谁找到了的?????

2:当我们找到了SSDT,比如我想知道ZwQuerySystemInformation的入口地址,
应该怎么去找到呢??而不是直接+ox97来直接找到入口地址,万一我并不知道这个函数
的偏移量是ox97呢???

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
2
1.因为KeServiceDescriptorTable是被ntosXX.exe导出的,所以声明之后就可以用。包括其它已导出但无文档的函数,只要有正确的原型都可以使用。

2.这个函数对应的ID是由当前版本的系统决定的,在ntdll.dll中就决定了~
所以通常做法就是从ntdll.dll中取得ID,然后在SSDT中读取
2008-9-15 14:07
0
雪    币: 234
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
首先感谢achillis。。。

既然KeServiceDescriptorTable是被ntosXX.exe导出的,可以理解为ntosXX.exe将这个函数导入到内存中去了吗?那么编译器或者是其他什么东西,它是怎么道KeServiceDescriptorTable的地址的呢????

重NTDLL里面读取ID号,原来是这样,谢谢 如果能在具体说一下怎么重NTDLL读取ID号,或者什么工具,那就完美了
2008-9-15 14:12
0
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
4
1.地址定位这个工作是在PE加载到内存的时候的完成的,就像一个程序使用了MessageBox,那么它所调用的这个函数的地址是在MessageBox所在的user32.dll加载之后确定的~

2.这个你在ntdll.dll中随便找个Native API反汇编一下,可以看到类似这样的代码:
MOV EAX,00000029 //这个0x29就是你要的ID了,其它类推~
...
SYSENTER//进入核心态
RET 0020

具体做法请自己找一份SSDT HOOK代码参考
2008-9-15 14:22
0
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
5
一个例子:

http://bbs.pediy.com/showthread.php?t=63629
2008-9-15 14:24
0
雪    币: 234
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
我想我已经差不多明白了。。再次感谢achillis。。。
2008-9-15 14:25
0
雪    币: 437
活跃值: (273)
能力值: ( LV12,RANK:240 )
在线值:
发帖
回帖
粉丝
7
ntoskrnl.lib 导出
2008-9-15 18:05
0
游客
登录 | 注册 方可回帖
返回
//