在学习menting的“程序逆向技术之二变量和常量”时,其中出现
//-------------------------------------------
int intbuf1=1,intbuf2=2;
int intbuf3=3;
int intbuf4=4;
//-------------------------------------------
反汇编后得到代码如下:
//-------------------------------------------
0040135F /$ 55 push ebp
00401360 |. 8BEC mov ebp, esp
00401362 |. 83EC 10 sub esp, 10
00401365 |. C745 F8 01000>mov dword ptr [ebp-
8], 1
0040136C |. C745 FC 02000>mov dword ptr [ebp-
4], 2
00401373 |. C745 F0 03000>mov dword ptr [ebp-
10], 3
0040137A |. C745 F4 04000>mov dword ptr [ebp-
C], 4
00401381 |. 8BE5 mov esp, ebp
00401383 |. 5D pop ebp
00401384 \. C3 retn
//-------------------------------------------
而我自己编写时该成如下:
main()
{
int buf1=1,buf2=2;
int buf3=3;
int buf4=4;
}
得到的反汇编代码确实这样的:
.text:00401000 push ebp
.text:00401001 mov ebp, esp
.text:00401003 sub esp, 10h
.text:00401006 mov [ebp+var_
4], 1
.text:0040100D mov [ebp+var_
8], 2
.text:00401014 mov [ebp+var_
C], 3
.text:0040101B mov [ebp+var_
10], 4
.text:00401022 mov esp, ebp
.text:00401024 pop ebp
我现在就是不明白编译器是如何解释这些变量的呢?
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!