看到指標,一堆人極大可能直接排斥,但是....
我用OD直接下去解釋,希望本篇文章能夠讓大家以最輕鬆的方式理解。
若要轉貼文章,請附加註明。(其他大神,請忽略此篇)
我們用OD開啟執行檔
依照之前的經驗,很快就能找到進入點。
mov esp+0x18, 0x1
依照經驗,直接判斷為 變數a
lea eax,esp+0x18
這行 可以分析成 把1的位址 放入eax上
也就是把0061FEA8放入eax 暫存器可以明顯看到。
mov esp+0x1C,eax
這行我們看圖去理解
0061FEA8 放入0061FEAC 堆疊內,很明顯的堆疊可以看出來。
lea eax,esp+0x18
lea 指令就是取得位址
把0061FEA8位址放入eax
堆疊也就顯示了eax的內容
mov esp+0x4,eax
可以看到堆疊內 0061FEA8放入0061FE94 讓他去顯示
然後你們可以看到下圖printf 輸出變數a的指標
mov eax,esp+0x1C
把0061FEAC裡面的東西放到eax暫存器內
mov eax,ds[eax]
這段程式碼很重要,eax原本為0061FEA8位址,ds的意義就是抽取eax位址裡面的值,放入eax他自己裡面,直接把原本的eax狀態給取代了。
從堆疊裡面可以看出來,簡單來說 eax的變化就是從0061FEA8變成數值1。
最後,輸出的結果為1
OD指標的分析到此結束。
看圖稍微理解就好了,不會難,希望各位都能夠藉由這篇小程式看懂指標的流程走向。
有著作權,請勿轉載。若要分享,請註明本篇來源。
訂閱:
張貼留言 (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換行 其他我就不多說了,可以自行往前...
-
防毒精簡殺毒解析 特徵碼殺毒 簡單來說,就是判斷指紋。 幾乎所有防毒公司都有應用,只是產生指紋的方式都不同。 但是一個防毒攜帶的特徵碼太多,會導致防毒的檔案資料過大,資源被消耗。 解決方法 : 移除所有特徵碼資料 ------------------...
沒有留言:
張貼留言