首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获取SSDT地址

如何获取SSDT地址
EN

Stack Overflow用户
提问于 2018-04-28 04:57:39
回答 1查看 1K关注 0票数 0

我正在尝试用c写一个程序,列出SSDT地址,所以如果某个函数被钩住了,我会看到一个不同的地址。如何获取SSDT的地址?我使用WinDbg和KeServiceDescriptorTable一起列出,现在我如何在c中获得这个地址。我在网上搜索它,看到使用NtQuerySystemInformation和SystemModuleInformation的程序。我没有找到任何关于这些程序的文档,也没有任何关于这方面的文章或解释。

感谢你的帮助

EN

回答 1

Stack Overflow用户

发布于 2018-06-22 00:23:47

下面是当你在内核模式下的时候。

在32位环境中,NTOSKRNL导出KeServiceDescriptorTable,因此可以使用MmGetSystemRoutineAddress检索地址。

但是,在64位环境中,您需要自己通过内存扫描来定位KeServiceDescriptorTable,因为它不会被NTOSKRNL导出。很简单,一旦你找到了表在Windows内核中的用法,检查NTOSKRNL中与内部系统调用相关的例程。

注意:在64位环境中提取地址时,需要进行字节移位。

现在,一旦您有了地址,您就可以进行比较,以确定地址是否在内存中的特定范围之间,从而尝试确定地址是否不正确(例如,如果它被操纵了)。您还可以在内存中对操作数执行取证,以便进行深入分析。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50070212

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档