在远程内核调试中部分丢失了 DLL

The DLL is partly missed in remote kernel debugging

我正在使用 IDA + WinDBG 插件进行一些远程内核调试,我想在 DLL 中的某个函数中设置断点,这是我在 IDA 中反汇编它时发现的。我切换到加载目标DLL的进程,但不幸的是我发现内存中的DLL部分丢失,包括我的功能。

证明示例如下。此处 IDA 识别函数 sub_180001FC8,但在 WinDBG 中,此反汇编在地址 0x7fff3d131fff.

处中断

Screenshot 1 - 在实时内核调试中加载到内存的 DLL

Screenshot 2 - 在 IDA 中“静态”打开相同的 DLL

出了什么问题以及如何恢复遗漏的部分?

终于找到答案了。 反汇编中断的区域 ?? 被调出内存区域。
要“恢复”我使用命令的页面:

.pagein /f /p <process_address> <page_start_address>

我的情况:

.pagein /f /p 0xffffbc4a4405efc0 0x7fff3d132000

此命令从辅助存储加载内存页,它们在反汇编中可见。

参考文献:
https://en.wikipedia.org/wiki/Memory_paging
https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/-pagein--page-in-memory-