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 ****硬體斷點