Fasm---Win32汇编学习1
今天就由我来带领大家进入win32汇编学习的殿堂。我们以后采用的编译器是Fasm, 因为我比较偏向Fasm,其一它是开源的,我们可以自己通过学习Fasm的源代码来学习,且它的区段可以完全自己构建这使我们可以更加的深入对PE结构的掌握等。所以我比较推荐Fasm,当然你用其他的编译器也是可以的。。。 看个人爱好吧。。但是有必要说下,国内fasm使用甚少,大多人都喜欢使用masm,所以fasm的资料也是相当匮乏,所以大家可以选择任意的编译器。
首先介绍下FASM书写的格式
format PE 子系统 子系统版本号
entry 入口点
section '节名' 可用标志 节属性
section '节名' 可用标志 节属性
format伪指令是用来指定输出的文件格式。。后面跟PE指定输出PE文件格式,当然也可以输出Win16下的MZ文件格式。不过既然我们讲的Win32汇编,所以以后都采用的是PE文件格式。。 ∩∩ .. 好,后面子系统标示我们输出的文件的子系统值。子系统值标示我们程序被加载时候按照何种方式运行。因为我们映像文件(也就是磁盘文件)在被映射到内存的时候,PE Loader会读取我们PE结构上相应的子系统值来通知何种子系统(也就是我们的程序运行在何种子系统环境下)。 我们一般编写的程序用到3种子系统。“console”控制台,“GUI”可视化图形程序 , “native” 驱动程序。好接下来是我们的子系统版本号,这里大家可以自己设置指定版本号。
entry是用来指定我们的程序的入口点。就是程序从哪里开始执行(也就是初始化我们EIP寄存器的值),一般entry 后面跟的是我们的标号名称。