Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- DWORD Detourasdasd( DWORD SrcVA, DWORD DstVA, DWORD Size )
- {
- DWORD DetourVA, dwProtect, i;
- #define SIZEOF_MOVEAX_JMPEAX 7
- if ( SrcVA && DstVA && Size >= SIZEOF_MOVEAX_JMPEAX )
- {
- DetourVA = (DWORD) VirtualAlloc(
- NULL, Size + SIZEOF_MOVEAX_JMPEAX,
- MEM_COMMIT, PAGE_EXECUTE_READWRITE );
- if ( DetourVA && VirtualProtect( (VOID*)SrcVA, Size, PAGE_EXECUTE_READWRITE, &dwProtect ) )
- {
- for ( i=0; i < Size; i++ ) {
- *(BYTE*)( DetourVA + i ) = *(BYTE*)( SrcVA + i );
- }
- *(BYTE*)( DetourVA + Size + 0 ) = 0xB8;
- *(DWORD*)( DetourVA + Size + 1 ) = ( SrcVA + Size );
- *(WORD*)( DetourVA + Size + 5 ) = 0xE0FF;
- *(BYTE*)( SrcVA + 0 ) = 0xB8;
- *(DWORD*)( SrcVA + 1 ) = ( DstVA );
- *(WORD*)( SrcVA + 5 ) = 0xE0FF;
- VirtualProtect( (VOID*)SrcVA, Size, dwProtect, &dwProtect );
- VirtualProtect( (VOID*)DetourVA, Size +
- SIZEOF_MOVEAX_JMPEAX, PAGE_EXECUTE_READ, &dwProtect );
- return DetourVA;
- }
- }
- return (0);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement