相关推荐
-
VirtualProtect函数
首先我们来看看MSDN上对VirtualProtect函数的说明。 BOOL VirtualProtect( LPVOID lpAddress, DWORD dwSize, DWORD flNewProtect, PDWORD lpflOldProtect ); 各参数的意义为: lpAddress,要改变属性的内存起始地址。 dwSize,要改变属性的内存区
-
Win32学习笔记(19)私有内存的申请释放
1.申请内存的两种方式: <1>通过VirtualAlloc/VirtualAllocEx(后面会介绍,两者在底层的实现相同)申请的: Private Memory <2>通过CreateFileMapping映射的: Mapped Memory 这个图我们已经熟悉了,不过物理页有着Map和Private两种。Map是公有物理页,Private是私有物理页。所以物理内存只分为两种一种是自己独占物理页,一种是和别人共享物理页。 2.内存申请与释放: LPV..
-
VirtualQueryEx详解
DWORD VirtualQueryEx( HANDLE hProcess, // 想要查询的地址空间所属的进程的句柄 LPCVOID lpAddress, // 区域地址 PMEMORY_BASIC_INFORMATION lpBuffer, // 结构缓冲区 SIZE_T dwLength
-
VirtualAlloc|VirtualFree|VirtualCopy |VirtualProtect |VirtualQuery - WINDOWS API 第七弹 为进程申请虚拟内存
我们知道计算机为了更加高效的使用物理内存,设计出了虚拟内存给进程使用,进程需要运行的话只需要将虚拟内存映射到物理内存即可,当然这也属于非常繁琐的计算机科学了,我们一步一步揭开这个api的神秘面纱吧。vitualalloc系列的函数实现了windows进程虚拟内存向物理内存的转换,是比较底层和重要的api。还有一些,这些大家自己去找吧。夜已深,好梦。
-
全面介绍Windows内存管理机制及C++内存分配实例
(一):进程空间 本文背景: 在编程中,很多Windows或C++的内存函数不知道有什么区别,更别谈有效使用;根本的原因是,没有清楚的理解操作系统的内存管理机制,本文企图通过简单的总结描述,结合实例来阐明这个机制。 本文目的: 对Windows内存管理机制了解清楚,有效的利用C++内存函数管理和使用内存。 1. 进程地址空间 1.1地址空间 · 32|
-
使用VirtualQuery查看内存页面信息
<br />本文介绍了使用VirtualQuery函数查看进程内存地址空间的页面分配情况,并给出了一个例程。<br /><br />1 Win32内存布局简介<br /><br />在16位CPU的时代,受寻址范围的限制,系统所能使用的内存空间是非常少的。据说当年Bill Gates曾说过“640K内存对任何人来说都够用了”,现在看来似乎很好笑,不过做过DOS编程的人大概都还会怀念那个时代。后来有了386,有了保护模式,有了虚拟内存,多任务终于成为现实。<br /><br />在Win32环境下,寻址不再需
-
Windows虚拟内存的使用(四)
锁定页面和解锁页面 1 通过调用VirtualLock方法,可以将页面锁定在物理内存中,从而防止虚拟内存管理机制将页面交换至页面文件,而引起不必要的硬盘和物理内存之间的低效页面交换。 2 通过调用VirtualUnlock方法,可以解锁页面,允许系统对页面进行交换操作 3 锁定页面时系统会根据当前可用实际RAM情况,以及进程工作集配额判定当前最大可锁定的页面的实际数量,超过此数量会引起一个错
-
Windows Shellcode学习笔记——通过VirtualProtect绕过DEP
本文讲的是Windows Shellcode学习笔记——通过VirtualProtect绕过DEP, 0x00 前言 在掌握了栈溢出的基本原理和利用方法后,接下来就要研究如何绕过Windows系统对栈溢出利用的重重防护,所以测试环境也从xp转到了Win7(相比xp,Win7的防护更全面)。本文将要介绍经典的DEP绕过方法——通过VirtualProte...
-
又发现一篇强文,收藏收藏--------------WinCE内存管理(二)
又发现一篇强文,收藏收藏--------------WinCE内存管理(二) (2007-07-19 17:51:56) 转载▼ 分类: 工作 内存分配的不同类型 一个Windows CE 应用程序有许多不同的内存分配方式。在内存食物链的底端是Virtualxxx 函数,它们直接保留,提交和释放(free)虚拟内存页
-
VirtualProtect()
VirtualProtect 改变调用进程的一段页的保护属性。要改变其他进程,请使用 VirtualProtectEx 函数。 BOOL WINAPI VirtualProrect( __in LPVOID lpAddress , __in SIZE_T dwSize , __in DWORD flNewProtect , __out PDWORD lpfl
-
Windows CE 内存管理
内存管理 如果你在写Windows CE 程序中遇到的最重要的问题,那一定是内存问题。一个WinCE 系统可能只有4MB 的RAM,这相对于个人电脑来说是十分少的,因为个人电脑的标准配置已经到了128MB 甚至更多。事实上,运行WinCE 的机器的内存十分缺乏,以至于有时候有必要在写程序的时候为节约内存而牺牲程序的整体性能。 幸运的是,尽管WinCE系统的内存很小,
-
基于Windows Mobile 6的VirtualQueryEx函数实现。
VirtualQueryEx这个函数很有用,可以用于查询目标进程地址空间中内存地址的信息。但此函数在Win CE 6.0以前是不被支持的(Windows Mobile 6是基于WinCE 5.2的)。 不过也不是没有办法的,WinCE中有一未公开API:PerformCallBack4。函数声明如下: extern "C" DWORD WINAPI PerformCallBack4(CALLB...
-
VirtualLock
VirtualLock Applies to: desktop apps only Locks the specified region of the process's virtual address space into physical memory, ensuring that subsequent access to the region will not incur a
-
关于VirtualAlloc和VirtualCopy
<br />弄清楚这个问题首先要了解VirtualCopy和VirtualAlloc这2个函数的实现和目的,以及wince下动态虚拟内存映射和静态虚拟内存映射。 <br />先说VirtualAlloc 和VirtualCopy<br />VirtualAlloc 首先会从我们的虚拟地址空间中申请(或者说预留)一块虚拟空间,准备接下来要用它。注意此时,可用的物理内存并没有减少,只是虚拟地址少了一块可用的区域。 <br />真正把这块之前reserved的虚拟空间映射到物理的内存区域就是由VirtualCop
-
内存管理学习笔记
C++的内存管理 1内存分配方式 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变
-
Windows 32操作系统中虚拟内存的性能设置(sql)
如果你使用的是64位的硬件,并安装64位版本的操作系统和SQL数据库,那么不需担心3GB,PAE,AWE等32位硬件所需的设置 Windows 32 操作系统执行的应用程序都认为本身最戏码拥有2GB的连续内存(称虚拟内存),当应用程序在访问内存是,操作系统会将其映射(mapping)到某块物理内存,若不足,操作系统就把物理内存中某些较少用到的区块写至硬盘。 应避免
-
Windows 拦截系统睡眠、休眠
本文从 R3 角度分析了编程拦截睡眠的一般方法,通过上文,其实不难发现,要在 R3 下拦截任意进程发起的睡眠,必须全局注入处理NtInitiatePowerAction、 NtSetSystemPowerState 等函数。在前一篇文章中,我们分析了拦截 RPC 异步回调,可以对很多系统热键以及跟电源有关的操作做出“提前”响应......
-
OS实验六:系统内存使用统计
实验六:系统内存使用统计 3.2.1实验目的 (1)了解Windows内存管理机制,理解页式存储管理技术。 (2)熟悉Windows内存管理基本数据结构。 (3)掌握Windows内存管理基本API的使用。 3.2.2实验准备知识:相关数据结构及API函数介绍 1.相关系统数据结构说明 系统结构MEMORYSTATUS中包含当前物理内存和虚拟内存和虚拟内存信息,使用函数GlobaiMemoryStatus()可以将这些信息存储在结构MEMORYSTATUS中。 结构原型: Typedef struct_MR