這個年代還有人弄彙編,肯定很多人都不以為然。
但是我還是想弄弄,主要目的就是為以後寫外掛打好基礎。
編譯器我選擇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 這個環境了,也就無所謂了。