日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

【转载】W32Dasm反汇编工具使用详解

發(fā)布時(shí)間:2024/5/24 综合教程 39 生活家
生活随笔 收集整理的這篇文章主要介紹了 【转载】W32Dasm反汇编工具使用详解 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。