- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
检测进程的虚拟地址空间.doc
//检测进程的虚拟地址空间
#include windows.h
#include iostream.h
#include shlwapi.h
#include iomanip.h
#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(pBlocksi.lpMaximumApplicationAddress)
//获得下一个虚拟内存块的信息
if(::VirtualQueryEx(
hProcess,//相关的进程
pBlock,//开始位置
mbi,//缓冲区
sizeof(mbi))==sizeof(mbi))//大小的确认
{
//计算块的结尾及其大小
LPCVOID pEnd=(PBYTE)pBlock+mbi.RegionSize;
TCHAR szSize[MAX_PATH];
::StrFormatByteSize(mbi.RegionSize, szSize, MAX_PATH);
//显示块地址和大小
cout.fill(0);
//显示块的状态
switch(mbi.State)
{
case MEM_COMMIT:
coutCommitted;
break;
case MEM_FREE:
coutFree;
break;
case MEM_RESERVE:
coutReserved;
break;
}
//显示保护
if(mbi.Protect==0 mbi.State!=MEM_FREE)
{
mbi.Protect=PAGE_READONLY;
}
ShowProtection(mbi.Protect);
//显示类型
switch(mbi.Type)
{
case MEM_IMAGE:
cout, Image;
break;
case MEM_MAPPED:
cout, Naooed;
break;
case MEM_PRIVATE:
cout, private;
break;
}
//检验可执行的映像
TCHAR szFilename[MAX_PATH];
if(::GetModuleFileName(
(HMODULE) pBlock,//实际虚拟内存的模块句柄
szFilename,//完全指定的文件名称
MAX_PAT
您可能关注的文档
最近下载
- 体例格式8:工学一体化课程《windows服务器基础配置与局域网组建》任务3学习任务考核方案.docx VIP
- 2025高中信息通用技术学业水平考试上机试题真题(含答案解析4).docx VIP
- 招标代理机构廉洁承诺书范文(9篇).pdf VIP
- 体例格式8:工学一体化课程《windows服务器基础配置与局域网组建》任务5学习任务考核方案.docx VIP
- 降水沉井及顶管专项施工方案.docx
- 体例格式8:工学一体化课程《windows服务器基础配置与局域网组建》任务6学习任务考核方案.docx VIP
- 城市雕塑创作设计收费标准.pdf VIP
- 【碳足迹报告】昌江华盛天涯水泥有限公司产品碳足迹报告(2023年度).docx
- SICK西克picoScan150 2D LiDAR激光扫描仪操作手册.pdf
- 2025高中学业水平考试信息通用技术上机试题真题(含答案解析6).pdf VIP
文档评论(0)