易语言资源网 - 做最全的易语言资源下载社区
精易论坛授权登录

【突破极限?】32位进程成功申请超过4GB内存!!   [复制链接]

    2022-05-16 10:18:56
    高级教程源码
    易语言资源网
    3986 次浏览
    来源链接

前言:

  • 本方法只能在x64系统上使用,32位的操作系统的易友就不用继续往下看了。

程序使用到的模块:

正文:

  • 众所周知:在64位系统上,32位程序依赖Wow64子系统运行。
  • 这个Wow64子系统本质上是由4个64位的Dll(ntdll.dll,wow64.dll,wow64win.dll,wow64cpu.dll)模拟了一个32位的程序。(这个进程虽然是运行的32位代码,但API接口核心由64位完成,甚至这个进程有64位的PEB、TEB和32位的PEB、TEB,系统判断进程是否为32位无非是检查TEB->WowTebOffset的值)
  • 所以本质上64位系统下的32位程序是有64位进程的特性。
  • 所以只要突破系统对于进程的限制,申请大内存的问题就迎刃而解了。
  • 如何突破?直接用64位的NtAllocateVirtualMemory就可以了。
  • 测试效果:
  • 申请4GB内存测试(从Windows-Kernel-Explorer-master可以看到成功在0x0000000200000000处申请到内存):
  • 理论上使用这个方法后,64位系统下的32位进程就可以申请到高于32位的地址,实现真正意义上的32位可用内容的突破。
  • 注意:申请到的内存地址必须使用x64的命令进行访问


点我下载 (已有 184 次下载)

引用模块


源码文件名 模块文件名
x64Allocate.e
eWOW64_hook.ec


引用支持库


源码文件名 支持库文件名 支持库标识
wow64_hook_2.6模块源码_简化.e 系统核心支持库 5.7 d09f2340818511d396f6aaf844c7e325
特殊功能支持库 3.1 A512548E76954B6E92C21055517615B0
x64Allocate.e 系统核心支持库 5.7 d09f2340818511d396f6aaf844c7e325


[错误报告]   上一篇:桌面打字效果,速度可以设置...     下一篇:C# 优化CMD操作