【问题标题】:Where to find memory addresses of a process in _EPROCESS在 _EPROCESS 中哪里可以找到进程的内存地址
【发布时间】:2021-07-06 22:29:24
【问题描述】:

我正在研究一些内存取证以供娱乐和培训。我尝试在进程使用的内存中找到(虚拟)地址。在运行时,这并不难(我使用 vmmap),但我尝试了解进程将这些信息存储在哪里。我能够在内存转储中找到进程的 _EPROCESS 或 PET,但我不知道进程将其地址存储在哪里。此信息存储在 Windows 操作系统中的什么位置?尤其是当进程需要超过 4K 的页面时..,

提前谢谢

【问题讨论】:

    标签: windows memory-management


    【解决方案1】:

    我自己没有玩过它,但理论上,从虚拟地址到物理地址的转换是使用称为 PDT 表的结构执行的。当进程运行时,指向该表的指针始终存储在寄存器 CR3 中。该指针表示物理内存地址(否则无法解析 PDT 的基地址)。

    当有上下文切换并且另一个进程开始运行时,CR3的值会更新为新进程的PDT的物理地址,该物理地址存储在_KPROCESS(@987654324的Pcb字段中@) 的新进程,在字段 DirectoryTableBase 中。一旦有了 PDT 的基地址,就可以执行从虚拟地址到物理地址的转换。

    对此有更深入的解释,带有WinDbg的例子,可以在https://resources.infosecinstitute.com/topic/translating-virtual-to-physical-address-on-windows-physical-addresses/找到

    【讨论】:

      猜你喜欢
      • 2013-05-13
      • 2019-01-07
      • 1970-01-01
      • 2021-07-31
      • 1970-01-01
      • 2013-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多