跟蹤eip和esp
阿新 • • 發佈:2019-01-06
本文為張銀奎老師《程式碼除錯》一書中關於的棧實驗,記錄下照貓畫虎的學習過程。
程式碼:
彙編如下:
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