#include "iostream"
#include "windows.h"
#include "shlwapi.h"
#include "iomanip"
#pragma comment(lib,"shlwapi.lib")
using namespace std; inline bool TestSet(DWORD dwTarget,DWORD dwMask){
return ((dwTarget&dwMask)==dwMask);
} #define SHOWMASK(dwTarget,type)\
if(TestSet(dwTarget,PAGE_##type))\
{cout<<","<<#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(pBlock<si.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('');
cout<<hex<<setw()<<(DWORD)pBlock
<<"-"
<<hex<<setw()<<(DWORD)pEnd
<<(strlen(szSize)==?"(":"(")<<szSize
<<")"; switch(mbi.State){
case MEM_COMMIT:
printf("Committed");
break;
case MEM_FREE:
printf("Free");
break;
case MEM_RESERVE:
printf("Reserved");
break; } if(mbi.Protect==&&mbi.State!=MEM_FREE){
mbi.Protect=PAGE_READONLY;
}
ShowProtection(mbi.Protect); switch(mbi.Type){
case MEM_IMAGE:
printf(",Image");
break;
case MEM_MAPPED:
printf(",Mapped");
break;
case MEM_PRIVATE:
printf(",Private");
break;
} TCHAR szFilename[MAX_PATH];
if(GetModuleFileName((HMODULE)pBlock,
szFilename,
MAX_PATH
)>){
PathStripPath(szFilename);
printf(",Module:%s",szFilename);
}
printf("\n");
pBlock=pEnd;
}
}
} void main(){ WalkVM(GetCurrentProcess());
getchar();
}

windows系统调用 遍历进程的虚拟地址的更多相关文章

  1. Windows编程之进程遍历(C++实现)

    Windows编程之进程遍历 PS: 主要扣代码使用,直接滑动到最下面使用. 遍历进程需要几个API,和一个结构体 1.创建进程快照 2.遍历首次进程 3.继续下次遍历 4.进程信息结构体 API 分 ...

  2. Windows提高_1.2遍历进程、遍历模块

    进程 什么是进程? 通俗的来讲,进程就是一个运行中的程序,最少包含一个虚拟空间,通常是 4 GB大小,一组提供数据和代码的模块,通产是 dll 和 exe 文件,一个进程内核对象和最少一个线程. 进程 ...

  3. windows:跨进程读数据

    外挂.木马.病毒等可能需要读取其他进程的数据,windows提供了OpenProcess.ReadProcessMemory等函数.但越是大型的软件,防护做的越好,大概率会做驱动保护,比如hook S ...

  4. [转]Windows 下的进程间通讯及数据共享

    http://blog.codingnow.com/2005/10/interprocess_communications.html Windows 下有很多方法实现进程间通讯,比如用 socket, ...

  5. windows 多任务与进程

    多任务,进程与线程的简单说明 多任务的本质就是并行计算,它能够利用至少2处理器相互协调,同时计算同一个任务的不同部分,从而提高求解速度,或者求解单机无法求解的大规模问题.以前的分布式计算正是利用这点, ...

  6. powershell脚本之windows服务与进程

    powershell脚本之windows服务与进程 服务与进程的区别: Windows服务是指系统自动完成的,不需要和用户交互的过程,可长时间运行的可执行应用程序 进程是程序运行的实例,系统会给运行中 ...

  7. Windows系统调用中API从3环到0环(下)

     Windows内核分析索引目录:https://www.cnblogs.com/onetrainee/p/11675224.html Windows系统调用中API从3环到0环(下) 如果对API在 ...

  8. 未公开函数 NtQuerySystemInfoMation 遍历进程信息,获得进程的用户名(如: system,Admin..)

    目录 遍历进程用户名 代码例子 遍历进程用户名 代码例子 #include <windows.h> #include <iostream> #include <COMDE ...

  9. 【windows 操作系统】进程控制块(PCB)

    转载地址:https://blog.csdn.net/qq_38499859/article/details/80057427一.目录文章目录    操作系统3 ----进程控制块(PCB)详解    ...

随机推荐

  1. fiddler 拦截小结

    一,拦截请求或响应常用命令 1.拦截命令 bpu 清除拦截请求 bpu http://www.baidu.com 拦截访问百度网站的请求.可以在 request 框的 WebForms 中改请求内容. ...

  2. Hibernate4Maven

    How to create a Maven project with Hibernate libs? This blog will be a demo to describe this issue. ...

  3. Maven_如何为开发和生产环境建立不同的配置文件 --我的简洁方案

    其实也是最近才看Maven, 以前都是用ant+ivy, 对于轻量级的项目来说足够了, 而且非常灵活. 看了看Maven, 约定.... 现在编程都说约定, 约定是挺好, 问题是超出约定的事情太多了, ...

  4. Redis_jedis高版本的JedisPoolConfig没有maxActive和maxWait

    dbcp的修改日志显示:change "maxActive" -> "maxTotal" and "maxWait" -> &q ...

  5. java二叉树的实现和遍历

    /* * Java实现二叉树 */ public class BinaryTree { int treeNode; BinaryTree leftTree; BinaryTree rightTree; ...

  6. ASPCMS标签教程

    导航栏调用{aspcms:navlist type=0}    <a href="[navlist:link]">[navlist:name]</a>{/a ...

  7. visual studio 2012 的制作ActiveX、打包和发布[转]

    开发环境是Vs 2012  Framework 4.0 源地址:http://www.cnblogs.com/li-peng/p/3455247.html 源码和制作工具在文章最下边 一. Activ ...

  8. markdown语法学习笔记

    ##1.**标题** # 一级标题 ## 二级标题   ### 三级标题 #### 四级标题 ##### 五级标题 ###### 六级标题 ##2.**加粗** 首尾各加两个*号   ##3.*斜字体 ...

  9. 演示一个使用db vault进行安全控制的示例

    1.确认数据库版本 2.安装db vault组件 通过DBCA配置db vault: 3.创建测试用户及表 4.创建域并加入用户 5.测试演示

  10. Datatable转换Json

    #region Datatable转换为Json        /// <summary>         /// Datatable转换为Json         /// </su ...