本帖最后由 shier2817 于 2019-2-22 16:07 编辑
首发精易。
本模块的核心作用简单描述是:允许你在一个易语言子程序内进入 64 位环境!
也就是:wow 环境 -> 进入 x64 环境 -> x64 函数调用 或 x64 汇编代码 -> 退出 x64 环境 -> wow 环境,以上必须在一个子程序内完成;
简述:其实这种技术多年前就有,易语言上也有类似的模块,个别模块是有误的,还有的长期未更新或优化,也有可用但总有与处理器优化手册上规则相悖的代码,总之都不能令我满意,因此自己从头编写了这样一个模块,部分实现代码借鉴 wow64ext,在此感谢 rewolf。
原理:wow64 是在 64 位操作系统上允许 32 位程序(比如易编译的程序)执行的模拟器子系统,在 64 位操作系统中,不管你的程序是 32 还是 64 位的,其实都存在两个地址空间,正常情况下 32 位程序访问的自然是 32 位的地址空间,而 64 位程序访问其 64 位地址空间。
但是这两个空间是同时存在且可以切换的,本模块就是通过该原理切换到 64 位地址空间获取 ntdll.dll 相关函数进行调用(注:此基址是 64 位的,与平常获取的 32 位模块基址截然不同);
扩展延申功能:
1、可以直接使用 64 位函数自由读写(注入) 64 位进程,与很多模块调用 NtWow64xxx 系列函数实现的方式有本质不同;
2、正是由于其原理本模块允许你的易程序使用 64 位 ntdll.dll 的所有函数,也就是你虽然开发的是 32 位程序,但可以实现很多 64 位函数所能实现的功能;
3、我公开了部分常用函数可直接调用,其余函数获取地址后,使用 X64Call 这个通用函数调用即可;
4、通过本模块的框架代码,可以轻松在易语言中实现 x64 汇编的置入代码;与很多语言不同,易的置入代码接受的是硬编码(即编译后的 opcode)而不是汇编助记符,虽然直观性没有了,但可以使我们更灵活的在一段子程序中使用 x86/x64 混编,也就是你可以使用 64 位的通用寄存器来编写 x64 汇编而不必使用 REX 前缀;
5、后续会考虑增加必要的功能,根据易友的反馈;
6、本模块按使用难易度划分的话,属于中高级用户群,如果 Win32 API 都用不明白的怕是意义不大;
7、稍后会开发个给初中级用户便捷使用的中文版 x86/x64 通用进程读写模块,如果需要的人多的话;
8、如有 BUG,请提供错误重现代码及执行环境,如非不可抗因素我都会及时更新的;
辅Zhu函数:
易内部命令:
外部进程命令:
以上只是适用于 64 位的部分函数,同样我在模块中也实现了大多数命令相同形式的 32 位命令,用于操作 32 位进程,合计公开函数有 50 多个,这里就不列举了;
编写 64 位汇编(供汇编爱好者使用):
模块公开了几个 汇编代码 常量:
#X64_Start - 进入 x64 环境
#X64_End - 退出 x64 环境
其他:
由于本模块并非提供给初级用户使用,因此没有写太详尽的 demo,只提供了一份编写测试时用于测试的 test,参考其代码可获得模块使用方法; 开源协yi:
本模块源代码核心来源于 rewolf-wow64ext,为尊重其劳动成果,沿用其 LGPL 3.0 开源许可证;
你可以将本模块源代码随意用于免费或商业软件;你也可以自由修改源代码,但公开发布应予以保留原作者署名; 关于赞助:
本人从 04 年左右开始接触易语言,随着技术的不断进步,近期特别热衷于编写底层高效的模块、支持库等;当然这离不开汇编,从最开始的自学能取个指针,到后来我把很多 C/C++ 开源模块以汇编形式转成了易,再后来通读了 Intel 开发手册和优化手册后又发现,在汇编代码的指令选用及语句顺序、分支跳转上还有那么多可优化的方面,因此最近这段时间就想把以前的代码重新整理出来;
因为大多数是成熟稳定的开源代码,我也秉承其开源精神,准备无偿发布给有需要的易友使用,为易语言略尽绵力;
每次公开的源码可以说只是相对一部分的功能而不是完整软件,或者您认为这没什么价值,这也是仁者见仁智者见智吧;高效稳定的模块或支持库下编写的软件,相信会对开发者甚至易语言都是个好的开始;
但不得不说这是个相当耗时且没用回报的工作,仅仅是出于个人爱好,我现在几乎很少接单做成品软件了,可毕竟要生活,如果这份源码您用的上并且也给您带来部分利益,我接受任何形式的打赏与赞助(点击下方“打赏”按钮选择适合您的方式即可),以便我有更多时间和精力整理余下的源码;
当然如果您只希望无偿使用,只要好用以后能点个赞,我也倍感欣慰!凡是交易币/微信/zfb打赏的用户可私信索取我的联系方式!
enjoy it!
npzs(shier2817) 2019-02-22 于大连
eWOW64Ext.rar
(289.39 KB, 下载次数: 506)
补充内容 (2019-3-3 00:07):
本贴停用,新版本 - https://bbs.125.la/forum.php?mod=viewthread&tid=14322538
补充内容 (2019-3-6 15:45):
该版本停用,新版本 - https://bbs.125.la/forum.php?mod=viewthread&tid=14322538
补充内容 (2019-3-12 18:36):
本版已废弃,最新版本:https://bbs.125.la/thread-14328825-1-1.html |