gpt4 book ai didi

c - 如何获取SSDT地址

转载 作者:行者123 更新时间:2023-11-30 16:32:37 26 4
gpt4 key购买 nike

我正在尝试用 c 语言编写一个程序,列出 SSDT 地址,因此如果某个函数被 Hook ,我会看到不同的地址。如何获取SSDT的地址?我使用WinDbg并用KeServiceDescriptorTable列出,现在我如何在c中获取这个地址。我在网上搜索它并看到使用 NtQuerySystemInformation 和 SystemModuleInformation 的程序。我没有找到这些程序的任何文档或任何文章或解释。

感谢您的帮助

最佳答案

[以下是当您处于内核模式时的情况]。

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

但是,在 64 位环境中,您需要通过内存扫描自行找到 KeServiceDescriptorTable,因为 NTOSKRNL 不会导出它。一旦您发现该表在 Windows 内核中的使用位置,就非常简单了,请检查 NTOSKRNL 中与内部系统调用相关的例程。

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

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

关于c - 如何获取SSDT地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50070212/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com