上一篇 寫了簡單的程序
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+0x1C 是x,esp+0x18是y
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進位與機械碼就結束了,也講完了比較數字的處理跳轉。
下節課程,會從其他主題繼續深入探討。
有著作權,請勿轉載。若要分享,請註明本篇來源。
訂閱:
張貼留言 (Atom)
Ollydbg 2.01 繁體中文版
Ollydbg 2.01 繁體中文版 Ollydbg 2.01 繁體中文版下載: Mega: https://mega.nz/#!I2Qy1aQD!-T5zO3PaANjBHU73I4NlkY8SHMxRptbBV8TpmeFt1fo GD: h...
-
Ollydbg 2.01 繁體中文版 Ollydbg 2.01 繁體中文版下載: Mega: https://mega.nz/#!I2Qy1aQD!-T5zO3PaANjBHU73I4NlkY8SHMxRptbBV8TpmeFt1fo GD: h...
-
C++ 程式語言基本教學---輸出變數 程式碼 這兩行不難看出只是輸出宣告的變數,雙引號內的為字串,沒有雙引號的是變數,其他就是運算符。 執行他 cout 輸出 endl換行 其他我就不多說了,可以自行往前...
-
防毒精簡殺毒解析 特徵碼殺毒 簡單來說,就是判斷指紋。 幾乎所有防毒公司都有應用,只是產生指紋的方式都不同。 但是一個防毒攜帶的特徵碼太多,會導致防毒的檔案資料過大,資源被消耗。 解決方法 : 移除所有特徵碼資料 ------------------...
沒有留言:
張貼留言