大概的思路:
当涉及到DirectoryTableBase的PTE Address时,可以通过计算得出。根据页表自映射的信息,很容易确定对应的PTE Address是PXE加上自映射页表的索引乘以8所得。
我们的目标是比较每个pfn的pte address。如果相等,那就意味着该pfn是CR3所对应的物理地址。
此外,根据前辈们的文章,可以得知MMPFN的第一项是经过加密处理的Eprocess
有此得出EPROCESS和Dirbase
完整代码:https://github.com/Rythorndoran/enum_real_dirbase/
相关引用:
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
cheating 我测试了几天,获取cr3不是很准,比如process.cr3=0x3d188000,从上面的代码获取偶尔会0x3d187000或者是0x3d189000,不是很懂。
syser 再找个地址读下数据做个验证就行了
cheating 上面我说的那个CR3出错混乱的问题解决了。
hzqst EAC:已举办