阅读:2119回复:3
难题:应用程序怎么得到KeServiceDescriptorTable地址以及系统调用函数地址
不通过驱动,应用程序如何得到KeServiceDescriptorTable地址以及系统调用函数地址??
请给位大牛叫两声吧! 非常感谢!!! |
|
最新喜欢:wingma... |
沙发#
发布于:2007-07-27 09:41
1. 用LoadLibrary+GetProcAddress可以计算出KeServiceDescriptorTable相对于ntoskrnl.exe的偏移,再加上NtQuerySystemInformation就可以获得KeServiceDescriptorTable的真实地址了。
2. NtSystemDebugControl可以读取0x80000000以上的系统内存,不过貌似要XP才可以。 |
|
|
板凳#
发布于:2007-07-27 10:26
KeServiceDescriptporTable其实上位于线程EThread->Kthread->ServiceTable处,从那里就可以取得了,虽然有时候是Shadow,但前4个字节肯定是ssdt表的地址(shadow前10字节是ssdt备份表~)
至于怎么读内核内存,方法就多了,呵呵 |
|
|
地板#
发布于:2007-07-29 15:03
多谢两位!
titilima 的方法很好用,我的应用程序可能都不会总有管理员权限,所以还有1个小问题,那就是如何获取ntoskrnl的ServiceTable的地址(也就是KeServiceDescriptorTable的值),由于不一定都有管理员权限,所以读写内核空间地址的方法行不同,而且不是很必要,各位大牛有什么好办法得到KeServiceDescriptorTable的值啊?? 请给为大牛帮帮忙吧! |
|