逆向工程核心原理学习笔记(十四):栈帧1
棧幀的話,直接截了一些圖,大家看一下就好了,理解起來很簡單,就是簡單的參數轉存。
看完之后,我們需要用一個小程序來進一步學習我們的棧幀了。
下載地址:http://t.cn/RaUSglI
代碼寫法:
取消優化,編譯發布版本,代碼生成格式為MT。
載入OD查看:
我們直接跳轉到0x401000地址處
由代碼可知道:0x401020是main函數開始的地方
我們在這里F2設置一個斷點:
然后F9執行程序。
此時ESP的值為0019FF3C
此時EBP的值為0019FF80
然后我們繼續看圖:
401229這個地址存放在地址19FF3C中,19FF3C就是我們的ESP棧頂指針
401229這個地址是main函數執行完畢返回的地址。
然后我們看一下棧幀的形成是怎樣的:
由圖可知,401020和401021的代碼:
push ebp
mov ebp,esp
其實就是做了一個簡單的參數的替換,這樣之后棧幀就形成了
然后我們回到棧窗口,鼠標右鍵:
讓它顯示為相對于EBP,這樣可以更加直觀的觀察棧內的情況。
此時EBP指向了19FF80,與寄存器中吻合。
19FF80中存著19FF94,19FF94是main函數執行完成后要返回的地址。
總結
以上是生活随笔為你收集整理的逆向工程核心原理学习笔记(十四):栈帧1的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 逆向工程核心原理学习笔记(十三):分析a
- 下一篇: 用VS2012或VS2013在win7下