1. 程式人生 > >跟蹤eip和esp

跟蹤eip和esp

本文為張銀奎老師《程式碼除錯》一書中關於的棧實驗,記錄下照貓畫虎的學習過程。

程式碼:

彙編如下:

bp a!main 設定斷點    g執行到這個斷點

0:000> r eip,esp
eip=00401020 esp=0013ff84

0:000> dd esp l1
0013ff84  00401115

p單步執行一次

0:000> r eip,esp
eip=00401022 esp=0013ff80

esp中壓入一個int所需空間,向下減去4

t進入函式

0:000> r eip,esp
eip=00401000 esp=0013ff7c

esp又減去4個位元組,壓入了函式的返回後的地址  可以用dd esp l1顯示返回地址的內容

0:000> dd esp l1
0013ff7c  00401027

游標定位到ret 4一行,ctrl+F10執行到這一行,觀察eip和esp

0:000> r eip,esp
eip=0040101a esp=0013ff7c

esp內容和剛進入函式時一樣,棧保持平衡。

p單步執行,到達c3 ret

0:000> r eip,esp
eip=00401027 esp=0013ff84

esp增加了8,和剛進入main時一樣,引數被被呼叫函式func清理。

0:000> dd esp l1
0013ff84  00401115