学习 PE 文件格式必须要有一个可以用来学习的程序,这样的程序尽可能的小一些比较好(体积大小其本质没有差别,只是学习的时候方便一些),因此写一个简单的 Hello Wolrd 程序就比较适合。为甚麽使用汇编而不用其他语言呢,使用汇编编写的程序在编译连接后没有什么多余的代码,而就算使用 C 语言去写,也会有一些其他的代码在里面,比如说启动代码等。
RadASM
RadASM 是 Windows 下编写汇编代码的集成开发环境,还是比较好用的。自行下载安装即可。
创建工程
启动 RadASM 程序,选择菜单的“文件”->“新建工程”,然后在“工程向导”中来创建我们的程序。
点击“下一步”,然后在“工程向导 - 模板”步骤直接点“下一步”,在“工程向导 - 文件及目录”步骤,选择如下图:
此步骤只勾选“Asm”选项,然后点击“下一步”,在最后的向导中保持默认,直接点击“完成”即可。
此时,选择右侧“工程”,双击 hello.asm 则可以开始编写代码。
完成 Hello World 程序
到该步骤,直接输入代码即可,代码如下:
.386
.model flat, stdcall
option casemap : none
include windows.inc
include user32.inc
includelib user32.lib
include kernel32.inc
includelib kernel32.lib
.data
szCaption db 'hello', 0
szText db 'Hello World', 0
.code
start:
invoke MessageBox, NULL, offset szText, offset szCaption, MB_OK
invoke ExitProcess, NULL
end start
完成上面的代码后,直接 Ctrl + F5,构建并运行程序,当然,也可以在菜单栏的“构建”菜单下逐步操作。
运行后的程序如下图:
来查看一下它的大小,只有 3k 大小。之后,学习 PE 文件格式时,就从这个简单的程序开始分析。
微信中搜索 “码农UP2U” 关注我的公众号吧!!!