3: int add(int a, int b)
4: {
00401010 push ebp
00401011 mov ebp,esp
00401013 sub esp,40h
00401016 push ebx
00401017 push esi
00401018 push edi
00401019 lea edi,[ebp-40h]
0040101C mov ecx,10h
00401021 mov eax,0CCCCCCCCh
00401026 rep stos dword ptr [edi]
5: return a+b;
00401028 mov eax,dword ptr [ebp+8]
0040102B add eax,dword ptr [ebp+0Ch]
6: }
0040102E pop edi
0040102F pop esi
00401030 pop ebx
00401031 mov esp,ebp
00401033 pop ebp
00401034 ret
8: void main()
9: {
0040D6F0 push ebp
0040D6F1 mov ebp,esp
0040D6F3 sub esp,40h
0040D6F6 push ebx
0040D6F7 push esi
0040D6F8 push edi
0040D6F9 lea edi,[ebp-40h]
0040D6FC mov ecx,10h
0040D701 mov eax,0CCCCCCCCh
0040D706 rep stos dword ptr [edi]
10: add(1, 2);
0040D708 push 2
0040D70A push 1
0040D70C call @ILT+5(add) (0040100a)
0040D711 add esp,8
11: }
0040D714 pop edi
0040D715 pop esi
0040D716 pop ebx
0040D717 add esp,40h
0040D71A cmp ebp,esp
0040D71C call __chkesp (004010e0)
0040D721 mov esp,ebp
0040D723 pop ebp
0040D724 ret
哪位大虾能解释一下,
为什么每个函数前面都有这么一段?
0040D6F0 push ebp
0040D6F1 mov ebp,esp
0040D6F3 sub esp,40h
0040D6F6 push ebx
0040D6F7 push esi
0040D6F8 push edi
0040D6F9 lea edi,[ebp-40h]
0040D6FC mov ecx,10h
0040D701 mov eax,0CCCCCCCCh
0040D706 rep stos dword ptr [edi]
尤其是
0040D6F3 sub esp,40h
和
0040D6F9 lea edi,[ebp-40h]
0040D6FC mov ecx,10h
0040D701 mov eax,0CCCCCCCCh
0040D706 rep stos dword ptr [edi]
有什么作用呢?觉得没什么用啊.
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)