//检测进程的虚拟地址空间
#include
#include
#include
#include
#pragma comment(lib, "Shlwapi.lib")
//以可读方式对用户显示保护的辅助方法
//保护标记表示允许应用程序对内存进行访问的类型
//以及操作系统强制访问的类型
inline bool TestSet(DWORD dwTarget, DWORD dwMask)
{
return((dwTarget & dwMask)==dwMask);
}
#define SHOWMASK(dwTarget, type)
void ShowProtection(DWORD dwTarget)
{
SHOWMASK (dwTarget, READONLY);
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);
}
//遍历整个虚拟内存并对用户显示其属性的工作程序的方法
void WalkVM(HANDLE hProcess)
{
//首先,获得系统信息
SYSTEM_INFO si;
::ZeroMemory(&si, sizeof(si));
::GetSystemInfo(&si);
//分配要存放信息的缓冲区
MEMORY_BASIC_INFORMATION mbi;
::ZeroMemory(&mbi, sizeof(mbi));
//循环整个应用程序地址空间
LPCVOID pBlock=(LPVOID)si.lpMinimumApplicationAddress;
while(pBlock0)//实际使用的缓冲区大小
{
//除去路径并显示
::PathStripPath(szFilename);
cout<<", Module:"<