2017年9月9日 星期六

[逆向分析] 用Ollydbg詳細分析一個簡單的程序 觀察Ollydbg 機械碼的內容與比較數字大小

上一篇 寫了簡單的程序
http://futurebluecity.blogspot.tw/2017/09/Ollydbg-Simple-Analysis.html
這是上一篇的連結

有些人可能會從Hex Dump來問,這篇我來介紹一下Hex Dump流程。(其他大神可忽略過這篇文章)

從這篇開始講解:


用32位元編譯他  然後用OD打開執行檔  出現如下圖。


其實機械碼沒有很複雜,透過觀察就能發現一些地方有變動。
Hex Dump那個視窗內,快速鍵Ctrl+G 即可看到像下圖這樣的視窗。




有些人可能會很好奇到底進入點push ebp  這個機械碼在Hex Dump的哪裡? 要如何找?

可以利用Ctrl+G後 跳出的視窗輸入該機械碼最前面的位址。
即可找到
這邊也就是輸入00401500  按下OK,下面的Address即會跳到00401500的地方

機械碼55 後面的16進位,也就是00401500 往後的機械碼



直接進入主程式說明


這邊很明顯的可以推測到 esp+0x1Cxesp+0x18y
esp很明顯是0061FE90   加1C之後變成0061FEAC
加18 變成0061FEA8    堆疊裡面,分別為1跟2
因為X先出現   Y再出現,所以堆疊區就是由下往上堆

我們可以更仔細一點,在Hex Dump按Ctrl+G 輸入堆疊區裡面的0061FEAC與0061FEA8位址
然後把Hex Dump區與堆疊區放大來看,如下圖。



程序運作到這邊,來分析一下。
cmp  eax,dword ptr ss:[esp+0x18]
比較0061FEA8的數值與eax的數值

jge short  main.00401536
這行就是條件跳轉    大於(高於)或等於就跳轉
但是我們程序沒有大於   因此不跳轉  繼續往下執行



把main.00404000壓入堆疊esp裡面,下一行 即顯示內容






下面直接jmp跳開了往後的判斷式  因此無須繼續判斷
除非上述的條件判斷不同  才會繼續



Hex Dump 16進位與機械碼就結束了,也講完了比較數字的處理跳轉。

下節課程,會從其他主題繼續深入探討。

有著作權,請勿轉載。若要分享,請註明本篇來源。

沒有留言:

張貼留言

Ollydbg 2.01 繁體中文版

Ollydbg 2.01 繁體中文版 Ollydbg 2.01 繁體中文版下載: Mega:   https://mega.nz/#!I2Qy1aQD!-T5zO3PaANjBHU73I4NlkY8SHMxRptbBV8TpmeFt1fo GD: h...