EBP與ESP定址

來源:互聯網
上載者:User

void Add(int i,int b)<br />{<br />i=i+b;<br />}<br />void main()<br />{</p><p>int i=1,b=2,c=3,d=4,g=5;<br />Add(i,b);<br />i=g;<br />}

EBP被ESP賦予了棧地址後就可以用

EBP-XXX方式去訪問棧中資料,

而ESP則在為局部變數與函數參數忙碌著..所以他的值是不斷變化的

而用ESP進行定址的規則則是

當前ESP地址+push個數*4+SUB減去的大小=此時的ESP應該與EBP相等

 

所以的話此時再用ESP得到的值-要訪問元素所在位置*4就可以得到正確的地址值

mov eax,dword ptr ss:[ esp+4c]  ESP+4c 與mov dword ptr ss:[ebp-14].相同

並且驗證了一點,上面有個CALL調用部分,但是在執行到

mov eax,dword ptr ss:[ esp+4c]的時候堆棧已經平衡,並不會影響其對 ebp-14的定址

 

由此證明一點,

 

在被調用函數中是可以訪問調用函數中的局部變數的...

下面是調用函數中五個局部變數的地址及其值

 

0012FF6C  00000005

0012FF70  00000004

0012FF74  00000003

0012FF78  00000002

0012FF7C  00000001

 

不過他們的計算出來的公式稍微麻煩點..祈禱以後別有這樣的加殼軟體出現,若真這樣光計算資料來源就得累死人的不行

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.