1 #include "iostream" 2 #include "windows.h" 3 #include "shlwapi.h" 4 #include "iomanip" 5 #pragma comment(lib,"shlwapi.lib") 6 using namespace std; 7 8 inline bool TestSet(DWORD dwTarget,DWORD dwMask){ 9 return ((dwTarget&dwMask)==dwMask); 10 } 11 12 #define SHOWMASK(dwTarget,type)\ 13 if(TestSet(dwTarget,PAGE_##type))\ 14 {cout<<","<<#type;} 15 16 void ShowProtection(DWORD dwTarget) 17 { 18 SHOWMASK(dwTarget,READONLY); 19 SHOWMASK(dwTarget,GUARD); 20 SHOWMASK(dwTarget,NOCACHE); 21 SHOWMASK(dwTarget,READWRITE); 22 SHOWMASK(dwTarget,WRITECOPY); 23 SHOWMASK(dwTarget,EXECUTE); 24 SHOWMASK(dwTarget,EXECUTE_READ); 25 SHOWMASK(dwTarget,EXECUTE_READWRITE); 26 SHOWMASK(dwTarget,EXECUTE_WRITECOPY); 27 SHOWMASK(dwTarget,NOACCESS); 28 } 29 30 void WalkVM(HANDLE hProcess){ 31 SYSTEM_INFO si; 32 ZeroMemory(&si,sizeof(si)); 33 GetSystemInfo(&si); 34 35 MEMORY_BASIC_INFORMATION mbi; 36 ZeroMemory(&mbi,sizeof(mbi)); 37 38 LPCVOID pBlock=(LPVOID)si.lpMinimumApplicationAddress; 39 while(pBlock0){ 92 PathStripPath(szFilename); 93 printf(",Module:%s",szFilename); 94 } 95 printf("\n"); 96 pBlock=pEnd; 97 } 98 } 99 }100 101 void main(){102 103 WalkVM(GetCurrentProcess());104 getchar();105 }