OD中斷方法淺探
Ollydbg是一個新的32位的匯編層調試軟件。適應於windows98、me、2000、xp和2003操作系統。由於他具有圖形窗口界面,所以操作方便、直觀,是cracker的好工具。 由於Ollydbg沒有了TRW2000的萬能斷點,所以許多的新手感覺到用Ollydbg斷點不好找。現在我來的說說Ollydbg下中斷的幾種方法。本人是個菜鳥,水平有限,可能不能完整的寫出來,也可能存在錯誤。請大家指正。 我所表述的是Ollydbg v1.09d中文版,其他版本和英文版下自己參考。
這里推薦下小甲魚老師的解密系列之OD使用教程,共23節課,學軟件破解的精品資源!
第一 尋常斷點
Ollydbg中一般下中斷的方法,就是在程序的地址處用鼠標選擇這一行。然后按F2鍵,這時被選擇的那一行的地址會變成別的顏色,就表示這個地址處下了中斷。然后運行程序時只有到這個地址處就會被Ollydbg中斷。
這個方法用的比較多,所以把他稱作尋常斷點。
如果有命令行插件,就可以在命令窗口中輸入BPX xxxxxxxx 下斷點。
優點:只要自己懷疑是重要的代碼處都可以下這種下斷點,不受條件的限制,所以方便實用。
缺點:如果不知道代碼功能下斷點具有盲目性。
第二 API斷點
Ollydbg中一般下API中斷的方法,有二種。
1. 在代碼窗口中點鼠標右鍵,出現功能菜單。在[搜索]選擇項下有〔當前模塊的名稱〕和〔全部模塊的名稱〕倆項,選擇其中的一項就打開了程序調用API的窗口,在這個窗口中選擇你要跟蹤的API函數名。雙擊這個函數就能到程序的調用地址處。然后用F2下中斷。也可以在API窗口中選擇需要跟蹤的函數點鼠標右鍵出現功能菜單,選擇〔在每個參考設置斷點〕。同樣下了斷點。
快捷方式:Ctrl+N
2. 在命令行窗口中輸入BPX API函數名或者BP API函數名 后回車。這時出現了所有調用這個函數的地址的窗口,在這個窗口中可以看到調用這個API函數的地址已改變了顏色。說明下好了斷點。
說明一下:BPX一般中斷在程序調用API的地址處。BP會中斷在API的寫入地址處。二這有所不同,根據需要選擇。
優點:這種方法下的斷點是針對每一個API函數的,所以具有明確的目的。
缺點:關鍵的API函數不容易找到。所以有時下的斷點沒有作用。
第三 內存斷點(跟蹤關鍵數據的斷點)
Ollydbg中的內存斷點相當於TRW中的bpm 斷點。
下斷點的方法是:在程序運行中斷時選擇界面中的轉存窗口,用光標選擇內存中的一段關鍵數據(顏色會改變),然后右擊鼠標出現功能菜單。選擇〔斷點〕項,其中有二個選擇〔內存訪問〕和〔內存寫入〕。
〔內存訪問〕斷點是程序運行時要調用被選擇的內存數據時就會被Ollydbg中斷,根據這個特點在破解跟蹤時只要在關鍵數據內存中下中斷就可以知道程序在什么地方和什么時候用到了跟蹤的數據。對於一些復雜算法和流程變態的算法跟蹤有很大的幫助。從破解上講,一個注冊碼的生成一定是由一些關鍵數據或者原始數據計算來的。所以在內存中一定要用到這些關鍵數據。那么〔內存訪問〕斷點就是最好的中斷方法。
〔內存寫入〕斷點是程序運行時向被選擇的內存地址寫入數據時就會被Ollydbg中斷。根據這個特點在破解時可以跟蹤一個關鍵數據是什么時候生成的,生成的代碼段在那個地方。所以一個關鍵的數據如果不知道他的由來就可以用〔內存訪問〕斷點查找計算的核心。
內存中斷的下斷點還有另外的一種方法:程序運行時如果知道關鍵的數據,比如我們輸入的試驗碼、程序生成的序列號等。這時在內存中一定存在這些數據。用Alt+M打開內存窗口,在這個窗口中搜索知道的關鍵數據。用光標選擇這些數據同樣下內存中斷,這種方法更容易找的關鍵的數據。
優點:斷點是直接面向關鍵數據的,所以比較容易到核心部分。
缺點:內存斷點重新運行后會消失,干擾比較多。
第四 硬件斷點(跟蹤關鍵標志的斷點)
硬件斷點是Olldbg所特有的斷點,他不會因為重新運行就銷毀,只要不刪除。跟蹤這個程序時就有效。但他在98系統下會不起作用。
硬件斷點是根據關鍵標志回逆到關鍵代碼的好方法。下中斷的方法和內存斷點的方法相同,有三個方式〔硬件訪問〕、〔硬件寫入〕、〔硬件執行〕。一般用前2個。他也同樣有內存斷點的特性,所以可以用內存斷點的地方也可以用硬件斷點。這里介紹利用他來跟蹤注冊標志的使用方法,一般軟件的注冊都用到了標志比較。即在內存地址中有一個標志,在判斷是不是注冊時比較標志的值。不同的值表示不同的注冊狀態。這個標志的地址一般比較固定。根據這個特點可以下硬件斷點來跟蹤標志位是什么地方被標志的。
方法:在轉存窗口中選擇到標志存放的內存地址處,然后選擇標志值。下〔硬件寫入〕中斷(根據標志的字節下不同的長度)。重新運行程序你會發現Ollydbg會不斷的中斷在這個標志的內存地址處。在功能菜單的〔調試〕選項下選擇〔硬件斷點〕就打開了硬件斷點的窗口,在這個窗口中選擇〔跟蹤〕,這時轉存窗口就會來到被下中斷的內存地址處。運行程序跟蹤內存地址中的值就會知道被賦標志的代碼,跟蹤到計算的核心。〔硬件訪問〕的使用可以知道程序在運行時多少地方用到了這個注冊標志。對於破解復雜效驗的程序十分的有效。
直接在命令欄里下bh ****硬件斷點