分类:
2007-03-18 14:32:18
这个年代还有人弄汇编,肯定很多人都不以为然。
但是我还是想弄弄,主要目的就是为以后写外挂打好基础。
编译器我选择masm32,其实masm32比tasm32灵活性要差一些,这些灵活的特性有时候在开发外挂的时候是很有效的,比如说tasm32就可以把一些代码直接放进数据段编译也不会报错,这个特性就很容易将你的外挂特殊程序的可执行代码当作数据直接写入到远程数据中去。但是,没有办法啊,masm32资料多些啊。虽然选择了masm32,但是我还是使用了tasm32中的make工具。使用这个工具可以对于方便编译调试可以节省很多工作。
首先下载editplus for masm32.这个工具在 AoGo去下载,下载了后最好还是单独再下载masm32_8+masm32_8_sp1。然后添加搜索路径环境变量,为d:\masm32\bin\。(你需要根据自己的安装目录调整)。将make.exe工具也拷贝到这个目录下。 这个时候,你在控制台下输入,make;ml;link;应该都有反应了。然后书写如下的makefile模板:
!if $d(RELEASE)
TASMDEBUG=
LINKDEBUG=
!else
TASMDEBUG=/Zi
LINKDEBUG=/DEBUG /DEBUGTYPE:CV
!endif
!if $d(MAKEDIR)
IMPORT=$(MAKEDIR)\..\lib\import32
!else
IMPORT=import32
!endif
NAME=EnumProc
RCNAME = EnumProc
INCLUDE = /I D:\MASM32\INCLUDE
$(NAME).exe: $(NAME).obj $(RCNAME).res
# Link /SUBSYSTEM:WINDOWS /LIBPATH:d:\masm32\lib $(LINKDEBUG) $(NAME).obj
Link /SUBSYSTEM:WINDOWS $(LINKDEBUG) /LIBPATH:d:\masm32\lib $(NAME).obj $(RCNAME).res
#$(RCNAME).res: $(RCNAME).rc
# rc $(INCLUDE) $(RCNAME).rc
$(NAME).obj: $(NAME).asm
ml /c /coff $(TASMDEBUG) $(INCLUDE) /Cp $(TASMDEBUG) $(NAME).asm
clean:
del *.obj
run:
$(NAME).exe
debug:
D:\flyODBG\flyODBG.eXe $(NAME).exe
---------------------------------------------------------------
上面的makefile文件表示:
在控制台下输入:
make ----》》 编译程序
make run ----- 》》运行程序
make debug ----》》使用olldbg调试程序
make clean ---》》清除 obj文件。
你可以在控制台下实验这些命令。当然,你需要将makefile文件拷贝到你源代码的目录,然后将上面的
NAME=EnumProc -----》》替换为你的工程文件名字
RCNAME = EnumProc -----》》替换为你的工程文件名字
其他的路径你也要相应的做修改。
然后你可以配置你的editplus,使运行编译和调试都不离开editplus的环境。如下依次(下图只显示配置make run,其余类似):
OK,如此后你就可以在editplus中顺利的编辑编译调试asm程序了。
其他嗨哟radasm和winasm都是很好用的IDE环境。其中winasm尤其强大。但是我已经习惯了editplus 这个环境了,也就无所谓了。