内存读写——使用示例
内存读写——相关函数
中文名称 | 英文名称 | 示例 | 作用 |
全局计数 | GlobalFlags | 全局计数(内存) | 检索有关指定全局内存对象的分配值和锁定计数。 |
全局指针 | GlobalHandle | 全局指针(内存) | 检索与指向全局内存块的指定指针关联的句柄。 |
堆块首个 | Heap32First | 堆块首个(堆块类,进程号,堆号) | 检索有关进程分配的堆的第一个块的信息。 |
堆存首个 | Heap32ListFirst | 堆存首个(快照,堆表类) | 检索有关指定进程分配的第一个堆的信息。 |
堆存下个 | Heap32ListNext | 堆存下个(快照,堆表类) | 检索有关指定进程分配的第一个堆的信息。 |
堆块下个 | Heap32First | 堆块下个(堆块类) | 检索有关进程已分配的堆的下一个块的信息。 |
局部分配 | LocalAlloc | 局部分配(方式,大小) | 从堆中分配指定的字节数。方式:0固定,2可移动,0x40初始化为零 |
局部计数 | LocalFlags | 局部计数(内存) | 检索有关指定局部内存对象的分配值和锁定计数。 |
局部指针 | LocalHandle | 局部指针(内存) | 检索与指向局部内存块的指定指针关联的句柄。 |
局部释放 | LocalFree | 局部释放(内存) | 释放指定的局部内存对象并使其空间无效 |
局部锁定 | LocalLock | buf=局部锁定(内存) | 返回指定的局部内存对象第一个字节的指针 |
局部更改 | LocalReAlloc | 局部更改(内存,大小,方式) | 更改指定的局部内存对象的大小或方式:0固定,2可移动,0x40初始化为零 |
局部大小 | LocalSize | ln=局部大小(内存) | 获取指定的局部内存对象的当前大小 |
局部解锁 | LocalUnlock | 局部解锁(内存) | 取消指定的局部内存对象关联的内存分配空间 |
全局内存 | GlobalMemoryStatus | 全局内存(内存信息类) | 获取当前可用的物理和虚拟内存信息 |
全局分配 | GlobalAlloc | 内存=全局分配(方式,大小) | 从堆中分配指定的字节数内存。0固定,2可移动,$40初始化零 |
全局释放 | GlobalFree | 全局释放(内存) | 释放指定的全局内存对象并使其空间无效 |
全局锁定 | GlobalLock | buf=全局锁定(内存) | 返回指定的全局内存对象第一个字节的指针 |
全局更改 | GlobalReAlloc | 全局更改(内存,大小,方式) | 更改指定的全局内存对象的大小或属性 |
全局大小 | GlobalSize | 长度=全局大小(内存) | 获取指定的全局内存对象的当前大小 |
全局解锁 | GlobalUnlock | 全局解锁(内存) | 取消指定的全局内存对象关联的内存分配空间 |
进程堆址 | GetProcessHeap | 堆=进程内存 | 获取本进程使用的堆对象 |
进程全堆 | GetProcessHeaps | 进程全堆(堆数,数组) | 获取本进程有效的所有堆的句柄 |
内存创建 | HeapCreate | 堆=内存创建(方式,大小,最大) | 创建本进程使用的堆对象,用来分配物理内存,方式1不互斥,4报告异常 |
内存分配 | HeapAlloc | 内存=内存分配(堆,方式,大小) | 从堆中分配一个不可移动的内存块。方式1不互斥,8初始化零,4报告异常 |
内存压缩 | HeapCompact | 内存压缩(堆,方式) | 尝试压缩指定的堆。合并相邻空闲内存,并消除大的可用内存块,方式1不互斥 |
内存销毁 | HeapDestroy | 内存销毁(堆) | 销毁指定的堆对象及其内存页面 |
内存释放 | HeapFree | 内存释放(堆,方式,内存) | 释放指定堆的内存页面 |
内存锁定 | HeapLock | 内存锁定(堆) | 锁定堆只有调用线程才能从堆中分配或释放内存 |
内存重建 | HeapReAlloc | 内存重建(堆,方式,内存,大小) | 从堆中重新分配一块内存,方式1不互斥,8初始化零,4报告异常,$10保留原数据 |
内存大小 | HeapSize | 大小=内存大小(堆,方式,内存) | 获取堆分配的内存块的大小 |
内存解锁 | HeapUnlock | 内存解锁(堆) | 解除指定堆相关联的关键部分对象的锁定 |
内存验证 | HeapValidate | 内存验证(堆,方式,内存) | 用来验证堆的完整性(内存为0)或堆中某块内存的完整性,方式1不互斥 |
内存枚举 | HeapWalk | 内存枚举(堆,信息) | 枚举指定堆中的内存块 |
内存摘要 | HeapDestroy | 内存销毁(堆,方式,摘要) | 汇总指定的堆 |
内存可读 | IsBadReadPtr | 内存可读(内存,大小) | 判断指定范围内存地址是否可读 |
内存可写 | IsBadWritePtr | 内存可写(内存,大小) | 判断指定范围内存地址是否可写 |
内存填充 | RtlFillMemory | 内存填充(地址,长度,值) | 使用指定的数值填充内存块。 |
传送内存 | RtlMoveMemory | 传送内存(目的,原址,n) | 在原址复制 n 个字节到目的地址中,两者可以有重叠 |
内存清零 | RtlZeroMemory | 内存清零(地址,长度) | 用0来填充一块内存区域 |
虚拟内存 | VirtualAlloc | 地址=虚拟内存(地址,大小,分类,保护) 申请内存,内存申请,堆申请,全局/局部分配 这些申请内存的方法,并没有本质上的不同 | 在虚拟地址空间中保留或提交一个页面区域。分配的内存将自动初始化为零 |
虚拟空间 | VirtualAllocEx | 地址=虚拟空间(进程,地址,大小,分类,保护) | 在指定进程虚拟地址空间中保留或提交一个页面区域。分配的内存将自动初始化为零
新申请地址写0,扩充时可保留原数据.分类=分配类型$1000新分配,$2000保留 保护1禁用2只读4读写$10可执行$20执行读$40执行读写 |
虚拟释放 | VirtualFree | 虚拟释放(地址,大小,操作) | 虚拟地址空间中释放或分解内存,操作$4000分解$8000释放(大小为0) |
空间释放 | VirtualFreeEx | 空间释放(进程,地址,大小,操作) | 在指定进程的虚拟地址空间中释放或分解内存,操作$4000分解$8000释放(大小为0) |
虚拟锁定 | VirtualLock | 虚拟锁定(地址,大小) | 虚拟地址空间的指定区域锁定到内存中 |
虚拟保护 | VirtualProtect | 虚拟保护(地址,大小,保护,@旧) | 更改调用进程虚拟地址空间中已提交页面的访问保护(读写权限) |
空间保护 | VirtualProtectEx | 空间保护(进程,地址,大小,保护,@旧) | 更改指定进程虚拟地址空间中已提交页面的访问保护(读写权限) |
虚拟查询 | VirtualQuery | 虚拟查询(地址,结构,大小) | 查询虚拟地址空间中的一系列页面的信息 |
空间查询 | VirtualQueryEx | 空间查询(地址,结构,大小) | 查询虚拟地址空间中的一系列页面的信息 |
虚拟解锁 | VirtualUnlock | 虚拟解锁(地址,大小) | 解锁进程的虚拟地址空间中的指定范围的页面 |
读取内存 | ReadProcessMemory | 读取内存(进程,地址,内容,长度,@已读) | 读取指定进程地址的内存数据 |
写入内存 | WriteProcessMemory | 写入内存(进程,地址,内容,长度,@已写) | 把数据写入指定进程的指定地址 |
内存信息类
中文名字 | 英文名称 | 长度 | 作用解释 |
内存信息类 | MEMORYSTATUS | 32 | 包含了当前计算机的信息。函数GlobalMemoryStatus |
内存信息类——成员表 | |||
---|---|---|---|
长度 | dwiLength | 整数 | 结构的大小,初始设置为32长度 |
使用率 | dwMemoryLoad | 整数 | 返回一个介于0~100之间的值,用来指示当前系统内存的使用率。 |
物理内存 | dwTotalPhys | 整数 | 返回总的物理内存大小,以字节(byte)为单位。 |
可用内存 | dwAvailPhys | 整数 | 返回可用的物理内存大小,以字节(byte)为单位。 |
交换文件 | dwTotalPageFile | 整数 | 显示可以存在页面文件中的字节数。 |
空闲文件 | dwAvailPageFile | 整数 | 返回可用的页面文件大小,以字节(byte)为单位。 |
可用地址 | dwTotalVirtual | 整数 | 返回调用进程的用户模式部分的全部可用虚拟地址空间 |
空闲地址 | dwAvailVirtual | 整数 | 返回调用进程的用户模式部分的实际自由可用的虚拟地址空间 |
堆表类
中文名字 | 英文名称 | 长度 | 作用解释 |
堆表类 | HEAPLIST32 | 16 | 描述列表中枚举指定进程使用的堆的条目。 |
堆表类 成员表 | |||
---|---|---|---|
中文 | 英文 | 类型 | 作用解释 |
大小 | dwSize | 整数 | 结构大小(以字节为单位)。 |
程号 | th32ProcessID | 整数 | 使用堆的进程标识符。 |
堆号 | th32HeapID | 整数 | 堆标识符。这不是句柄,仅对工具帮助函数有意义。 |
标志 | dwFlags | 整数 | 1默认堆。 |
堆块类
中文名字 | 英文名称 | 长度 | 作用解释 |
堆块类 | HEAPENTRY32 | 36 | 描述堆(块)正在检查的堆的一个条目。 |
堆块类 成员表 | |||
---|---|---|---|
中文 | 英文 | 类型 | 作用解释 |
大小 | dwSize | 整数 | 结构大小(以字节为单位)。 |
指针 | hHandle | 整数 | 堆块的句柄。 |
地址 | dwAddress | 整数 | 块开头的线性地址。 |
块长 | dwBlockSize | 整数 | 堆块的大小(以字节为单位)。 |
标志 | dwFlags | 整数 | 1固定 (不可移动)。2不使用内存块。4可以移动。 |
锁数 | dwLockCount | 整数 | 此成员不再使用,并且始终设置为零。 |
预留 | dwResvd | 整数 | 保留;请勿使用或更改。 |