初步了解Windows应用程序内存结构 - 使用VMMAP工具
Posted bcbobo21cn
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初步了解Windows应用程序内存结构 - 使用VMMAP工具相关的知识,希望对你有一定的参考价值。
VMMap工具在此下载;
https://docs.microsoft.com/zh-cn/sysinternals/downloads/vmmap
VMMap 是一个进程虚拟和物理内存分析实用程序。
它显示了进程的已提交虚拟内存类型的细分,以及操作系统为这些类型分配的物理内存量 (工作集) ;
看几个程序的内存情况;
根据网上资料,Type一列的含义如下;
Image(可执行文件),
Mapped file(由CreateFileMapping以文件作为back up)。
Sharable(由CreateFileMapping以内存作为 back up)
Private Data(由Virtual Alloc分配)
Heap(由new,GlobalAlloc和HeapAlloc等分配)
Stack(栈占用的控件)
Page table(内核里面维护当前虚拟地址控件所需要的内存)
Managed Heap(由.NET garbage collector分配和管理);
Image,这应是程序员所写代码编译后装入内存的部分;
Private Data,这可能是程序的私有变量;
Page table,每个应用程序的内存都包含这个,我还不了解;
Managed Heap,.Net写的程序才有这个;
Mapped file,Sharable,这两个有什么区别,我还不了解;按它说都是用CreateFileMapping创建;
CreateFileMapping的基本用法是创建内存映射文件,就是申请一片内存,申请成功后该片内存可以像访问文件一样访问;
以上是横向的分类;
纵向的,又包括:
Size: 总体大小,包括了commit和没有reservce的内存;
Committed: committed的大小,包括Private内存和可共享的内存;
Private:属于当前进程的虚拟内存,指的是当你修改他时仅仅当前进程会受到影响;
以下的几个指标指的是物理内存:
Total WS: 所有的working set,包括private working set和sharable working set;
Private WS: private working set,仅属于当前进程的working set;
Sharable WS,可共享的working set;
Shared WS,已经共享的working set,这个值应该是sharable working set的一部分或者全部;
以上是关于初步了解Windows应用程序内存结构 - 使用VMMAP工具的主要内容,如果未能解决你的问题,请参考以下文章
Windows 逆向使用 CE 分析内存地址 ( 运行游戏 | 使用 CE 工具分析游戏内子弹数量对应的内存地址 | 内存地址初步查找 | 使用二分法定位最终的内存地址 )