【发布时间】:2018-04-27 20:57:39
【问题描述】:
我正在尝试用 c 编写一个列出 SSDT 地址的程序,所以如果某个函数被挂钩,我会看到一个不同的地址。 如何获取 SSDT 的地址? 我使用了 WinDbg 并使用 KeServiceDescriptorTable 列出,现在我如何在 c 中获取此地址。 我在网上搜索它并看到使用 NtQuerySystemInformation 和 SystemModuleInformation 的程序。我没有找到这些程序的任何文档或任何文章或解释。
感谢您的帮助
【问题讨论】:
-
普通程序在用户模式下运行。要查看系统描述符表,您需要在内核模式下运行代码,即作为驱动程序:github.com/proteansec/visual-studio-projects/tree/master/…。或者可能不是;见下一条评论。
-
未记录的 NtQuerySystemInformation 结构:gist.github.com/jNizM/ddf02494cd78e743eed776ce6164758f 类似:exploit-monday.com/2013/06/…
-
@asynchronos 我没听懂你的意思...我可以从用户模式查看 SSDT 吗?
-
并非没有内核模式的帮助。我想也许 NtQuerySystemInformation() 的未记录信息类可能会为您阅读,但我还没有找到任何此类/结构。
标签: c winapi windbg windows-kernel