快乐虾
http://blog.csdn.net/lights_joy/
lights@hb165.com
本文适用于
Xp sp3
vs2008
欢迎转载,但请保留作者信息
《windows核心编程》告诉我们,对于每个应用程序的4G虚拟空间可以分为4个大块:
0x0000 0000 ~ 0x0000 ffff:空指针赋值分区
0x0001 0000 ~ 0x7ffe ffff:用户模式分区
0x7fff 0000 ~ 0x7fff ffff:64K禁入分区
0x8000 0000 ~ 0xffff ffff:内核模式分区
但是再要具体点就需要自己研究了。
咱就来看看一个应用程序是怎么使用这4G的空间的。先写段代码查询一下这4G空间中内存块的大致分类:
SYSTEM_INFO info;
MEMORY_BASIC_INFORMATION mi;
HANDLE hProcess;
DWORD dwAddr;
MEMORY_BASIC_INFORMATION miBlock[1000];
int nCount = 0;
hProcess = GetCurrentProcess();
GetSystemInfo(&info);
dwAddr = (DWORD)info.lpMinimumApplicationAddress;
do
{
VirtualQueryEx(hProcess, (LPCVOID)dwAddr, &mi, sizeof(mi));
memcpy(&miBlock[nCount++], &mi, sizeof(mi));
dwAddr += mi.RegionSize;
} while(dwAddr < (DWORD)info.lpMaximumApplicationAddress);
print_block_table(miBlock, nCount);
。。。。。。。。。。。。。
在这种方式下,将可以得到249个内存块,如下表所示(所有值均为十六进制):
基址
|
分配基址
|
分配保护
|
大小
|
状态
|
保护
|
类型
|
00010000
|
00010000
|
00000004 PAGE_READWRITE
|
00002000
|
00001000 MEM_COMMIT
|
00000004 PAGE_READWRITE
|
00020000 MEM_PRIVATE
|
00012000
|
00000000
|
00000000
|
0000e000
|
00010000 MEM_FREE
|
00000001 PAGE_NOACCESS
|
00000000
|
00020000
|
00020000
|
00000004 PAGE_READWRITE
|
00001000
|
00001000 MEM_COMMIT
|
00000004 PAGE_READWRITE
|
00020000 MEM_PRIVATE
|
00021000
|
00000000
|
00000000
|
0000f000
|
00010000 MEM_FREE
|
00000001 PAGE_NOACCESS
|
00000000
|
00030000
|
00030000
|
00000004 PAGE_READWRITE
|
000ed000
|
00002000 MEM_RESERVE
|
00000000
|
00020000 MEM_PRIVATE
|
0011d000
|
00030000
|
00000004 PAGE_READWRITE
|
00001000
|
00001000 MEM_COMMIT
|
00000104 PAGE_READWRITE PAGE_GUARD
|
00020000 MEM_PRIVATE
|
0011e000
|
00030000
|
00000004 PAGE_READWRITE
|
00012000
|
00001000 MEM_COMMIT
|
00000004 PAGE_READWRITE
|
00020000 MEM_PRIVATE
|
00130000
|
00130000
|
00000002 PAGE_READONLY
|
00003000
|
00001000 MEM_COMMIT
|
00000002 PAGE_READONLY
|
00040000 MEM_MAPPED
|
00133000
|
00000000
|
00000000
|
0000d000
|
00010000 MEM_FREE
|
00000001 PAGE_NOACCESS
|
00000000
|
00140000
|
00140000
|
00000002 PAGE_READONLY
|
00001000
|
00001000 MEM_COMMIT
|
00000002 PAGE_READONLY
|
00040000 MEM_MAPPED
|
00141000
|
00000000
|
00000000
|
0000f000
|
00010000 MEM_FREE
|
00000001 PAGE_NOACCESS
|
00000000
|
00150000
|
00150000
|
00000004 PAGE_READWRITE
|
00012000
|
00001000 MEM_COMMIT
|
00000004 PAGE_READWRITE
|
00020000 MEM_PRIVATE
|
00162000
|
00150000
|
00000004 PAGE_READWRITE
|
000ee000
|
00002000 MEM_RESERVE
|
00000000
|
00020000 MEM_PRIVATE
|
00250000
|
00250000
|
00000004 PAGE_READWRITE
|
00006000
|
00001000 MEM_COMMIT
|
00000004 PAGE_READWRITE
|
00020000 MEM_PRIVATE
|
00256000
|
00250000
|
00000004 PAGE_READWRITE
|
0000a000
|
00002000 MEM_RESERVE
|
00000000
|
00020000 MEM_PRIVATE
|
00260000
|
00260000
|
00000004 PAGE_READWRITE
|
00003000
|
00001000 MEM_COMMIT
|
00000004 PAGE_READWRITE
|
00040000 MEM_MAPPED
|
00263000
|
00260000
|
00000004 PAGE_READWRITE
|
0000d000
|
00002000 MEM_RESERVE
|
00000000
|
00040000 MEM_MAPPED
|
00270000
|
00270000
|
00000002 PAGE_READONLY
|
00016000
|
00001000 MEM_COMMIT
|
00000002 PAGE_READONLY
|
00040000 MEM_MAPPED
|
00286000
|
00000000
|
00000000
|
0000a000
|
00010000 MEM_FREE
|
00000001 PAGE_NOACCESS
|
00000000
|
00290000
|
00290000
|
00000002 PAGE_READONLY
|
00041000
|
00001000 MEM_COMMIT
|
00000002 PAGE_READONLY
|
00040000 MEM_MAPPED
|
002d1000
|
00000000
|
00000000
|
0000f000
|
00010000 MEM_FREE
|
00000001 PAGE_NOACCESS
|
00000000
|
002e0000
|
002e0000
|
00000002 PAGE_READONLY
|
00041000
|
00001000 MEM_COMMIT
|
00000002 PAGE_READONLY
|
00040000 MEM_MAPPED
|
00321000
|
00000000
|
00000000
|
0000f000
|
00010000 MEM_FREE
|
00000001 PAGE_NOACCESS
|
00000000
|
00330000
|
00330000
|
00000002 PAGE_READONLY
|
00006000
|
00001000 MEM_COMMIT
|
00000002 PAGE_READONLY
|
00040000 MEM_MAPPED
|
00336000
|
00000000
|
00000000
|
0000a000
|
00010000 MEM_FREE
|
00000001 PAGE_NOACCESS
|
00000000
|
00340000
|
00340000
|
00000002 PAGE_READONLY
|
00041000
|
00001000 MEM_COMMIT
|
00000002 PAGE_READONLY
|
00040000 MEM_MAPPED
|
00381000
|
00000000
|
00000000
|
0000f000
|
00010000 MEM_FREE
|
00000001 PAGE_NOACCESS
|
00000000
|
00390000
|
00390000
|
00000004 PAGE_READWRITE
|
0003c000
|
00002000 MEM_RESERVE
|
00000000
|
00020000 MEM_PRIVATE
|
003cc000
|
00390000
|
00000004 PAGE_READWRITE
|
00001000
|
00001000 MEM_COMMIT
|
00000104 PAGE_READWRITE PAGE_GUARD
|
00020000 MEM_PRIVATE
|
003cd000
|
00390000
|
00000004 PAGE_READWRITE
|
00003000
|
00001000 MEM_COMMIT
|
00000004 PAGE_READWRITE
|
00020000 MEM_PRIVATE
|
003d0000
|
003d0000
|
00000002 PAGE_READONLY
|
00001000
|
00001000 MEM_COMMIT
|
00000002 PAGE_READONLY
|
00040000 MEM_MAPPED
|
003d1000
|
00000000
|
00000000
|
0000f000
|
00010000 MEM_FREE
|
00000001 PAGE_NOACCESS
|
00000000
|
003e0000
|
003e0000
|
00000004 PAGE_READWRITE
|
00005000
|
00001000 MEM_COMMIT
|
00000004 PAGE_READWRITE
|
00020000 MEM_PRIVATE
|
003e5000
|
003e0000
|
00000004 PAGE_READWRITE
|
0000b000
|
00002000 MEM_RESERVE
|
00000000
|
00020000 MEM_PRIVATE
|
003f0000
|
003f0000
|
00000002 PAGE_READONLY
|
00003000
|
00001000 MEM_COMMIT
|
00000002 PAGE_READONLY
|
00040000 MEM_MAPPED
|
003f3000
|
00000000
|
00000000
|
0000d000
|
00010000 MEM_FREE
|
00000001 PAGE_NOACCESS
|
00000000
|
00400000
|
EN-
分享到:
Global site tag (gtag.js) - Google Analytics
|
相关推荐
visual studio 2019编译能在windows xp下运行的程序
Xposed框架是一种基于模块的系统,这意味着用户可以选择安装不同的模块来实现不同的功能和修改。总的来说,Xposed鸭是一个非常有用的工具,它可以帮助Android用户实现各种自定义和修改,而无需进行复杂的ROM修改。它...
本书主要介绍DriverStudio开发工具开发Windows 2000/XP下的WDM设备驱动程序的原理及编程方法。本书详细介绍了WDM基本程序框架和编程,IRP的基本概念及编程,WDM和应用程序之间的通信、即插即用、电源管理、WMI的编程...
让VS2013编写的程序在XP下运行
windows xp 防火墙服务启动报错解决办法:注册表修复文件
Windows XP下驱动程序编写探讨Windows XP下驱动程序编写探讨
一款可以在不修改APK的情况下影响程序运行(修改系统)的框架服务,基于它可以制作出许多功能强大的模块,且在功能不冲突的情况下同时运作。
专用改机XP框架安装器一键安装XP
夜神模拟器XP框架
一个XP下运行不了的程序 一个XP下运行不了的程序
xp框架 模拟器xp框架 解决加壳类、有检测的 防抓包、防调试的app抓包问题 将文件复制到逍遥模拟器安装目录并运行install.bat文件
一些手游可以放大地图扩大视野的好东西。大家可以用一用。
xp框架 基于xp框架hook的DEMO
Java聊天室程序源 2 需求分析 2.1 业务需求 1. 与聊天室成员一起聊天。 2. 可以与聊天室成员私聊。 3. 可以改变聊天内容风格。 4. 用户注册(含头像)、登录。 5. 服务器监控聊天内容。 6. 服务器过滤非法...
r11全机型root工具+升级官方最新包+xp框架.zip
x86-64安卓7.1的xp框架,凤凰论坛大神编译的,至今为止只有这一个,所以大家好好珍惜吧
检测xp框架插件.zip
tourstart:xp简介(安装完成后出现的漫游xp程序) taskmgr:任务管理器 eventvwr:事件查看器 eudcedit:造字程序 explorer:打开资源管理器 packager:对象包装程序 perfmon.msc:计算机性能监测程序 ...
编写一个实现Windows XP下通用I/O端口读写功能的WDM驱动程序及其应用层测试程序,该驱动程序的主要功能如下: 能够向指定的I/O端口写入一个或多个字节。 能够从指定的I/O端口读出一个或多个字节。 能够同时支持多个...