这两天发现了一个很牛X的软件安全论坛“看雪论坛”,里面好多软件安全方面的大牛,懂得了好多windows下拦截系统API调用的方法都是通过汇编语言实现的,于是想了解下windows下编写汇编的方法:
汇编程序的生成和c写的程序一样,需要编辑源代码,编译和链接三个步骤。
首先在网上偷了一个最简单的程序,用editplus保存成".asm"结尾的文件,代码如下:
.386
.model flat, stdcall
option casemap:none
;###################
include windows.inc
include user32.inc
include kernel32.inc
include gdi32.inc
include masm32.inc
includelib user32.lib
includelib kernel32.lib
includelib gid32.lib
includelib masm32.lib
;#####################
.data?
szbuffer db 100 dup(?)
.data
szcaptionName db "Hello world",0
szbegin db "time:"
sztext db 100 dup(?)
;####################
.code
start:
;main
invoke MessageBox,NULL,offset szbegin,offset szcaptionName,MB_ICONQUESTION or MB_OK
invoke ExitProcess,eax
end start
编辑完源代码进行编译生成.obj的目标文件,需要添加ml.exe的环境变量:
链接.obj文件生成可执行文件.exe,需要用到链接工具link
最后完工,成功编译出一个exe文件。运行的结果是弹出一个window的提示对话框。