Advertisement
Guest User

Untitled

a guest
Aug 31st, 2015
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.47 KB | None | 0 0
  1. VOID *Salta(BYTE *src, CONST BYTE *dst, CONST INT len)
  2. {
  3.     //BYTE *jmp = (BYTE *)malloc(len + 5);
  4.     //BYTE *jmp = (BYTE *)VirtualAlloc(0, len + 5, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
  5.     /*
  6.     BYTE *jmp = new BYTE[len + 5];
  7.     std::cout << "New jmp start : " << std::hex << static_cast<void*>(jmp) << std::endl;
  8.     DWORD dwback;
  9.     VirtualProtect(src, len, PAGE_READWRITE, &dwback);
  10.     memcpy(jmp, src, len);
  11.     jmp += len;
  12.     jmp[0] = 0xE9;
  13.     *(DWORD *)(jmp + 1) = (DWORD)(src + len - jmp) - 5;
  14.     src[0] = 0xE9;
  15.     *(DWORD *)(src + 1) = (DWORD)(dst - src) - 5;
  16.     for(INT i = 5; i < len; i++) src[i] = 0x90;
  17.     VirtualProtect(src, len, dwback, &dwback);
  18.     */
  19.  
  20.     BYTE *detour = (BYTE *)VirtualAlloc(0, len + 10, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
  21.  
  22.     DWORD dwback;
  23.     VirtualProtect(src, len, PAGE_READWRITE, &dwback);
  24.  
  25.     memcpy(detour, src, len);
  26.  
  27.     src[0] = 0xE9;
  28.     *(DWORD *)(src+1) = (DWORD)(detour - src) - 5; //Jmp from EndScene to detour
  29.  
  30.     VirtualProtect(src, len, dwback, &dwback);
  31.  
  32.     detour += len;
  33.  
  34.     detour[0] = 0xE9;
  35.     *(DWORD *)(detour+1) = (DWORD)(dst - detour) - 5; //Jmp to hkEndScene
  36.  
  37.     detour += 5;
  38.  
  39.     detour[0] = 0xE9;
  40.     *(DWORD *)(detour + 1) = (DWORD)(src + len); //Jmp to EndScene + 5
  41.  
  42.     std::cout << "src : " << std::hex << static_cast<void*>(src) << std::endl;
  43.     std::cout << "detour : " << std::hex << static_cast<void*>(detour) << std::endl;
  44.     std::cout << "new : " << std::hex << static_cast<void*>(src + 5) << std::endl;
  45.  
  46.  
  47.     return(src + 5);
  48. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement