eWOW64Ext v1.2: 64位易语言模块加载与动态调用技术

需积分: 29 3 下载量 86 浏览量 更新于2024-10-30 1 收藏 87KB ZIP 举报
资源摘要信息:"易语言模块eWOW64Ext v1.2是一个允许在64位操作系统上执行32位程序的模拟器子系统。该模块利用了Windows操作系统的WOW64子系统,该子系统允许32位程序在64位操作系统上运行。在64位系统中,存在两个地址空间,一个是32位的,另一个是64位的。32位程序通常访问32位地址空间,而64位程序访问64位地址空间。然而,这两个空间可以切换,本模块就是利用这种切换机制,进入64位地址空间,并调用ntdll.dll中的相关函数。需要注意的是,这些函数的基址是64位的,与普通的32位模块基址不同。模块的使用需要在一个子程序内完成从wow环境切换到x64环境,调用x64函数或x64汇编代码,然后退出x64环境返回到wow环境。模块的实现部分借鉴了C++开源代码wow64ext,作者为rewolf,对他的贡献表示感谢。在版本1.2中,模块添加了一个新的函数X64CallArr,这个函数可以使用数组的方式调用64位函数,使得参数数量不再受限制。同时,模块的性能也得到了优化,通用调用的性能损失几乎可以忽略不计。此外,模块还修复了加载后易语言无法使用“运行”命令的bug,以及CreateProcess API的相关问题。" 知识点详细说明: 1. **WOW64子系统**: Windows操作系统的一个组件,它支持在64位系统上运行32位应用程序。WOW64是一个模拟环境,它允许32位代码在一个与64位系统兼容的环境中执行,而不影响系统的64位部分。 2. **地址空间**: 在计算机系统中,每个进程都拥有自己的虚拟地址空间。对于64位系统,这个空间非常大,理论上可以达到2的64次方个地址。而32位系统的地址空间则小得多,是2的32次方个地址。64位系统同时支持运行32位和64位的应用程序,但它们运行在不同的地址空间中。 3. **ntdll.dll**: Windows操作系统的系统文件,包含了系统底层的功能函数。这些函数对于操作系统至关重要,包括进程管理、内存管理、安全机制等。在本模块中,通过切换到64位地址空间,程序能够获取并调用ntdll.dll中的64位函数。 4. **汇编语言**: 是一种低级编程语言,接近机器语言,但比机器语言更易于理解和编写。汇编语言通常用于编写系统软件,如操作系统、驱动程序、嵌入式系统等。本模块使用了64位汇编代码,以提高执行效率。 5. **代码优化**: 通过使用汇编语言手写代码而不是依赖编译器的自动优化,本模块能够实现更高效的执行。这是因为汇编语言允许开发者更精细地控制硬件资源,从而减少了不必要的指令和内存访问,提高了代码的执行速度和效率。 6. **模块化编程**: 本模块提供了一种方式,允许程序在运行时动态调用其他模块或库中的函数。这种模块化方法提高了程序的灵活性和扩展性。 7. **易语言**: 是一种中文编程语言,其目的是为了使编程更加简单和容易理解。易语言提供了丰富的库和模块,可以用来开发各种类型的应用程序。本模块是易语言的一个扩展,提供了一些特定的功能,如动态调用和进程读写。 8. **动态调用**: 是指在程序运行时加载并调用一个外部模块或函数库中的函数。这种方法可以提高程序的灵活性,因为可以在运行时选择调用哪些函数,而不需要在编译时就确定下来。 9. **进程读写**: 在本模块的上下文中,指的是对64位进程的内存空间进行读写操作。这在调试或者需要修改运行中程序行为的场景下非常有用,但也可能带来安全风险。 10. **版本更新说明**: 本模块的版本1.2中引入了新功能X64CallArr,允许无限参数数量的函数调用,并且对X64Call的代码进行了优化,改进了性能。同时修复了一些已知的bug,如易语言的“运行”命令使用问题和CreateProcess API的bug。这些更新增强了模块的稳定性和可用性。