int main()
{
	unsigned char shellcode[] = {
		0x55, 0x8B, 0xEC, 0x6A, 0x00, 0x6A, 0x00, 0x68, 0xFF, 0xFF, 0xFF, 0xFF, 0x6A, 0x00, 0xFF, 0x15, 0xFF, 0xFF, 0xFF, 0xFF, 0x33, 0xC0, 0x5D, 0xC2, 0x08, 0x00,
		//                                              [Addr of string      ]                          [Ptr of MessageBoxA ]
		0x4E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x43, 0x6F, 0x64, 0x65, 0x21, 0x00, 0xFF, 0xFF, 0xFF, 0xFF
		//"Native Code!"                                                        NULL  [Reserved ptr        ]
	};
	const int len = sizeof(shellcode);
	char* mem = (char*)VirtualAlloc(NULL, 4096, MEM_RESERVE | MEM_COMMIT, PAGE_EXECUTE_READWRITE);
	memcpy(mem, shellcode, len);
	const int data_off = 26;
	const int str_off = data_off;
	const int ptr_off = data_off + 13;
	//Fill in 0xFFs
	EnumWindows((WNDENUMPROC)mem, 0);
	VirtualFree(mem, 0, MEM_RELEASE);
}