PDA

View Full Version : [Source Code]UNDETECTED DETOURZ, ZOMGZ! FO REALZ?



Dxt-Code[V]
09-21-2011, 10:08 PM
yes... for realz...



void CTools::DetourFunction( BYTE* pbTarget, DWORD dwNewFunction, SIZE_T dwSize )
{
DWORD dwOldProtection = NULL;
SIZE_T iRequiredSize = 7;

VirtualProtect( pbTarget, dwSize, PAGE_READWRITE, &dwOldProtection );

*reinterpret_cast< BYTE* >( pbTarget ) = 0xB8; // asm: mov eax,
*reinterpret_cast< DWORD* >( pbTarget + 1 ) = dwNewFunction; // asm: 0x12345678;
*reinterpret_cast< BYTE* >( pbTarget + 5 ) = 0xFF; // asm: jmp
*reinterpret_cast< BYTE* >( pbTarget + 6 ) = 0xE0; // asm: eax;

for( int i = iRequiredSize; i < dwSize; i++ )
*reinterpret_cast< BYTE* >( pbTarget + i ) = 0x90; // asm: nop

VirtualProtect( pbTarget, dwSize, dwOldProtection, NULL );
}


Some more...


SIZE_T iRequiredSize = 7;

*reinterpret_cast< BYTE* >( pbTarget ) = 0xB8; // asm: mov eax,
*reinterpret_cast< DWORD* >( pbTarget + 1 ) = dwNewFunction; // asm: 0x12345678;
*reinterpret_cast< BYTE* >( pbTarget + 5 ) = 0x50; // asm: push eax;
*reinterpret_cast< BYTE* >( pbTarget + 6 ) = 0xC3; // asm: retn;


and some moooarrrrr... this one's detected i think... depends on game.



SIZE_T iRequiredSize = 6;

*reinterpret_cast< BYTE* >( pbTarget ) = 0x68; // asm: push
*reinterpret_cast< DWORD* >( pbTarget + 1 ) = dwNewFunction; // asm: 0x12345678;
*reinterpret_cast< BYTE* >( pbTarget + 5 ) = 0xC3; // asm: retn;


This is pretty... basic if you get the concept... :\

Blood
09-21-2011, 10:12 PM
nice work codeV

tengchaowong
09-22-2011, 12:02 AM
nice work :D

Gravy
09-22-2011, 04:30 PM
If I turn this in, do I get my 500ZP???

Dxt-Code[V]
09-22-2011, 04:31 PM
No, you get 5,000 ZP.