以文件为后背存储区的内存交换文件
各种后备存储器的内存映射文件
- 以
磁盘中文件系统的具体文件
为后备存储的页交换文件(文件映射) - 以
页交换文件("虚拟内存")
为后备存储器的页交换文件(共享内存)
页交换文件("虚拟内存")
通过CreateFileMapping
api 创建文件映射内核对象,在内存中申请空间(物理内存和虚拟内存)
通过MapViewOfFile
在响应的进程虚拟内存空间中预定对应空间,并且把上一步的内存映射到进程虚拟空间中。
这样就实现了共享内存
具体磁盘文件
CreateFileMapping
直接映射文件到进程虚拟空间中
映象类型的内存块和映射类型的内存块
映象类型的文件类型需要exe dll等文件
而映射类型则只要是打开的文件都可以。
操作文件需要用到的api
//创建或打开指定文件的文件映射对象 HANDLE CreateFile ( LPCTSTR lpFileName, // 文件路径 DWORD dwDesiredAccess, // 访问权限 DWORD dwShareMode, // 共享模式 LPSECURITY_ATTRIBUTES lpSecurityAttributes, // SD DWORD dwCreationDisposition, // 创建/打开方式 DWORD dwFlagsAndAttributes, // 文件属性 HANDLE hTemplateFile // 模板相关 ); //创建或打开指定文件的文件映射对象 HANDLE CreateFileMapping ( HANDLE hFile, // 要映射的文件句柄 LPSECURITY_ATTRIBUTES lpAttributes, // 安全属性 DWORD flProtect, // 保护属性 DWORD dwMaximumSizeHigh, // 映射区域最大大小高32位 DWORD dwMaximumSizeLow, // 映射区域最大大小低32位 LPCTSTR lpName // 映射对象的名字 ); //创建映射 LPVOID MapViewOfFile ( HANDLE hFileMappingObject,// 文件映射对象句柄 DWORD dwDesiredAccess, // 访问的保护属性 DWORD dwFileOffsetHigh, // 映射的内容在文件中的偏移 DWORD dwFileOffsetLow, // 映射的内容在文件中的偏移 类似于 offset SIZE_T dwNumberOfBytesToMap // 映射的文件内容大小 类似于 limit );
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论