内存取证:禁用页面文件但仍然不是内存中的所有内容

逆向工程 视窗 记忆 数字取证
2021-06-29 18:19:17

我正在 Windows XP SP2 内存转储上使用波动性和 pefile 进行内存取证。

我在 VirtualBox VM 中运行 Windows 并使用 vboxmanage debugvm dumpguestcore --filename dump.vmem 获取转储

我正在尝试构建一个由进程导入的 dll 树。因此,我从 process 开始递归地遍历 dll ImageBaseAddress出现的问题是,对于某些 dll,dllBase 被分页,因此我无法读取导入和延迟导入目录结构。

我尝试在Control Panel-> System-> Advanced-> Perfomance-> Advanced-> Virtual Memory-> 中禁用分页No paging file我还将注册表项HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\DisablePagingExecutive更改01,但行为保持不变。

另一个问题是,即使 dllBase 没有被分页,有时即使模块 / dll 有目录,但使用 PEfile 读取导入或延迟导入目录也会失败。

非常感谢任何帮助。

1个回答

分页文件通常用于脏页,而不是用于干净页。干净的可以直接从原始文件中读取,因此不需要将它们存储在页面文件中(如果它们还没有被读取过,那么它们根本不会在内存中)。此外,如果延迟加载 DLL 从未被引用过,它们将不会在内存中,因此您将无法使用与它们相关的任何内容。因此,如果存在物理内存限制,仅仅因为禁用分页并不意味着所有内容都将完全在内存中。您可以尝试增加物理内存的大小,也许让进程运行更长时间。