VMWARE在运行WINDOWS系统后,会在vmware-vmx.exe系统中申请一块当前虚拟机所使用内存大小的内存块(即客户机的的物理内存)。通过对内存块的暴力搜索可定位到客户机内system进程EProcess的进程对象结构,并取得system进程的页表地址。附代码为64位WIN10系统的实现,不同版本的系统可能存在稍有不同。
//暴力搜索system进程的EPROCESS模块
BYTE tezheng[10] = {0x53,0x59,0x53,0x54,0x45,0x4D,0x00};
BYTE tezheng1[10] = {0x73,0x79,0x73,0x74,0x65,0x6d,0x00};
ULONG64 VmmSize = 1024*1024*1024;
VmmSize *= 4;
DebugPrint("搜索系统CR3");
for(ULONG64 i = 0;i < VmmSize;i+= 4096)
{
line = 0;
ReadM64((HANDLE)pMemBaseClass->ProcessHand,(PVOID64)(pMemBaseClass->VmMemMapAddr+i),(PVOID)&tempBuffer,6144,&NumberOfBytesRead);
for(int j = 0;j < 5120;j++)
{
if(tempBuffer[j] == tezheng[line] || tempBuffer[j] == tezheng1[line])
{
line++;
}else{
line = 0;
}
if(line >= 7)
{
//DebugPrint("搜索系统CR3:0x%x,0x%llx,0x%llx",*(DWORD*)&tempBuffer[j-line&


