逆向工程核心原理学习笔记(十四):栈帧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下
