看到指標,一堆人極大可能直接排斥,但是....
我用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...
-
這篇是利用BigDecimal的模組,幫我們做加減乘除,四則運算。 (其他大神,請略過) 原始碼 建立bigdecimal物件,把字串帶入到建構子。 建立同樣的物件,也同樣把字串帶入到建構子。 可建立多個同樣物件,互不影響。 b.add(b2),把b跟...
-
C++ 程式語言基本教學---switch 程式碼 這邊有個新的關鍵字 "switch" ,將來在寫大型程式的時候會使用到 switch裡面還有一個關鍵字 "case" 在選擇的時候,是程式碼切換的時候判斷符...
-
Ollydbg 繁體中文 7/11更新 小編把Ollydbg裡面一些煩人的功能給拿掉了,亂碼的東西也拿掉了。 其他的功能還留著。 GD下載點: https://drive.google.com/open?id=1_IpEFkoQQyiLlvC_O7gIrBo...
沒有留言:
張貼留言