《检测进程的虚拟地址空间》由会员分享,可在线阅读,更多相关《检测进程的虚拟地址空间(7页珍藏版)》请在金锄头文库上搜索。
1、/检测进程的虚拟地址空间 #include #include #include #include #pragma comment(lib, “Shlwapi.lib“)/以可读方式对用户显示保护的辅助方法 /保护标记表示允许应用程序对内存进行访问的类型 /以及操作系统强制访问的类型 inline bool TestSet(DWORD dwTarget, DWORD dwMask) return(dwTarget #define SHOWMASK(dwTarget, type) void ShowProtection(DWORD dwTarget) SHOWMASK (dwTarget, REA
2、DONLY); SHOWMASK (dwTarget, GUARD); SHOWMASK (dwTarget, NOCACHE); SHOWMASK(dwTarget, READWRITE); SHOWMASK(dwTarget, WRITECOPY); SHOWMASK(dwTarget, EXECUTE); SHOWMASK(dwTarget, EXECUTE_READ); SHOWMASK(dwTarget, EXECUTE_READWRITE); SHOWMASK(dwTarget, EXECUTE_WRITECOPY); SHOWMASK(DWTarget, NOACCESS); /
3、遍历整个虚拟内存并对用户显示其属性的工作程序的方法 void WalkVM(HANDLE hProcess) /首先,获得系统信息 SYSTEM_INFO si; :ZeroMemory( :GetSystemInfo(/分配要存放信息的缓冲区 MEMORY_BASIC_INFORMATION mbi; :ZeroMemory(/循环整个应用程序地址空间 LPCVOID pBlock=(LPVOID)si.lpMinimumApplicationAddress; while(pBlock0)/实际使用的缓冲区大小 /除去路径并显示 :PathStripPath(szFilename); cout“, Module:“szFilename; coutendl; /移动块指针以获得下一个块 pBlock=pEnd; void main() /遍历当前进程的虚拟地址 :WalkVM(:GetCurrentProcess();