【转载】W32Dasm反汇编工具使用详解
W32Dasm是一個(gè)強(qiáng)大的反匯編工具,操作簡(jiǎn)單,使用方便。通常被程序員使用,當(dāng)然也可被用來Crack軟件了,很適合Cracker使用。我在這把與crack相關(guān)的功能簡(jiǎn)述如下:
1.0 開始
2.0 保存反匯編文本文件和創(chuàng)建方案文件
3.0 反匯編文本代碼的基本操作
4.0 復(fù)制匯編代碼文本
5.0 裝載32位的匯編代碼動(dòng)態(tài)調(diào)試
6.0 運(yùn)行,暫停或終止程序
7.0 單步跟蹤程序
8.0 設(shè)置激活斷點(diǎn)
9.0 偏移地址和虛擬地址轉(zhuǎn)換
1.0 開始
1.1 運(yùn)行W32Dasm,在這里以windows95自帶的計(jì)算器為例:calc.exe。
1.2 從Disassembler(反匯編)菜單選擇Disassembler Options(反匯編程序選項(xiàng))選項(xiàng)將出現(xiàn)如下對(duì)話框:
1.3 在Disassembler(反匯編)菜單,選擇Open File(打開文件)選項(xiàng)或按工具欄按鈕
1.4 選擇你要打開的文件就可。
注意:你反匯編文件后,如字符己超過屏幕外,這時(shí)你要選擇合適的字體(在Font字體選項(xiàng)中Select Font選擇字體) ,然后設(shè)為默認(rèn)字體(Save Default Font)即可。 當(dāng)然一般以默認(rèn)值就可。
2.0 保存反匯編文本文件和創(chuàng)建方案文件(Save The Disassembly Text and Create A Project File )
略。
3.0 反匯編源代碼的基本操作
3.1 轉(zhuǎn)到代碼開始(Goto Code Start)
在工具欄按或從菜單的轉(zhuǎn)到(Goto)選項(xiàng)選擇轉(zhuǎn)到代碼開始(Goto Code Start) 或按Ctrl S, 這樣光標(biāo)將來到代碼的開始處,用戶可通過雙擊鼠標(biāo)或用shift+上下光標(biāo)鍵改變光標(biāo)的位置。
注:代碼的開始處是反匯編代碼列表清單匯編指令的開始,而不是代碼運(yùn)行的起點(diǎn),程序運(yùn)行的起點(diǎn)稱為程序入口點(diǎn)(Program Entry Point)
3.2 轉(zhuǎn)到程序入口點(diǎn)(Goto Program Entry Point)
在工具欄按或菜單的轉(zhuǎn)到(Goto)選項(xiàng)選擇 轉(zhuǎn)到程序入口點(diǎn)(Goto Program Entry Point)或按F10,這樣光標(biāo)將來到程序入口點(diǎn)(Entry Point),這里就是程序執(zhí)行的起始點(diǎn),一般動(dòng)態(tài)調(diào)試時(shí)LOAD時(shí)也就停在此處。
3.3 轉(zhuǎn)到頁(Goto Page)
在工具欄按或菜單的轉(zhuǎn)到(Goto)選項(xiàng)選擇轉(zhuǎn)到頁(Goto Page)或按F11,這時(shí)跳出一對(duì)話框,輸入頁數(shù)可跳轉(zhuǎn)到相關(guān)頁面去。
3.4 轉(zhuǎn)到代碼位置(Goto Code Location)
在工具欄按或菜單的轉(zhuǎn)到(Goto)選項(xiàng)選擇轉(zhuǎn)到代碼位置(Goto Code Location)或按F12,一個(gè)對(duì)話框?qū)⒊霈F(xiàn),充許用戶輸入代碼偏移地址,以跳轉(zhuǎn)到此位置上去。
3.5 執(zhí)行文本跳轉(zhuǎn)(Execute Text Jump)
這功能是在Execute Text(執(zhí)行文本)菜單選項(xiàng)里的,執(zhí)行跳躍(Execute Jump)功能激活條件是光標(biāo)在代碼的跳轉(zhuǎn)指令這行上(這時(shí)光條是高亮度的綠顏色)。此時(shí)工具條Jump To按鈕也激活。如圖:
此時(shí)按或菜單選項(xiàng)Execute Jump(執(zhí)行跳躍)或按右光標(biāo)鍵,光條將來到跳轉(zhuǎn)指令所指到的位置。在這例子里,將來到:004076CE xor eax,eax 這一行代碼處:
如要返回到上一次跳躍,請(qǐng)參考3.6.
3.6 返回到上一次跳躍Return From Last Jump
這功能是在Execute Text(執(zhí)行文本)菜單選項(xiàng)里的,此指令僅僅是在 執(zhí)行文本跳轉(zhuǎn)功能完成后才激活。當(dāng)這條件成立時(shí),按鈕將激活。按或在菜單里選項(xiàng)返回到上一次跳躍(Return From Last Jump)或按左光標(biāo)鍵,光條將返回到上一次跳躍位置處。
3.7 執(zhí)行呼叫Execute Text Call
這功能是在Execute Text(執(zhí)行文本)菜單選項(xiàng)里的,此功能激活的條件是光條在CALL指令一行。在這一行時(shí)光條將發(fā)綠,按鈕將激活。執(zhí)行時(shí)光條將會(huì)來到CALL所指的地址處。
如下圖: 光條在0040751D call 004073D4 一行。
此時(shí)按或在菜單的執(zhí)行呼叫(Execute Text Call)或按右光標(biāo)鍵,光條將來到CALL所指的地址004073D4這一行。
如要返回到剛才起點(diǎn)的0040751D call 004073D4 一行,參考3.8的返回呼叫。
3.8 返回呼叫(Return From Last Call)
這功能是在Execute Text(執(zhí)行文本)菜單選項(xiàng)里的,此指令僅僅是在執(zhí)行呼叫Execute Text Call功能完成后才激活。當(dāng)這條件成立時(shí),按鈕將激活。按或在菜單里選項(xiàng)返回呼叫(Return From Last Call)或按左光標(biāo)鍵,光條將返回到上一次呼叫位置處。
3.9 導(dǎo)入功能(Imported)
在菜單功能選項(xiàng)里,其作用主要是查看import函數(shù)。按或在菜單功能選項(xiàng)里的導(dǎo)入(Imports)命令,執(zhí)行后將列出當(dāng)前文件的Import函數(shù)。
你可雙擊這些項(xiàng)目,光條將來到調(diào)用這些函數(shù)的代碼處。
注意:如果代碼多處引用了這些函數(shù),你雙擊這個(gè)項(xiàng)目函數(shù)時(shí),光條將在調(diào)用了其的幾個(gè)位置代碼處循環(huán).
你也可用copy all或copy view復(fù)制import函數(shù)。
3.10 出口功能(Exported)
在菜單功能選項(xiàng)里,其作用主要是查看Export函數(shù)。按或在菜單功能選項(xiàng)里的出口(Exports)命令,執(zhí)行后將列出當(dāng)前文件的Exports函數(shù)。
注意:一般EXE文件沒有exported,DLL文件有exported函數(shù)。
3.11 裁判(References)
在這個(gè)菜單選項(xiàng)里有菜單參考(MENU), 對(duì)話參考(DIALOG) or (串式數(shù)據(jù)參考STRING DATA),分別對(duì)應(yīng)按鈕:,或。
注意:其中(串式數(shù)據(jù)參考STRING DATA)功能破解時(shí)很常用。
4.0 復(fù)制匯編代碼文本
W32dasm充許打印或復(fù)制指定行的匯編代碼。首先你將鼠標(biāo)移到W32DASM的最左邊單擊,將會(huì)出現(xiàn)一個(gè)小紅點(diǎn),再按住shift鍵,移到你需要的下一行,再單擊鼠標(biāo)一下,將選中一段,按CTRL+C復(fù)制或在菜單選項(xiàng)反匯編里的拷貝指定的行(Copy Lines of Text)功能或按,把數(shù)據(jù)復(fù)制到剪貼板里。如:
5.0 裝載32位的匯編代碼動(dòng)態(tài)調(diào)試
5.1 反匯編windows自帶的計(jì)算器程序 calc.exe.
5.2 選擇菜單調(diào)試選項(xiàng)中的加載處理(Load Process),或按Ctrl+L.出現(xiàn)一個(gè)加載對(duì)話框,你可輸入選項(xiàng)命令。現(xiàn)在你可按裝載(load)按鈕。
Calc.exe現(xiàn)在被W32DASM動(dòng)態(tài)調(diào)試,將出現(xiàn)左右兩個(gè)調(diào)試窗口(如下圖),在初始化calc.exe程序后,指令將停留在入口點(diǎn)(Entry Point)處。
左邊的調(diào)試窗口列出各種狀態(tài)器如:CPU寄存器,CPU控制寄存器,斷點(diǎn),活動(dòng)的DLL,段寄存器等等;
6.0 運(yùn)行,暫停或終止程序
6.1 在右調(diào)試窗口,按運(yùn)行(RUN)按鈕或按F9,calc.exe將運(yùn)行起來。
按暫停(PAUSE)按鈕或空格鍵,程序?qū)和#@在單步跟蹤時(shí)經(jīng)常用到。
按終止(TERMINAT)按鈕,程序?qū)⑼V梗顺鰟?dòng)態(tài)調(diào)試環(huán)境。
7.0單步跟蹤程序
7.1 重新加載 calc.exe
7.2 在程序加載后,停留在入口點(diǎn),你可按F7或F8單步調(diào)試程序,這兩個(gè)鍵所不同的是F7是跟進(jìn)CALL里,F(xiàn)8是路過。
7.3 進(jìn)入自動(dòng)調(diào)試按 (F5) 和結(jié)束自動(dòng)調(diào)試按 (F6) 。
8.0設(shè)置激活斷點(diǎn)
8.1 重新加載 calc.exe
8.2 在W32DASM的菜單轉(zhuǎn)到選項(xiàng)轉(zhuǎn)到代碼處(goto code)功能,填上403198,按確定,你將在W32Dasm的主窗口(此時(shí)可能最小化了,把其還原即可)來到403198地址一行。光條在這一行顯亮綠色,按F2或用鼠標(biāo)左點(diǎn)擊最左邊(同時(shí)按住CTRL)設(shè)置斷點(diǎn)。
這時(shí)如斷點(diǎn)設(shè)置成功,光條最左邊有一小段黃條,顯示此行為斷點(diǎn)。如下圖:
如果斷點(diǎn)不在這里,整行光條將是黃色的。
當(dāng)斷點(diǎn)設(shè)置好后,在左調(diào)試窗口中的斷點(diǎn)小窗口顯示斷點(diǎn)情況(右邊有一*):
此時(shí)按F2或(鼠標(biāo)左鍵+CTRL),斷點(diǎn)將取消。
8.3 此時(shí)按F9程序?qū)⑦\(yùn)行到相關(guān)斷點(diǎn)時(shí)停止。
9.0 偏移地址和虛擬地址轉(zhuǎn)換
W32DASM、SOFTICE和Hiew(Decode模式)顯示的地址都是虛擬地址,但是在Hiew(Decode模式)下,F(xiàn)5功能鍵查找的地址是偏移地址,因此必須將虛擬地址轉(zhuǎn)換成偏移地址,才能找到正確的地址。常用的方法是在W32DASM下將綠色的光條移到某一行代碼上 , 在窗口底部有一行字指示其偏移地址 , 如虛似地址:Code DaTa@0040534e而偏移地址為:@Offset 0000474Eh. 這就是偏移地址。
10.0 結(jié)束
總結(jié)
以上是生活随笔為你收集整理的【转载】W32Dasm反汇编工具使用详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 支付宝华安黄金卖出钱什么时候到账?
- 下一篇: iptables详解