主题:反汇编问题
反编问题
#include <iostream>
int main()
{
}
0x4013e0 push ebp
0x4013e1 mov ebp,esp
0x4013e3 sub esp,0x8\\留8个字节的空间是main()的参数空间吗?
0x4013e6 and esp,0xfffffff0\\为什么要要进行这一步,问了许多人都说不明白???
0x4013e9 mov eax,0x0\\从这里
0x4013ee add eax,0xf
0x4013f1 add eax,0xf
0x4013f4 shr eax,0x4\\到这里都看不明白,原程序是空的,为什么进行这么多
无谓的操作;它是什么意思?
0x4013f7 shl eax,0x4\\这里也一样,不知道是什么意思?
0x4013fa mov DWORD PTR [ebp-4],eax\\??
0x4013fd mov eax,DWORD [ebp-4]\\???
0x401400 call 0x40cff0 <_alloca>
0x401405 call 0x40cc90 <_main>
0x40140a mov eax,0x0
0x40140f leave
0x401410 ret
同样,当我用vc6.0调试时,却时这样的,为什么是sub esp,40h
int main()
4: {
00401030 push ebp
00401031 mov ebp,esp
00401033 sub esp,40h
00401036 push ebx
00401037 push esi
00401038 push edi
00401039 lea edi,[ebp-40h]\\???
0040103C mov ecx,10h\\???
00401041 mov eax,0CCCCCCCCh\\???
00401046 rep stos dword ptr [edi]
5: return 0;
肯请给与详细答案,谢谢
#include <iostream>
int main()
{
}
0x4013e0 push ebp
0x4013e1 mov ebp,esp
0x4013e3 sub esp,0x8\\留8个字节的空间是main()的参数空间吗?
0x4013e6 and esp,0xfffffff0\\为什么要要进行这一步,问了许多人都说不明白???
0x4013e9 mov eax,0x0\\从这里
0x4013ee add eax,0xf
0x4013f1 add eax,0xf
0x4013f4 shr eax,0x4\\到这里都看不明白,原程序是空的,为什么进行这么多
无谓的操作;它是什么意思?
0x4013f7 shl eax,0x4\\这里也一样,不知道是什么意思?
0x4013fa mov DWORD PTR [ebp-4],eax\\??
0x4013fd mov eax,DWORD [ebp-4]\\???
0x401400 call 0x40cff0 <_alloca>
0x401405 call 0x40cc90 <_main>
0x40140a mov eax,0x0
0x40140f leave
0x401410 ret
同样,当我用vc6.0调试时,却时这样的,为什么是sub esp,40h
int main()
4: {
00401030 push ebp
00401031 mov ebp,esp
00401033 sub esp,40h
00401036 push ebx
00401037 push esi
00401038 push edi
00401039 lea edi,[ebp-40h]\\???
0040103C mov ecx,10h\\???
00401041 mov eax,0CCCCCCCCh\\???
00401046 rep stos dword ptr [edi]
5: return 0;
肯请给与详细答案,谢谢