首页
社区
课程
招聘
[旧帖] [求助]关于栈空间初始化的疑问 0.00雪花
发表于: 2009-9-19 17:29 1303

[旧帖] [求助]关于栈空间初始化的疑问 0.00雪花

2009-9-19 17:29
1303
本人极度菜鸟,烦请各位帮我看看:

 
  int main()
  {
  int a=2,
  b=4;
  float c=2.0f;
  bool v=1;
  char x=2;
  return 0;
  }


A.在下面的汇编代码中,第3行分配了54h字节的栈空间,然后依次压入ebx、esi、edi三个寄存器值,使用了12h个字节,剩余的54h-12h=42h字节栈空间是否应该初始化?
第8行为什么用的是15h呢?
B.压了三次栈后,参数a的地址是否应该为ebp-c ?

相应的汇编代码为:
 
 1  00401030  /> \55                push    ebp                    
 2  00401031  |.  8BEC             mov     ebp, esp
 3  00401033  |.  83EC 54         sub     esp, 54
 4  00401036  |.  53                 push    ebx
 5  00401037  |.  56                 push    esi
 6  00401038  |.  57                 push    edi
 7  00401039  |.  8D7D AC         lea     edi, dword ptr [ebp-54]
 8  0040103C  |.  B9 15000000   mov     ecx, 15
 9  00401041  |.  B8 CCCCCCCC  mov     eax, CCCCCCCC
10 00401046  |.  F3:AB             rep     stos dword ptr es:[edi]
11 00401048  |.  C745 FC 02000>mov     dword ptr [ebp-4], 2        ; a=2
12 0040104F  |.  C745 F8 04000>mov     dword ptr [ebp-8], 4        ;b=4;
13 00401056  |.  C745 F4 00000>mov     dword ptr [ebp-C], 40000000 ;c=2.0f;
14 0040105D  |.  C645 F0 01    mov     byte ptr [ebp-10], 1        ;v=1;
15 00401061  |.  C645 EC 02    mov     byte ptr [ebp-14], 2        ;x=2;
16 00401065  |.  33C0          xor     eax, eax                   ;return	0;
17 00401067  |.  5F            pop     edi
18 00401068  |.  5E            pop     esi
19 00401069  |.  5B            pop     ebx
20 0040106A  |.  8BE5          mov     esp, ebp
21 0040106C  |.  5D            pop     ebp
22 0040106D  \.  C3            retn

[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 72
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
不懂,不好意思。
2009-9-19 18:10
0
雪    币: 370
活跃值: (52)
能力值: ( LV13,RANK:350 )
在线值:
发帖
回帖
粉丝
3
压入ebx、esi、edi三个寄存器值,使用了12h个字节,
这个不是在54h字节这个空间,看这句:sub     esp, 54
54h-12h=42h字节栈空间是否应该初始化?
mov     eax, CCCCCCCC eax是4byte 4*15h=54h
参数a的地址是否应该为ebp-c
mov     ebp, esp 压三个ebp没变
学好汇编了 另外你#include后面怎么什么都没呢?
2009-9-19 18:16
0
雪    币: 37
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
谢谢你!

三个push之后ebp是没有变,但是[ebp] 、[ebp-4] 、[ebp-8]里不是分别存放原来的ebx、esi、edi吗?
2009-9-19 18:59
0
雪    币: 37
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
唉,强烈请求删除此贴,我真是脑子进水了,这么简单的问题都没想明白
2009-9-19 20:07
0
游客
登录 | 注册 方可回帖
返回
//