Benvenuto! Per postare e godere delle funzionalità del forum registrati, occorrono pochi secondi ed è gratis!

Detours

maurow
Messaggi: 6,041
Discussioni: 2,066
Registrato: 03-2011
Mix: 8,107
DWORD E9Detours( DWORD SrcVA, DWORD DstVA, DWORD Size )
{
DWORD DetourVA, dwProtect, i;

#define SIZEOF_JMP_REL 5

if ( SrcVA && DstVA && Size >= SIZEOF_JMP_REL )
{
DetourVA = (DWORD) VirtualAlloc(
NULL, Size + SIZEOF_JMP_REL,
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 ) = 0xE9;
*(DWORD*)( DetourVA + Size + 1 ) = ( SrcVA - DetourVA - SIZEOF_JMP_REL );

*(BYTE*)( SrcVA + 0 ) = 0xE9;
*(DWORD*)( SrcVA + 1 ) = ( DstVA - SrcVA - SIZEOF_JMP_REL );

VirtualProtect( (VOID*)SrcVA, Size, dwProtect, &dwProtect );

VirtualProtect( (VOID*)DetourVA, Size +
SIZEOF_JMP_REL, PAGE_EXECUTE_READ, &dwProtect );

return DetourVA;
}
}
return (0);
}

crediti : ExoduS


La libertà non si insegna, è una scelta individuale.
25/12/2012, 22:36
#1
Cerca

1 Life, 1 Avatar &lt;3
Messaggi: 9,074
Discussioni: 271
Registrato: 08-2011
Mix: 0
Fantastico!Sti qui sono dei geni a postarli, cosi funzioneranno ancora per circa 2 minuti

25/12/2012, 23:56
#2
Cerca
(Questo messaggio è stato modificato l'ultima volta il: 26/12/2012, 1:11 da digger.)

Il criceto mannaro
Messaggi: 3,536
Discussioni: 201
Registrato: 03-2011
Mix: 3,737
pocciox non si pone il problema, questo è il modo piu elementare di creare un detour e senza un bypass viene detectato nel giro di una manciata di secondi Wink


digger
26/12/2012, 1:10
#3
Cerca

1 Life, 1 Avatar &lt;3
Messaggi: 9,074
Discussioni: 271
Registrato: 08-2011
Mix: 0
Beh digger, io ci ho provato a fare il pro D:

26/12/2012, 19:33
#4
Cerca

Il criceto mannaro
Messaggi: 3,536
Discussioni: 201
Registrato: 03-2011
Mix: 3,737
no problem Wink


digger
26/12/2012, 19:36
#5
Cerca




Utenti che stanno guardando questa discussione: 1 Ospite(i)