首页
社区
课程
招聘
[求助]函数里只声明了一个局部变量 为啥 在反汇编时变成了第二个局部变量
发表于: 2013-1-8 00:11 4189

[求助]函数里只声明了一个局部变量 为啥 在反汇编时变成了第二个局部变量

2013-1-8 00:11
4189
void CTestaDlg::test()
{
int a=123;
}
00401D10 >|?  55            push    ebp
00401D11  |?  8BEC          mov     ebp, esp
00401D13  |?  83EC 48       sub     esp, 48
00401D16  |?  53            push    ebx
00401D17  |.  56            push    esi
00401D18  |?  57            push    edi
00401D19  |.  51            push    ecx
00401D1A  |.  8D7D B8       lea     edi, dword ptr [ebp-48]
00401D1D  |.  B9 12000000   mov     ecx, 12
00401D22  |?  B8 CCCCCCCC   mov     eax, CCCCCCCC
00401D27  |.  F3:AB         rep     stos dword ptr es:[edi]
00401D29  |.  59            pop     ecx
00401D2A  \.  894D FC       mov     dword ptr [ebp-4], ecx
00401D2D      C745 F8 7B000>[COLOR="Red"]mov     dword ptr [ebp-8], 7B [/COLOR]
00401D34      5F            pop     edi
00401D35      5E            pop     esi
00401D36 > .  5B            pop     ebx
00401D37   ?  8BE5          mov     esp, ebp
00401D39   ?  5D            pop     ebp
00401D3A   ?  C3            retn

我们EBP-4 不是第一个局部变量码
EBP-8 第二个局部变量  我明明只声明了一个 int a变量 并且赋值7B  为何变成赋值给第二个局部变量了
请问EBP-4 是什么变量哪里来的

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 29
活跃值: (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
sub     esp, 48
从这一句来看 开僻了12个局部变量的空间。(48/4=12)
2013-1-8 00:23
0
雪    币: 21
活跃值: (579)
能力值: ( LV9,RANK:330 )
在线值:
发帖
回帖
粉丝
3
也许是this指针
2013-1-8 00:33
0
雪    币: 28
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
一般c++一个类的函数调用是,会通过ecx传入this指针,而mov     dword ptr [ebp-4], ecx 把this指针保存到[ebp-4]里面了
2013-1-8 07:17
0
雪    币: 40
活跃值: (40)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
[QUOTE=superpdm;1132361]一般c++一个类的函数调用是,会通过ecx传入this指针,而mov     dword ptr [ebp-4], ecx 把this指针保存到[ebp-4]里面了[/QUOTE]

哦感谢哦感谢
2013-1-8 07:47
0
游客
登录 | 注册 方可回帖
返回