Advertisement
Guest User

Untitled

a guest
Jun 27th, 2017
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.84 KB | None | 0 0
  1. #include <windows.h>
  2. #include <stdio.h>
  3.  
  4. #define SIZE 0x100
  5.  
  6. void print_mem(BYTE *mem)
  7. {
  8.     int i;
  9.     for (i=0; i<SIZE; i++)
  10.         printf("%02x ", mem[i]);
  11.     printf("\n");
  12. }
  13.  
  14.  
  15. int main(int argc, char *argv[])
  16. {
  17.     BYTE *mem;
  18.     int i;
  19.  
  20.     mem = VirtualAlloc(NULL, SIZE, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
  21.     printf("Allocated memory at %08x...\n", mem);
  22.  
  23.     for (i=0; i<SIZE; i++)
  24.         mem[i] = '\xff';
  25.  
  26.     __try {
  27.         mem[30] = 0x31; // xor eax, eax
  28.         mem[31] = 0xc0;
  29.  
  30.         mem[32] = 0xbf; // mov edi, mem
  31.         *((DWORD*)&mem[33]) = (DWORD)mem;
  32.  
  33.         mem[37] = 0xb9; // mov ecx, SIZE
  34.         *((DWORD*)&mem[38]) = SIZE;
  35.  
  36.         mem[42] = 0xf3; // rep stosd
  37.         mem[43] = 0xaa;
  38.  
  39.         printf("Shellcode written...\n");
  40.  
  41.         __asm {
  42.             mov eax, mem
  43.             add eax, 30
  44.             jmp eax
  45.         }
  46.        
  47.     } __except(1) {
  48.         printf("\nCrash.\n");
  49.         print_mem(mem);
  50.     }
  51.  
  52.     return 0;
  53. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement