OllyICE使用教程_第1頁
OllyICE使用教程_第2頁
OllyICE使用教程_第3頁
OllyICE使用教程_第4頁
OllyICE使用教程_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、OllyICE使用說明與例如一、OllyDBG 的安裝與配置OllyDBG 1.10 版的發(fā)布版本是個 ZIP 壓縮包,只要解壓到一個目錄下,運行 OllyDBG.exe 就可以了。漢化版的發(fā)布版本是個 RAR 壓縮包,同樣只需解壓到一個目錄下運行 OllyDBG.exe 即可:OllyDBG 中各個窗口的功能如上圖。簡單解釋一下各個窗口的功能,更詳細(xì)的內(nèi)容可以參考 TT 小組翻譯的中文幫助:反匯編窗口:顯示被調(diào)試程序的反匯編代碼,標(biāo)題欄上的地址、HEX 數(shù)據(jù)、反匯編、注釋可以通過在窗口中右擊出現(xiàn)的菜單 界面選項-隱藏標(biāo)題 或 顯示標(biāo)題 來進行切換是否顯示。用鼠標(biāo)左鍵點擊注釋標(biāo)簽可以切換注釋顯

2、示的方式。存放器窗口:顯示當(dāng)前所選線程的 CPU 存放器內(nèi)容。同樣點擊標(biāo)簽 存放器 (FPU) 可以切換顯示存放器的方式。信息窗口:顯示反匯編窗口中選中的第一個命令的參數(shù)及一些跳轉(zhuǎn)目標(biāo)地址、字串等。數(shù)據(jù)窗口:顯示內(nèi)存或文件的內(nèi)容。右鍵菜單可用于切換顯示方式。堆棧窗口:顯示當(dāng)前線程的堆棧。要調(diào)整上面各個窗口的大小的話,只需左鍵按住邊框拖動,等調(diào)整好了,重新啟動一下 OllyDBG 就可以生效了。啟動后我們要把插件及 UDD 的目錄配置為絕對路徑,點擊菜單上的 選項-界面,將會出來一個界面選項的對話框,我們點擊其中的目錄標(biāo)簽:因為我這里是把 OllyDBG 解壓在 F:OllyDBG 目錄下,所以

3、相應(yīng)的 UDD 目錄及插件目錄按圖上配置。還有一個常用到的標(biāo)簽就是上圖后面那個字體,在這里你可以更改 OllyDBG 中顯示的字體。上圖中其它的選項可以保存為默認(rèn),假設(shè)有需要也可以自己修改。修改完以后點擊確定,彈出一個對話框,說我們更改了插件路徑,要重新啟動 OllyDBG。在這個對話框上點確定,重新啟動一下 OllyDBG,我們再到界面選項中看一下,會發(fā)現(xiàn)我們原先設(shè)置好的路徑都已保存了。有人可能知道插件的作用,但對那個 UDD 目錄不清楚。我這簡單解釋一下:這個 UDD 目錄的作用是保存你調(diào)試的工作。比方你調(diào)試一個軟件,設(shè)置了斷點,添加了注釋,一次沒做完,這時 OllyDBG 就會把你所做的

4、工作保存到這個 UDD 目錄,以便你下次調(diào)試時可以繼續(xù)以前的工作。如果不設(shè)置這個 UDD 目錄,OllyDBG 默認(rèn)是在其安裝目錄下保存這些后綴名為 udd 的文件,時間長了就會顯的很亂,所以還是建議專門設(shè)置一個目錄來保存這些文件。另外一個重要的選項就是調(diào)試選項,可通過菜單 選項-調(diào)試設(shè)置 來配置:新手一般不需更改這里的選項,默認(rèn)已配置好,可以直接使用。建議在對 OllyDBG 已比擬熟的情況下再來進行配置。上面那個異常標(biāo)簽中的選項經(jīng)常會在脫殼中用到,建議在有一定調(diào)試根底后學(xué)脫殼時再配置這里。除了直接啟動 OllyDBG 來調(diào)試外,我們還可以把 OllyDBG 添加到資源管理器右鍵菜單,這樣我

5、們就可以直接在 .exe 及 .dll 文件上點右鍵選擇“用Ollydbg翻開菜單來進行調(diào)試。要把 OllyDBG 添加到資源管理器右鍵菜單,只需點菜單 選項-添加到瀏覽器,將會出現(xiàn)一個對話框,先點擊“添加 Ollydbg 到系統(tǒng)資源管理器菜單,再點擊“完成按鈕即可。要從右鍵菜單中刪除也很簡單,還是這個對話框,點擊 “從系統(tǒng)資源管理器菜單刪除 Ollydbg,再點擊“完成就行了。OllyDBG 支持插件功能,插件的安裝也很簡單,只要把下載的插件一般是個 DLL 文件復(fù)制到 OllyDBG 安裝目錄下的 PLUGIN 目錄中就可以了,OllyDBG 啟動時會自動識別。要注意的是 OllyDBG

6、1.10 對插件的個數(shù)有限制,最多不能超過 32 個,否那么會出錯。建議插件不要添加的太多。到這里根本配置就完成了,OllyDBG 把所有配置都放在安裝目錄下的 ollydbg.ini 文件中。二、根本調(diào)試方法OllyDBG 有三種方式來載入程序進行調(diào)試,一種是點擊菜單 文件-翻開 快捷鍵是 F3來翻開一個可執(zhí)行文件進行調(diào)試,另一種是點擊菜單 文件- 附加 來附加到一個已運行的進程上進行調(diào)試。注意這里要附加的程序必須已運行。第三種就是用右鍵菜單來載入程序不知這種算不算。一般情況下我們選第一種方 式。比方我們選擇一個 test.exe 來調(diào)試,通過菜單 文件-翻開 來載入這個程序,OllyDBG

7、 中顯示的內(nèi)容將會是這樣:調(diào)試中我們經(jīng)常要用到的快捷鍵有這些:F2:設(shè)置斷點,只要在光標(biāo)定位的位置上圖中灰色條按F2鍵即可,再按一次F2鍵那么會刪除斷點。相當(dāng)于 SoftICE 中的 F9F8:單步步過。每按一次這個鍵執(zhí)行一條反匯編窗口中的一條指令,遇到 CALL 等子程序不進入其代碼。相當(dāng)于 SoftICE 中的 F10F7:單步步入。功能同單步步過(F8)類似,區(qū)別是遇到 CALL 等子程序時會進入其中,進入后首先會停留在子程序的第一條指令上。相當(dāng)于 SoftICE 中的 F8F4:運行到選定位置。作用就是直接運行到光標(biāo)所在位置處暫停。相當(dāng)于 SoftICE 中的 F7F9:運行。按下這個

8、鍵如果沒有設(shè)置相應(yīng)斷點的話,被調(diào)試的程序?qū)⒅苯娱_始運行。相當(dāng)于 SoftICE 中的 F5CTR+F9:執(zhí)行到返回。此命令在執(zhí)行到一個 ret (返回指令)指令時暫停,常用于從系統(tǒng)領(lǐng)空返回到我們調(diào)試的程序領(lǐng)空。相當(dāng)于 SoftICE 中的 F12ALT+F9:執(zhí)行到用戶代碼??捎糜趶南到y(tǒng)領(lǐng)空快速返回到我們調(diào)試的程序領(lǐng)空。相當(dāng)于 SoftICE 中的 F11現(xiàn)在我們開始正式進入破解。今天的目標(biāo)程序是看雪兄?加密與解 密?第一版附帶光盤中的 鏡像打包中的 CFF Crackme #3,采用用戶名/序列號保護方式。原版加了個 UPX 的殼。剛開始學(xué)破解先不涉及殼的問題,我們主要是熟悉用 OllyDB

9、G 來破解的一般方法。我這里把殼脫掉來分析,附件是脫殼后的文件,直接就可以拿來用。先說一下一般軟件破解的流程:拿到一個軟件先別接著馬上用 OllyDBG 調(diào)試,先運行一下,有幫助文檔的最好先看一下幫助,熟悉一下軟件的使用方法,再看看注冊的方式。如果是序列號方式可以先輸個假的來試一下,看看有什么反 應(yīng),也給我們破解留下一些有用的線索。如果沒有輸入注冊碼的地方,要考慮一下是不是讀取注冊表或 Key 文件一般稱 keyfile,就是程序讀取一個文件中的內(nèi)容來判斷是否注冊,這些可以用其它工具來輔助分析。如果這些都不是,原程序只是一個功能不全的試用版,那要 注冊為正式版本就要自己來寫代碼完善了。有點跑題

10、了,呵呵。獲得程序的一些根本信息后,還要用查殼的工具來查一下程序是否加了殼,假設(shè)沒殼的話看看程序是什 么編譯器編的,如 VC、Delphi、VB 等。這樣的查殼工具有 PEiD 和 FI。有殼的話我們要盡量脫了殼后再來用 OllyDBG 調(diào)試,特殊情況下也可帶殼調(diào)試。下面進入正題:我們先來運行一下這個 crackme用 PEiD 檢測顯示是 Delphi 編的,界面如圖:這個 crackme 已經(jīng)把用戶名和注冊碼都輸好了,省得我們動手_。我們在那個“Register now !按鈕上點擊一下,將會跳出一個對話框:好了,今天我們就從這個錯誤對話框中顯示的“Wrong Serial, try ag

11、ain!來入手。啟動 OllyDBG,選擇菜單 文件-翻開 載入 CrackMe3.exe 文件,我們會停在這里:我們在反匯編窗口中右擊,出來一個菜單,我們在 查找-所有參考文本字串 上左鍵點擊:當(dāng)然如果用上面那個 超級字串參考 插件會更方便。但我們的目標(biāo)是熟悉 OllyDBG 的一些操作,我就盡量使用 OllyDBG 自帶的功能,少用插件。好了,現(xiàn)在出來另一個對話框,我們在這個對話框里右擊,選擇“查找文本菜單項,輸入“Wrong Serial, try again!的開頭單詞“Wrong注意這里查找內(nèi)容要區(qū)分大小寫來查找,找到一處:在我們找到的字串上右擊,再在出來的菜單上點擊“反匯編窗口中跟

12、隨,我們來到這里:見上圖,為了看看是否還有其他的參考,可以通過選擇右鍵菜單查找參考-立即數(shù),會出來一個對話框:分別雙擊上面標(biāo)出的兩個地址,我們會來到對應(yīng)的位置:00440F79 |. BA 8C104400 MOV EDX,CrackMe3.0044108C ; ASCII Wrong Serial,try again!00440F7E |. A1 442C4400 MOV EAX,DWORD PTR DS:442C4400440F83 |. 8B00 MOV EAX,DWORD PTR DS:EAX00440F85 |. E8 DEC0FFFF CALL CrackMe3.0043D0680

13、0440F8A |. EB 18 JMP SHORT CrackMe3.00440FA400440F8C | 6A 00 PUSH 000440F8E |. B9 80104400 MOV ECX,CrackMe3.00441080 ; ASCII Beggar off!00440F93 |. BA 8C104400 MOV EDX,CrackMe3.0044108C ; ASCII Wrong Serial,try again!00440F98 |. A1 442C4400 MOV EAX,DWORD PTR DS:442C4400440F9D |. 8B00 MOV EAX,DWORD P

14、TR DS:EAX00440F9F |. E8 C4C0FFFF CALL CrackMe3.0043D068我們在反匯編窗口中向上滾動一下再看看:00440F2C |. 8B45 FC MOV EAX,DWORD PTR SS:EBP-400440F2F |. BA 14104400 MOV EDX,CrackMe3.00441014 ; ASCII Registered User00440F34 |. E8 F32BFCFF CALL CrackMe3.00403B2C ; 關(guān)鍵,要用F7跟進去00440F39 |. 75 51 JNZ SHORT CrackMe3.00440F8C ;

15、這里跳走就完蛋00440F3B |. 8D55 FC LEA EDX,DWORD PTR SS:EBP-400440F3E |. 8B83 C8020000 MOV EAX,DWORD PTR DS:EBX+2C800440F44 |. E8 D7FEFDFF CALL CrackMe3.00420E2000440F49 |. 8B45 FC MOV EAX,DWORD PTR SS:EBP-400440F4C |. BA 2C104400 MOV EDX,CrackMe3.0044102C ; ASCII GFX-754-IER-95400440F51 |. E8 D62BFCFF CALL

16、 CrackMe3.00403B2C ; 關(guān)鍵,要用F7跟進去00440F56 |. 75 1A JNZ SHORT CrackMe3.00440F72 ; 這里跳走就完蛋00440F58 |. 6A 00 PUSH 000440F5A |. B9 3C104400 MOV ECX,CrackMe3.0044103C ; ASCII CrackMe cracked successfully00440F5F |. BA 5C104400 MOV EDX,CrackMe3.0044105C ; ASCII Congrats! You cracked this CrackMe!00440F64 |.

17、 A1 442C4400 MOV EAX,DWORD PTR DS:442C4400440F69 |. 8B00 MOV EAX,DWORD PTR DS:EAX00440F6B |. E8 F8C0FFFF CALL CrackMe3.0043D06800440F70 |. EB 32 JMP SHORT CrackMe3.00440FA400440F72 | 6A 00 PUSH 000440F74 |. B9 80104400 MOV ECX,CrackMe3.00441080 ; ASCII Beggar off!00440F79 |. BA 8C104400 MOV EDX,Crac

18、kMe3.0044108C ; ASCII Wrong Serial,try again!00440F7E |. A1 442C4400 MOV EAX,DWORD PTR DS:442C4400440F83 |. 8B00 MOV EAX,DWORD PTR DS:EAX00440F85 |. E8 DEC0FFFF CALL CrackMe3.0043D06800440F8A |. EB 18 JMP SHORT CrackMe3.00440FA400440F8C | 6A 00 PUSH 000440F8E |. B9 80104400 MOV ECX,CrackMe3.00441080

19、 ; ASCII Beggar off!00440F93 |. BA 8C104400 MOV EDX,CrackMe3.0044108C ; ASCII Wrong Serial,try again!00440F98 |. A1 442C4400 MOV EAX,DWORD PTR DS:442C4400440F9D |. 8B00 MOV EAX,DWORD PTR DS:EAX00440F9F |. E8 C4C0FFFF CALL CrackMe3.0043D068大家注意看一下上面的注釋,我在上面標(biāo)了兩個關(guān)鍵點。有人可能要問,你怎么知道那兩個地方是關(guān)鍵點?其實很簡單,我是根據(jù)查看是哪

20、條指令跳到 “wrong serial,try again這條字串對應(yīng)的指令來決定的。如果你在 調(diào)試選項-CPU 標(biāo)簽中把“顯示跳轉(zhuǎn)路徑及其下面的兩個“如跳轉(zhuǎn)未實現(xiàn)那么顯示灰色路徑、“顯示跳轉(zhuǎn)到選定命令的路徑都選上的話,就會看到是從什么地方跳到出錯字串處 的:我們在上圖中地址 00440F2C 處按 F2 鍵設(shè)個斷點,現(xiàn)在我們按 F9 鍵,程序已運行起來了。我在上面那個編輯框中隨便輸入一下,如 CCDebuger,下面那個編輯框我還保存為原來的“754-GFX-IER-954”,我們點一下那個“Register now !按鈕,呵, OllyDBG 跳了出來,暫停在我們下的斷點處。我們看一下信

21、息窗口,你應(yīng)該發(fā)現(xiàn)了你剛剛輸入的內(nèi)容了吧?我這里顯示是這樣:堆棧 SS:0012F9AC=00D44DB4, (ASCII CCDebuger)EAX=00000009上面的內(nèi)存地址 00D44DB4 中就是我們剛剛輸入的內(nèi)容,我這里是 CCDebuger。你可以在 堆棧 SS:0012F9AC= 00D44DB4, (ASCII CCDebuger) 這條內(nèi)容上左擊選擇一下,再點右鍵,在彈出菜單中選擇“數(shù)據(jù)窗口中跟隨數(shù)值,你就會在下面的數(shù)據(jù)窗口中看到你剛剛輸入的內(nèi)容。而 EAX=00000009 指的是你輸入內(nèi)容的長度。如我輸入的 CCDebuger 是9個字符。如下列圖所示:現(xiàn)在我們來按

22、F8 鍵一步步分析一下:00440F2C |. 8B45 FC MOV EAX,DWORD PTR SS:EBP-4 ; 把我們輸入的內(nèi)容送到EAX,我這里是“CCDebuger00440F2F |. BA 14104400 MOV EDX,CrackMe3.00441014 ; ASCII Registered User00440F34 |. E8 F32BFCFF CALL CrackMe3.00403B2C ; 關(guān)鍵,要用F7跟進去00440F39 |. 75 51 JNZ SHORT CrackMe3.00440F8C ; 這里跳走就完蛋當(dāng)我們按 F8 鍵走到 00440F34 |.

23、E8 F32BFCFF CALL CrackMe3.00403B2C 這一句時,我們按一下 F7 鍵,進入這個 CALL,進去后光標(biāo)停在這一句:我們所看到的那些 PUSH EBX、 PUSH ESI 等都是調(diào)用子程序保存堆棧時用的指令,不用管它,按 F8 鍵一步步過來,我們只關(guān)心關(guān)鍵局部:00403B2C /$ 53 PUSH EBX00403B2D |. 56 PUSH ESI00403B2E |. 57 PUSH EDI00403B2F |. 89C6 MOV ESI,EAX ; 把EAX內(nèi)我們輸入的用戶名送到 ESI00403B31 |. 89D7 MOV EDI,EDX ; 把EDX內(nèi)

24、的數(shù)據(jù)“Registered User送到EDI00403B33 |. 39D0 CMP EAX,EDX ; 用“Registered User和我們輸入的用戶名作比擬00403B35 |. 0F84 8F000000 JE CrackMe3.00403BCA ; 相同那么跳00403B3B |. 85F6 TEST ESI,ESI ; 看看ESI中是否有數(shù)據(jù),主要是看看我們有沒有輸入用戶名00403B3D |. 74 68 JE SHORT CrackMe3.00403BA7 ; 用戶名為空那么跳00403B3F |. 85FF TEST EDI,EDI00403B41 |. 74 6B J

25、E SHORT CrackMe3.00403BAE00403B43 |. 8B46 FC MOV EAX,DWORD PTR DS:ESI-4 ; 用戶名長度送EAX00403B46 |. 8B57 FC MOV EDX,DWORD PTR DS:EDI-4 ; “Registered User字串的長度送EDX00403B49 |. 29D0 SUB EAX,EDX ; 把用戶名長度和“Registered User字串長度相減00403B4B |. 77 02 JA SHORT CrackMe3.00403B4F ; 用戶名長度大于“Registered User長度那么跳00403B4D

26、 |. 01C2 ADD EDX,EAX ; 把減后值與“Registered User長度相加,即用戶名長度00403B4F | 52 PUSH EDX00403B50 |. C1EA 02 SHR EDX,2 ; 用戶名長度值右移2位,這里相當(dāng)于長度除以400403B53 |. 74 26 JE SHORT CrackMe3.00403B7B ; 上面的指令及這條指令就是判斷用戶名長度最少不能低于400403B55 | 8B0E MOV ECX,DWORD PTR DS:ESI ; 把我們輸入的用戶名送到ECX00403B57 |. 8B1F MOV EBX,DWORD PTR DS:EDI ; 把“Registered User送到EBX00403B59 |. 39D9 CMP ECX,EBX ; 比擬00403B5B |. 75 58 JNZ SHORT CrackMe3.00403BB5 ; 不等那么完蛋根據(jù)上面的分析,我們知道用戶名必須是“Registered User。我們按 F9 鍵讓程序運行,出現(xiàn)錯誤對話框,點確定,重新在第一個編輯框中輸入“Registered User,再次

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論