Windows 为什么加载到内存中的DLL不';是否与原始DLL文件不完全对应?
如果我哪里错了,请纠正我 我想做什么: 我想在通过WinDBG进行远程内核调试期间,在Windows服务加载的某个DLL中找到某个函数。(使用Windows 10 x64的IDA+VirtualKD+VMWare虚拟机中的WinDBG插件)。 我需要在内核模式下运行,因为我需要切换进程并查看所有内存 我所做的:Windows 为什么加载到内存中的DLL不';是否与原始DLL文件不完全对应?,windows,debugging,reverse-engineering,windbg,ida,Windows,Debugging,Reverse Engineering,Windbg,Ida,如果我哪里错了,请纠正我 我想做什么: 我想在通过WinDBG进行远程内核调试期间,在Windows服务加载的某个DLL中找到某个函数。(使用Windows 10 x64的IDA+VirtualKD+VMWare虚拟机中的WinDBG插件)。 我需要在内核模式下运行,因为我需要切换进程并查看所有内存 我所做的: 我在IDA中找到了函数的偏移量(不幸的是,DLL没有调试符号) 以内核模式连接到VM 通过迭代svchost进程(!进程0 0 svchost.exe)并查看其PEB中的命令行字段(C:
!进程0 0 svchost.exe
)并查看其PEB中的命令行字段(C:\Windows\system32\svchost.exe-k…
),找到了服务的进程.process/i;g
),刷新模块列表(.reload
)+
这样的地址时,那里和周围什么都没有。但是我发现其他一些函数使用这个方法,所以它看起来是正确的。
然后,我试图根据原始DLL文件查找属于该函数的字节序列,但也没有得到任何结果。
该函数使用我在数据部分中找到的字符串,但没有外部参照。
看起来这个功能已经完全消失了
我做错了什么
另外,我将内存从
转储到
,并将其与原始文件进行比较。除了不同的跳转地址和偏移量之外,有时汇编代码完全丢失了…似乎内存页被调出了.pagein
命令完成了这项任务看起来,一些内存页被调出(移动到辅助存储器)。此命令从辅助存储器加载页面,并显示在反汇编中:
.pagein /f /p <process_address> <memory_page_address>
.pagein/f/p
有关更多信息,请参阅:数据从哪个地址开始丢失?如果它是一个页面偏移量,可能它当前已被调出。它将显示为
?
@thomas weller,谢谢!内存页似乎被调出了。佩金指挥部成功了