查找 Windows 内核 API 调用的用户进程

逆向工程 视窗
2021-06-27 21:53:24

我已经使用 WinDBG 在一些 Windows 内核函数上设置了断点。当断点被击中时,我可以使用!processor!peb命令查询有关调用用户模式进程的信息

这些命令是如何实现的?当我的一个 BP 命中时,如何找到相关的内存结构并“手动”追溯到用户模式调用者?

1个回答

当前进程 KPROCESS 偏移量由

IDebugSystemObjects::GetCurrentProcessDataOffset

peb 被返回

IDebugSystemObjects::GetCurrentProcessPeb method

两者都在 dbgeng 中实现

您可以设置特定于进程的断点,以便内核 api 仅在正确的进程上下文中中断

bp /p [eprocess] {kernel api}

查看kb断点时的堆栈使用情况

windbg 带有示例 src 代码,它显示了从非常旧的 wdbgext 扩展到最新的 engextcpp 扩展的各种形式的实现

一个基本的实现是简单直接的调用DebugCreate()来获取一个IDebugClient接口从这个客户端接口查询其他接口并调用方法

要查找展示如何使用 dbgeng 函数的系列文章,请在此处探索 http://www.woodmann.com/forum/entry.php?246-A-Simple-Dbgeng-Based-User-Mode-Debugger