首頁
社區(qū)
課程
招聘
有關(guān)局部變更返值的問題

提問者:suaqer 2020-3-2

 

想請問一下就是在課程中代碼段里面:

1
2
3
4
5
6
   0x8048401  <test+11>        add        eax,  0x1bff
    0x8048406  <test+16>        mov        edx,  dword  ptr  [ebp  +  8]
    0x8048409  <test+19>        mov        eax,  dword  ptr  [ebp  +  0xc]
    0x804840c  <test+22>        add        eax,  edx
    0x804840e  <test+24>        mov        dword  ptr  [ebp  -  4],  eax
0x8048411  <test+27>        mov        eax,  dword  ptr  [ebp  -  4]

mov dword ptr [ebp - 4], eax 這里不是剛把eax的值寫入到ebp - 4么,為什么下一步還要mov eax, dword ptr [ebp - 4],再將ebp - 4中的值返回給eax呢,eax中不已經(jīng)是3了嗎?辛苦啦

收藏
2條回答
Roger 2023-5-23

這個問題問得好,首先eax里面存放的是計算出來的一個值,把他放到ebp-4的意思是存放到局部變量中,再從局部變量中取出來放回eax,這兩步是編譯器寫出來的,編譯器不會像人類大腦那樣智能,可能會有一些重復(fù)性的操作,具體你可以找一本編譯原理的書來看看

回復(fù) 已采納
Roger 2023-5-23

而且,您仔細(xì)看這個語句,我們做一個假設(shè),假如eax里面存放的是一個字符串的地址,那么ebp-4里面存放的就是eax這個地址所對應(yīng)的字符串內(nèi)容,然后再把字符串內(nèi)容的前四個字節(jié)放回到eax中,經(jīng)過這兩步,eax里面存放的數(shù)據(jù)變化為:地址→地址所對應(yīng)的內(nèi)容

回復(fù)
零基礎(chǔ)入門pwn
  參與學(xué)習(xí)     1798 人
  提問次數(shù)     36 個
《零基礎(chǔ)入門pwn》,短時間內(nèi)踏入漏洞利用的大門,快速成為一名合格的pwn題選手
0
我的提問
0
我的回答
0
學(xué)習(xí)收益