如何解决在 _EPROCESS 中哪里可以找到进程的内存地址
为了娱乐和训练,我正在研究一些记忆取证。我尝试在进程使用的内存中查找(虚拟)地址。在运行时,这并不难(我使用 vmmap),但我尝试了解进程将这些信息存储在哪里。我能够在内存转储中找到进程的 _EPROCESS 或 PET,但我不知道进程在哪里存储其地址。此信息存储在 Windows 操作系统中的何处?尤其是当进程需要超过 4K 的页面时..,
提前谢谢
解决方法
我自己没有玩过,但理论上,从虚拟地址到物理地址的转换是使用称为 PDT 表的结构执行的。当进程运行时,指向该表的指针始终存储在寄存器 CR3 中。该指针表示物理内存地址(否则无法解析PDT的基地址)。
当发生上下文切换并且另一个进程开始运行时,CR3 的值会更新为新进程的 PDT 物理地址,该地址存储在 _KPROCESS
(Pcb
字段新进程的 _EPROCESS
),在字段 DirectoryTableBase
中。一旦获得了 PDT 的基地址,就可以执行从虚拟地址到物理地址的转换。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。