根据书上内容,觉得
内存使用大概需要4步
1.启动进程,得到虚拟地址空间(4G)
2.在虚拟地址空间的用户模式分区保留一块区域
3.分配一块物理内存
4.把这块物理内存映射到保留的那块区域
5.关于内存映射文件,书上说exe、dll就是内存映射文件
问题:
1。上述理解是否准确?
2。把这块物理内存映射到保留的那块区域,是啥意思?
3。exe、dll是内存映射文件,好像是因为.exe在执行时,系统将把磁盘上的.exe本身当作
分配给它的物理内存,那么是否可以认为:所有exe在执行时,第一次访问其虚拟地址空间
的数据时,一定是‘页面失效’的。而后再分配ram,然后再从页面文件(也就是.exe)
把数据拷入ram...
4。如果3成立,那么ram内容修改了,ram内容可能会写回页面文件(即.exe文件本身)
那么岂不是.exe也被修改了?
5。祝大家新的一年万事如意!
内存使用大概需要4步
1.启动进程,得到虚拟地址空间(4G)
2.在虚拟地址空间的用户模式分区保留一块区域
3.分配一块物理内存
4.把这块物理内存映射到保留的那块区域
5.关于内存映射文件,书上说exe、dll就是内存映射文件
问题:
1。上述理解是否准确?
2。把这块物理内存映射到保留的那块区域,是啥意思?
3。exe、dll是内存映射文件,好像是因为.exe在执行时,系统将把磁盘上的.exe本身当作
分配给它的物理内存,那么是否可以认为:所有exe在执行时,第一次访问其虚拟地址空间
的数据时,一定是‘页面失效’的。而后再分配ram,然后再从页面文件(也就是.exe)
把数据拷入ram...
4。如果3成立,那么ram内容修改了,ram内容可能会写回页面文件(即.exe文件本身)
那么岂不是.exe也被修改了?
5。祝大家新的一年万事如意!
分配给它的物理内存,那么是否可以认为:所有exe在执行时,第一次访问其虚拟地址空间
的数据时,一定是‘页面失效’的。而后再分配ram,然后再从页面文件(也就是.exe)
把数据拷入ram...
4。如果3成立,那么ram内容修改了,ram内容可能会写回页面文件(即.exe文件本身)
那么岂不是.exe也被修改了?
------------------------------------
3基本是对的,因为exe在运行时,大多数数据是在虚拟内存中的,只有部分在物理内存中
ram中的内容也会写回,但是这些操作需要的数据并不是exe本身的数据而是exe在执行时需
要用到的数据,它可以被强行修改,但是修改不会影响exe本身,只是会影响exe的运行
从编程来看调用ReadProcessMemory/Write函数时提供进程句柄和线性地址,操作系统会将线性
地址转化成物理地址(当然如果被交换到硬盘上,他会装入)
另外金山游侠他有一个驱动,他在操作系统内核里运行,这样他就有了改别的进程的权限
分配的物理内存远小于虚拟内存。所以要映射到那块区域3。exe、dll是内存映射文件,好像是因为.exe在执行时,系统将把磁盘上的.exe本身当作
分配给它的物理内存,那么是否可以认为:所有exe在执行时,第一次访问其虚拟地址空间
的数据时,一定是‘页面失效’的。而后再分配ram,然后再从页面文件(也就是.exe)
把数据拷入ram... 如果你有相当高的权限,当然可以。4。如果3成立,那么ram内容修改了,ram内容可能会写回页面文件(即.exe文件本身)
是的。
5、接了,谢谢