已经设置了启用安全检查(/GS),不知道为什么没有__security_cookie,求助,非常感谢!
代码:
#include "stdafx.h"
void f()
{
char i = 0;
char a[20];
a[0] = 0;
}
int _tmain(int argc, _TCHAR* argv[])
{
f();
return 0;
}
反汇编代码:
void f()
{
012C3C30 push ebp
012C3C31 mov ebp,esp
012C3C33 sub esp,0F4h
012C3C39 push ebx
012C3C3A push esi
012C3C3B push edi
012C3C3C lea edi,[ebp-0F4h]
012C3C42 mov ecx,3Dh
012C3C47 mov eax,0CCCCCCCCh
012C3C4C rep stos dword ptr es:[edi]
char i = 0;
012C3C4E mov byte ptr [i],0
char a[20];
a[0] = 0;
012C3C52 mov eax,1
012C3C57 imul ecx,eax,0
012C3C5A mov dword ptr [ebp-0F0h],ecx
012C3C60 cmp dword ptr [ebp-0F0h],14h
012C3C67 jae f+3Bh (012C3C6Bh)
012C3C69 jmp f+40h (012C3C70h)
012C3C6B call ___report_rangecheckfailure (012C1168h)
012C3C70 mov edx,dword ptr [ebp-0F0h]
012C3C76 mov byte ptr a[edx],0
}
012C3C7B push edx
012C3C7C mov ecx,ebp
}
012C3C7E push eax
012C3C7F lea edx,ds:[12C3CA0h]
012C3C85 call @_RTC_CheckStackVars@8 (012C108Ch)
012C3C8A pop eax
012C3C8B pop edx
012C3C8C pop edi
012C3C8D pop esi
012C3C8E pop ebx
012C3C8F add esp,0F4h
012C3C95 cmp ebp,esp
012C3C97 call __RTC_CheckEsp (012C1145h)
012C3C9C mov esp,ebp
012C3C9E pop ebp
012C3C9F ret
012C3CA0 add dword ptr [eax],eax
012C3CA2 add byte ptr [eax],al
012C3CA4 test al,3Ch
012C3CA6 sub al,1
012C3CA8 fdiv st(7),st
012C3CAA ?? ??
012C3CAB call dword ptr [eax+eax]
012C3CAE add byte ptr [eax],al
012C3CB0 mov ah,3Ch
012C3CB2 sub al,1
012C3CB4 popad
012C3CB5 add ah,cl