;模式定义
.386
.model flat ,stdcall
Option casemap:none
;include 头文件定义
Include windows.inc
Include user32.inc
Includelib user32.lib
Include kerne132.inc
Includelib kerne132.lib
;数据段定义
.data
szcaption db ‘A Messagebox!’,0
sztext db ‘hello, world!’ , 0
;代码段定义
.code
Start:
invoke messagebox ,null ,offset sztext,\ offset szCaption,MB_OK
invoke ExitProcess,null
end start
上面用来复制运行用
下面用来解释代码作用
.386 ;指定使用的指令集 .386汇编语言的伪指令,其他还有很多*86和*86p
.386p这种写驱动用
.model flat ,stdcall ;工作模式 内存模式,语言模式,其他模式 语言模式就是子程序的调用方式
Option casemap:none ;区分API名称大小写,
;include 头文件定义
Include windows.inc
Include user32.inc
Includelib user32.lib
Include kerne132.inc
Includelib kerne132.lib
;数据段定义 更多
.data ;初始化过的变量定义
szcaption db ‘A Messagebox!’,0
sztext db ‘hello, world!’ , 0
. data? ;没有初始化过的变量定义
.const ;常量定义,可读不可写
;堆栈段没有,堆栈段里的内容是可执行读写,靠动态修改代码的反跟踪模块可以拷贝到堆栈中去边修改边执行。
黑客工具用到的缓冲区溢出技术也用到了这个特征。
;代码段定义
.code
Start:
invoke messagebox ,\
null ,\ ;父窗口句柄
offset sztext,\ ;消息框内容
offset szCaption,\ ;标题
MB_OK
invoke ExitProcess,null
end start
注释与换行
;这个符号是注释
‘hello ;world’这样用就不是注释,因为是文本输入
\这个符号用来换行用法上面有了