Advertisement
Guest User

Untitled

a guest
Jun 26th, 2017
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.97 KB | None | 0 0
  1. DWORD Detourasdasd( DWORD SrcVA, DWORD DstVA, DWORD Size )
  2. {
  3. DWORD DetourVA, dwProtect, i;
  4.  
  5. #define SIZEOF_MOVEAX_JMPEAX 7
  6.  
  7. if ( SrcVA && DstVA && Size >= SIZEOF_MOVEAX_JMPEAX )
  8. {
  9. DetourVA = (DWORD) VirtualAlloc(
  10. NULL, Size + SIZEOF_MOVEAX_JMPEAX,
  11. MEM_COMMIT, PAGE_EXECUTE_READWRITE );
  12.  
  13. if ( DetourVA && VirtualProtect( (VOID*)SrcVA, Size, PAGE_EXECUTE_READWRITE, &dwProtect ) )
  14. {
  15. for ( i=0; i < Size; i++ ) {
  16. *(BYTE*)( DetourVA + i ) = *(BYTE*)( SrcVA + i );
  17. }
  18.  
  19. *(BYTE*)( DetourVA + Size + 0 ) = 0xB8;
  20. *(DWORD*)( DetourVA + Size + 1 ) = ( SrcVA + Size );
  21. *(WORD*)( DetourVA + Size + 5 ) = 0xE0FF;
  22.  
  23. *(BYTE*)( SrcVA + 0 ) = 0xB8;
  24. *(DWORD*)( SrcVA + 1 ) = ( DstVA );
  25. *(WORD*)( SrcVA + 5 ) = 0xE0FF;
  26.  
  27. VirtualProtect( (VOID*)SrcVA, Size, dwProtect, &dwProtect );
  28.  
  29. VirtualProtect( (VOID*)DetourVA, Size +
  30. SIZEOF_MOVEAX_JMPEAX, PAGE_EXECUTE_READ, &dwProtect );
  31.  
  32. return DetourVA;
  33. }
  34. }
  35. return (0);
  36. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement