Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <windows.h>
- #include <stdio.h>
- #define SIZE 0x100
- void print_mem(BYTE *mem)
- {
- int i;
- for (i=0; i<SIZE; i++)
- printf("%02x ", mem[i]);
- printf("\n");
- }
- int main(int argc, char *argv[])
- {
- BYTE *mem;
- int i;
- mem = VirtualAlloc(NULL, SIZE, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
- printf("Allocated memory at %08x...\n", mem);
- for (i=0; i<SIZE; i++)
- mem[i] = '\xff';
- __try {
- mem[30] = 0x31; // xor eax, eax
- mem[31] = 0xc0;
- mem[32] = 0xbf; // mov edi, mem
- *((DWORD*)&mem[33]) = (DWORD)mem;
- mem[37] = 0xb9; // mov ecx, SIZE
- *((DWORD*)&mem[38]) = SIZE;
- mem[42] = 0xf3; // rep stosd
- mem[43] = 0xaa;
- printf("Shellcode written...\n");
- __asm {
- mov eax, mem
- add eax, 30
- jmp eax
- }
- } __except(1) {
- printf("\nCrash.\n");
- print_mem(mem);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement