diff --git a/files/vmm.dll b/files/vmm.dll index 9ade46f..f183bee 100644 Binary files a/files/vmm.dll and b/files/vmm.dll differ diff --git a/files/vmm.lib b/files/vmm.lib index 9ad5dd8..e34a737 100644 Binary files a/files/vmm.lib and b/files/vmm.lib differ diff --git a/vmm/mm_x86.c b/vmm/mm_x86.c index 0af452d..5028fac 100644 --- a/vmm/mm_x86.c +++ b/vmm/mm_x86.c @@ -45,6 +45,7 @@ VOID MmX86_TlbSpider(_In_ QWORD paDTB, _In_ BOOL fUserOnly) PMMX86_TLB_SPIDER_STAGE_INTERNAL pTlbSpiderStage; if(!(pTlbSpiderStage = (PMMX86_TLB_SPIDER_STAGE_INTERNAL)LocalAlloc(LMEM_ZEROINIT, sizeof(MMX86_TLB_SPIDER_STAGE_INTERNAL)))) { return; } pbPD = VmmTlbGetPageTable(paDTB & 0xfffff000, FALSE); + if(!pbPD) { return; } for(i = 0; i < 0x1000; i += 8) { pte = *(PDWORD)(pbPD + i); if(!(pte & 0x01)) { continue; } // not valid diff --git a/vmm/vmm.h b/vmm/vmm.h index 93e8fb3..d8eaf37 100644 --- a/vmm/vmm.h +++ b/vmm/vmm.h @@ -59,7 +59,7 @@ typedef struct tdMEM_IO_SCATTER_HEADER { #define VMM_VERSION_MAJOR 1 #define VMM_VERSION_MINOR 2 -#define VMM_VERSION_REVISION 0 +#define VMM_VERSION_REVISION 1 static const LPSTR VMM_MEMORYMODEL_TOSTRING[4] = { "N/A", "X86", "X86PAE", "X64" }; diff --git a/vmm/vmmdll.c b/vmm/vmmdll.c index 65e9854..12a04f4 100644 --- a/vmm/vmmdll.c +++ b/vmm/vmmdll.c @@ -235,7 +235,7 @@ BOOL VMMDLL_InitializeFile(_In_ LPSTR szFileName, _In_opt_ LPSTR szPageTableBase _Success_(return) BOOL VMMDLL_InitializeFPGA(_In_opt_ LPSTR szMaxPhysicalAddressOpt, _In_opt_ LPSTR szPageTableBaseOpt) { - return VMMDLL_InitializeReserved(7, (LPSTR[]) { "", "-device", "fpga", "-cr3", (szPageTableBaseOpt ? szPageTableBaseOpt : "0", "-max", szMaxPhysicalAddressOpt) }); + return VMMDLL_InitializeReserved(7, (LPSTR[]) { "", "-device", "fpga", "-cr3", (szPageTableBaseOpt ? szPageTableBaseOpt : "0"), "-max", (szMaxPhysicalAddressOpt ? szMaxPhysicalAddressOpt : "0") }); } _Success_(return) diff --git a/vmm/vmmvfs.c b/vmm/vmmvfs.c index 2f57534..6cc1818 100644 --- a/vmm/vmmvfs.c +++ b/vmm/vmmvfs.c @@ -320,7 +320,7 @@ BOOL VmmVfsListFilesProcess(_In_ PVMMVFS_PATH pPath, _Inout_ PHANDLE pFileList) if(!pProcess) { return FALSE; } if(!pProcess->pMemMap || !pProcess->cMemMap) { if(!pProcess->fSpiderPageTableDone) { - VmmTlbSpider(0, pProcess->fUserOnly); + VmmTlbSpider(pProcess->paDTB, pProcess->fUserOnly); pProcess->fSpiderPageTableDone = TRUE; } VmmMapInitialize(pProcess);