1. 程式人生 > >逆向學習篇(一)

逆向學習篇(一)

開始學習逆向了,工欲善其事,必先利其器,第一篇,先記錄先od的各個功能。

這裡先借用一張網上偷來的圖

反彙編視窗:顯示被除錯程式的反彙編程式碼,標題欄上的地址、HEX 資料、反彙編、註釋可以通過在視窗中右擊出現的選單 介面選項->隱藏標題 或 顯示標題 來進行切換是否顯示。用滑鼠左鍵點選註釋標籤可以切換註釋顯示的方式。
暫存器視窗:顯示當前所選執行緒的 CPU 暫存器內容。同樣點選標籤 暫存器 (FPU) 可以切換顯示暫存器的方式。

資訊視窗:顯示反彙編視窗中選中的第一個命令的引數及一些跳轉目標地址、字串等。

資料視窗:顯示記憶體或檔案的內容。右鍵選單可用於切換顯示方式。

堆疊視窗:顯示當前執行緒的堆疊。
另外一個重要的選項就是除錯選項,可通過選單 選項->除錯設定 來配置:

F2:設定斷點,只要在游標定位的位置(上圖中灰色條)按F2鍵即可,再按一次F2鍵則會刪除斷點。(相當於 SoftICE 中的 F9)

F8:單步步過。每按一次這個鍵執行一條反彙編視窗中的一條指令,遇到 CALL 等子程式不進入其程式碼。(相當於 SoftICE 中的 F10)

F7:單步步入。功能同單步步過(F8)類似,區別是遇到 CALL 等子程式時會進入其中,進入後首先會停留在子程式的第一條指令上。(相當於 SoftICE 中的 F8)

F4:執行到選定位置。作用就是直接執行到游標所在位置處暫停。(相當於 SoftICE 中的 F7)

F9:執行。按下這個鍵如果沒有設定相應斷點的話,被除錯的程式將直接開始執行。(相當於 SoftICE 中的 F5)

CTR+F9:執行到返回。此命令在執行到一個 ret (返回指令)指令時暫停,常用於從系統領空返回到我們除錯的程式領空。(相當於 SoftICE 中的 F12)

ALT+F9:執行到使用者程式碼。可用於從系統領空快速返回到我們除錯的程式領空。(相當於 SoftICE 中的 F11)

另外這裡補充一下上面一排小按鈕的功能:

l 按鈕-程式執行的日誌、外掛載入的資訊檢視
    e 按鈕-模組資訊,程式載入的所有模組、庫 都可以看到路徑等 雙擊就可以看到基地址
    m 按鈕-記憶體資訊   對於 e按鈕中 的各個模組的基地址等
    t 按鈕-執行緒資訊
    w 按鈕-視窗資訊
    h 按鈕- 一些控制代碼的資訊
    c 按鈕-反彙編視窗   或者雙擊 從暫存器的 EIP  shift+加號回到之前的位置
    p 按鈕-記錄修改資訊 可以在這做還原 恢復
    k 按鈕-呼叫堆疊
    b 按鈕-斷點
    r 按鈕-顯示參考

另外依次說明一下這幾個按鈕:

單步步入(F7),單步步過(F8),跟蹤步入(ctrl+F11),跟蹤步過(ctrl+F12),執行到返回(ctrl+F9),轉到反彙編視窗中的地址


上面提到的幾個快捷鍵對於一般的除錯基本上已夠用了。要開始除錯只需設定好斷點,找到你感興趣的程式碼段再按 F8 或 F7 鍵來一條條分析指令功能就可以了。