windows系统调用 遍历进程的虚拟地址
#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系统调用 遍历进程的虚拟地址的更多相关文章
- Windows编程之进程遍历(C++实现)
Windows编程之进程遍历 PS: 主要扣代码使用,直接滑动到最下面使用. 遍历进程需要几个API,和一个结构体 1.创建进程快照 2.遍历首次进程 3.继续下次遍历 4.进程信息结构体 API 分 ...
- Windows提高_1.2遍历进程、遍历模块
进程 什么是进程? 通俗的来讲,进程就是一个运行中的程序,最少包含一个虚拟空间,通常是 4 GB大小,一组提供数据和代码的模块,通产是 dll 和 exe 文件,一个进程内核对象和最少一个线程. 进程 ...
- windows:跨进程读数据
外挂.木马.病毒等可能需要读取其他进程的数据,windows提供了OpenProcess.ReadProcessMemory等函数.但越是大型的软件,防护做的越好,大概率会做驱动保护,比如hook S ...
- [转]Windows 下的进程间通讯及数据共享
http://blog.codingnow.com/2005/10/interprocess_communications.html Windows 下有很多方法实现进程间通讯,比如用 socket, ...
- windows 多任务与进程
多任务,进程与线程的简单说明 多任务的本质就是并行计算,它能够利用至少2处理器相互协调,同时计算同一个任务的不同部分,从而提高求解速度,或者求解单机无法求解的大规模问题.以前的分布式计算正是利用这点, ...
- powershell脚本之windows服务与进程
powershell脚本之windows服务与进程 服务与进程的区别: Windows服务是指系统自动完成的,不需要和用户交互的过程,可长时间运行的可执行应用程序 进程是程序运行的实例,系统会给运行中 ...
- Windows系统调用中API从3环到0环(下)
Windows内核分析索引目录:https://www.cnblogs.com/onetrainee/p/11675224.html Windows系统调用中API从3环到0环(下) 如果对API在 ...
- 未公开函数 NtQuerySystemInfoMation 遍历进程信息,获得进程的用户名(如: system,Admin..)
目录 遍历进程用户名 代码例子 遍历进程用户名 代码例子 #include <windows.h> #include <iostream> #include <COMDE ...
- 【windows 操作系统】进程控制块(PCB)
转载地址:https://blog.csdn.net/qq_38499859/article/details/80057427一.目录文章目录 操作系统3 ----进程控制块(PCB)详解 ...
随机推荐
- PHP递归小例子
$news = M('productbase'); function digui($idd){ $child=M('navclass')->where('f_id='.$idd)->sel ...
- GO语言练习:多返回值函数
1.代码 2.运行 1.代码 package main import ( "fmt" "strconv" ) func getValue(n int) (flo ...
- JS实现设为首页与加入收藏
<script type="text/javascript"> // 设置为主页 function SetHome(obj, vrl) { try { obj.styl ...
- nodejs之async异步编程
1.什么是异步编程? 异步编程是指由于异步I/O等因素,无法同步获得执行结果时, 在回调函数中进行下一步操作的代码编写风格,常见的如setTimeout函数.ajax请求等等. 示例: for (v ...
- 李洪强iOS经典面试题128
1.写一个NSString类的实现 + (id)initWithCString:(c*****t char *)nullTerminatedCString encoding:(NSStringEnco ...
- 放弃iOS4,拥抱iOS5
前言 苹果在2011年的WWDC大会上发布了iOS5,不过考虑到要支持iOS4.x的系统,大多数App都无法使用iOS5的新特性.现在将近1年半过去了,从我们自己的App后台的统计数据.一些第三方 ...
- HDU1058 DP
Humble Numbers Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)To ...
- Daily Scrum 11.5
今天成员全部到齐,对今天的工作进行了总结,并对明天的工作作了安排.由于先前分配的任务都已基本完成,要完成程序的三级优化是较为艰巨的任务.所以我们讨论决定,除PM外其他成员都投入到程序的优化和改进中去. ...
- Server Error in '/' Application
在服务器部署了网站,然后访问的时候出现异常 Server Error in '/' Application,一般这样的异常都是不明确的,我们应当把网站根目录web.config<custom ...
- Html5 与 Html4 的区别
HTML5是HTML标准的下一个版本.虽然HTML5没有完全颠覆HTML4,但是它们也有一些不同.最新最全的HTML5-HTML4对比信息 请看http://dev.w3.org/html5/html ...