在易语言代码中嵌入汇编/机器码
——“置入代码”的使用方法简介
作者:liigo
原文链接:http://blog.csdn.net/liigo/archive/2008/09/18/2949200.aspx
转载请注明出处:http://blog.csdn.net/liigo/
我们都知道,C++或Delphi的程序源代码中可以嵌入汇编代码,以达到某些特定目的。易语言作为实用而又功能强大的编程语言,也允许在代码中嵌入汇编,——当然严格来说,是嵌入机器指令代码。借助“特殊功能支持库”中的“置入代码”命令,可以完成这项功能。(liigo 2009.03.20补记:自易语言4.12版本起,“置入代码”已被移入核心支持库。)
为什么要在易语言中“置入代码”呢?一是完成易语言不好直接完成的工作(例如,调用子程序,取变量地址,取对象方法地址,等等,当然,“置入代码”也不是唯一途径,通过外部支持库往往也能完成),二是提高代码执行效率(这个容易理解,不多说了)。
使用“置入代码”对程序员有什么要求?要熟悉汇编,会写汇编代码;会使用至少一种基于汇编的调试器(如Ollydbg);要了解或会分析易语言编译器生成的机器代码;要对易语言底层技术有所了解,如文本、字节集、数组等数据格式,参数传递方式,命令调用约定等。“置入代码”在易语言中属于“高级命令”,是专门为具有一定编程能力的高级程序员特别是熟悉汇编编程的专业人士提供的。一般初学者,如果半懂不懂,最好不要涉及,直接使用别人写好的模块或支持库比较好,毕竟易语言的功能已经足够强大,很多问题都已经有了现成的解决方案。
“置入代码”的原理。其实质是,在易语言编译过程中,编译器将“置入代码”的参数所指定的机器指令数据,直接输出到EXE/DLL中。因为这个动作是在编译时进行的,所以参数指定的机器码只能是常量,而不能是变量。同样,因为是编译时处理,运行时并不执行,因而程序执行时并不依赖支持库(即程序发布时不需携带特殊支持库spec.fne文件)。
使用“置入代码”都有什么步骤?一、写出汇编代码;二、通过汇编器将汇编代码编译为机器码;三、将机器码转换为易语言字节集常量数据,并作为参数传入“置入代码”。
第一步没什么好说的,是考验汇编功力的地方,是硬功夫,没有技巧的。
第二步,我们可以借助“Ollydbg”等汇编器完成(当然也可以通过查询Intel x86 指令手册,纯手工将汇编代码编译为机器指令码,除非变态或超级牛叉的人不会采用)。首先启动Ollydbg,打开任意一个EXE程序,在汇编代码区双击任意一行,在弹出的汇编窗口中,输入第一步写好的第一行汇编代码,回车,就可以在机器指令区域(汇编代码区域左侧)看到相应的机器指令了,如此循环,逐行输入所有汇编代码,就可以得到相应的机器指令代码了。
第三步也相对容易,主要工作可能就是将Ollydbg生成的16进制指令代码转换为10进制。如果代码不长,借助“计算器”纯手工操作也行。一般来说,通常会用易语言写一个小程序,解析从Ollydbg中复制出的文本,提取其中的机器指令代码,进行数制转换,生成易语言字节集数据的文本格式。这种小程序很容易写,我想“置入代码”的使用者中很多人(据我了解不下10个)都写过类似的程序,我(liigo)也写过一个。说实话,这种小程序自己用,写的简陋些没关系,反正只是辅助程序,还可以随时调整嘛,但想发布的话,就要考虑通用性易用性,麻烦很多,况且用户也不多,所以发布此类程序的人很少,但是论坛上也确实有人发过。
今天就写这么多。希望读者有所收获。
分享到:
相关推荐
易语言代码中嵌入汇编/机器码方法是指在易语言代码中插入汇编语言或机器指令代码,以达到某些特定目的。这种方法可以用于调用子程序,取变量地址,取对象方法地址等。为了实现这种方法,易语言提供了“置入代码”...
在"易语言源码易语言嵌入汇编实现转换到十进制源码.rar"这个压缩包中,包含的是使用易语言编写并嵌入汇编代码来实现十进制转换的功能。下面我们将详细探讨易语言、嵌入汇编以及十进制转换的相关知识点。 1. **...
3. **易语言的汇编嵌入机制**:易语言提供了嵌入汇编代码的功能,用户可以在易语言程序中直接写入汇编指令,这需要了解易语言如何识别和执行汇编代码的规则。 4. **寄存器操作**:在汇编中,通过操作EAX、EBX、ECX...
在“易语言源码易嵌入汇编(取CPU类型).zip”这个压缩包中,我们可以推测其主要内容是关于如何在易语言中使用汇编语言,并获取CPU类型的源代码示例。 汇编语言是一种低级编程语言,它的指令与计算机硬件的指令集紧密...
在易语言汇编跳转自身源码中,我们可以学习到如何在易语言的源码中嵌入汇编代码,以及如何利用汇编语言实现程序的自我跳转。这需要对易语言的语法和汇编语言的指令系统有深入的理解。在分析源码时,我们需要关注以下...
在易语言中嵌入汇编,需要对这些指令有深入理解。 4. **API接口**:了解API的使用是关键,每个API都有其特定的功能和参数。例如,"kernel32.dll"中的"WriteFile" API用于向文件写入数据,需要提供文件句柄、缓冲区...
这些OBJ文件包含了可被易语言NASM置入代码工具识别和嵌入的机器码。 在易语言环境中,开发者在项目中嵌入这些OBJ文件的过程变得非常简单。工具会处理好汇编代码与易语言代码间的衔接,让开发者无需担心底层的复杂性...
汇编语言是计算机底层语言,与机器码直接对应,而CALL指令在汇编语言中用于调用子程序或函数。在易语言中,虽然主要是高级语言的语法,但为了实现某些高效或低级操作,开发者仍可以嵌入汇编代码。CALL指令在执行时会...
3. 易语言提供的汇编支持,包括如何嵌入汇编代码、如何调用汇编子程序等。 4. 如何使用易语言的工具链将汇编代码编译和链接为可执行文件。 通过深入学习这些内容,开发者可以在易语言E中灵活地使用汇编,实现高性能...
而“易语言E里面直接写汇编”这个主题,指的是在易语言环境中嵌入和使用汇编语言代码,以实现更底层、更高效的程序控制。 汇编语言是计算机系统中的低级编程语言,它与机器语言直接对应,每条指令都对应一个特定的...
在易语言中,虽然主要是用高级语法进行编程,但为了实现某些特定功能或提高性能,有时会需要嵌入汇编代码。 易语言的“置入汇编”功能允许开发者在易语言程序中插入汇编指令,以实现易语言自身不支持或效率更高的...
在易语言中,嵌入汇编通常是通过"汇编指令"或者"执行汇编代码"等关键字实现的,将汇编代码作为字符串传递给这些内置函数,然后由编译器在适当的地方插入到最终生成的机器码中。 对于学习者来说,这个项目提供了一个...
学习和理解这个源码,开发者可以了解到如何在易语言环境中嵌入和调用汇编代码,以及如何利用CRC32技术进行数据校验。这不仅有助于提升对易语言的掌握,还能增强对底层计算原理的理解,特别是涉及到二进制运算和错误...
这个组件的主要作用是将32位汇编代码转换为易语言能够理解的形式,使得用户无需深入底层机器码的细节,就能在易语言的环境中编写和利用汇编语言的代码。这种转换不仅保持了程序的运行效率,而且大大降低了对程序员...
2. 汇编语言嵌入:学习如何在易语言中嵌入汇编代码,理解汇编代码与易语言代码的交互机制,以及如何通过汇编优化程序性能。 3. 虚拟机检测技术:掌握虚拟机检测的原理和方法,这可能涉及到系统调用检测、硬件特征...
5. **学习与研究**:为了更深入地理解计算机系统的工作原理,程序员可能会在易语言程序中嵌入汇编代码,以便观察和分析执行流程。 在易语言中嵌入汇编语言,通常会使用易语言提供的“嵌入汇编”模块,允许用户在...
在这个“易语言嵌入汇编十六进制转长整数源码.7z”压缩包中,我们可以推测它包含的是易语言与汇编语言结合的源代码,用于实现将十六进制字符串转换为长整型数值的功能。这涉及到两个关键的知识点:易语言编程和十六...
【易语言置入代码】是易语言中一种高级特性,允许开发者在易语言程序中嵌入汇编代码,以提高程序执行效率或者实现一些易语言自身难以直接完成的功能。汇编语言是计算机底层编程的基础,它能够直接对应机器指令,执行...
在易语言中嵌入汇编代码,通常需要使用易语言的“汇编指令”或“内嵌汇编”功能。这些特性允许程序员在易语言源代码中直接编写汇编代码,以便在特定场合使用。例如,退出程序这个操作在易语言中可以通过调用“结束...