2024年4月18日发(作者:)
易语言置入代码
速度及完成一些易不好直接完成的操作,是追求置入代码的全部!如果你不同意,那基本上不用往
下看。汇编功底只有靠自己,这里只是讲述在易语言中如何使用“置入代码()”来嵌入汇编及其注意要点。
这是自己的学习体会,如有理解错误或bug请指出,谢!
我们先来了解一下置入代码是怎么的一回事
汇编中nop(10010000)是空操作指令,我们先使用8个空操作来给程序作个“置入代码”的标记。
于是,在一个新建易程序中输入如下代码:
静态编译成可执行文件后,使用OllyDbg反编译一下:
PUSH EBP / MOV EBP,ESP 是例行的保存和设置 EBP 的代码,因为缺省对堆栈操作的寄存器有
ESP 和 EBP,而 ESP是堆栈指针,无法暂借使用(代码中若有 PUSH/POP指令会自动修改ESP值),
所以一般使用 EBP 来存取堆栈。聪明的你在这时有没有想发言:“但我们置入代码中没有添加这个指令,
它是如何来的?”告诉大家,这是易编译器添加上去的。易语言为所有子程序初始都添加这么的两句,在“返
回()”时再使用MOV ESP,EBP/POP EBP 来平栈,这都是易语言在编译时所做的处理,平常我们都不用
关心这些。但当使用置入代码来嵌入汇编指令,我们就不得不了解。现暂且放下,后面再来说明我们要了
解的的东西。
跳出具体指令,看看反汇编子程序的框架。置入的代码(8个nop)“完全”的位于一个子程序内。对
此应了解:我们置入代码()严格来说是置入汇编代码“片段”。不要希求能置入一个完整pe数据,易语言
会在编译链接时写入易的文件头。置入代码()就不能再使用.data或invoke messagebox之类。因为易
语言不会再为我们置入的代码去修改数据段及导入表。
辅助工具的选用
作为铺垫,我们先来了解一下易语言置入代码汇编工具。云外归鸟(大鸟)提供了一个功能完善、
界面友好、使用免费的工具“易语言置入代码NASM汇编生成工具v1.0 ”
NASM指令简单明了,而且能将汇编代码片段直接编译成二进制文件,它不强求源码是一个完整的
汇编程序。这也可能是大鸟选择使用NASM编译器的原因(个人猜想)。大鸟在易语言论坛提供了该工具
的源码下载。在此感谢大鸟为广大易友所做的贡献!
相信使用汇编的人更多的是喜欢MASM,这从Aogo所写“MASMPLUS”被广泛下载使用可见一斑。
本人在大鸟提供源码的前提下修改了小部分代码,让该工具支持MASM编译。若大鸟认为被侵权,请指出,
本人QQ:109544089。本人当即删除下载链接及正式致歉!


发布评论