方法来源于对Sysinternals的procexp的逆向。
在通过kernel的pdb获取未导出的MmSizeOfPagedPoolInBytes和MmMaximumNonPagedPoolInBytes时,procexp执行了如下几个步骤:
在通过kernel的pdb获取未导出的MmSizeOfPagedPoolInBytes和MmMaximumNonPagedPoolInBytes时,procexp执行了如下几个步骤:
1. 获取kernel的映像文件名称
调用IsProcessorFeaturePresent判断PAE是否开启,以确定使用ntoskrnl.exe还是ntkrnlpa.exe。
2. 获取kernel在内存中的基址
调用NtQuerySystemInformation,使用SystemModuleInformation(0x0B)枚举模块,并使用1中获得的文件名查找,确定kernel在内存中的基址。
3. 拼接kernel的完整路径,使用CreateFile(acces