Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何获取SSDT地址_C_Winapi_Windbg_Windows Kernel - Fatal编程技术网

C 如何获取SSDT地址

C 如何获取SSDT地址,c,winapi,windbg,windows-kernel,C,Winapi,Windbg,Windows Kernel,我正试图用c编写一个程序,列出SSDT地址,所以如果某个函数被钩住,我会看到一个不同的地址。 如何获取SSDT的地址? 我使用WinDbg,并与KeServiceDescriptable一起列出,现在我如何在c中获得此地址。 我在网上搜索它,看到了使用NtQuerySystemInformation和SystemModuleInformation的程序。我没有找到这些程序的任何文档,也没有任何文章或解释 感谢您的帮助[以下是您在内核模式下的帮助] 在32位环境中,KeServiceDescrip

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


感谢您的帮助

[以下是您在内核模式下的帮助]

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

但是,在64位环境中,您需要通过内存扫描自己定位KeServiceDescriptable,因为它不会由NTOSKRNL导出。这是非常直截了当的,一旦您找到了它在Windows内核中的使用位置,请检查NTOSKRNL中与内部系统调用相关的例程

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


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

普通程序以用户模式运行。要查看系统描述符表,您需要代码以内核模式运行,即作为驱动程序运行:。或许不是;请参阅下一条评论。未记录的NtQuerySystemInformation结构:类似:@asynchronos我不明白你的意思。。。我可以从用户模式查看SSDT吗?没有内核模式的帮助。我想NtQuerySystemInformation()的一个未记录的信息类可能会为您阅读它,但我还没有找到任何这样的类/结构。