Compréhension d'un bout de code

albert0 Messages postés 249 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 9 août 2008 - 17 sept. 2005 à 23:30
albert0 Messages postés 249 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 9 août 2008 - 18 sept. 2005 à 10:49
Bonsoir,





voila, j'essai de comprendre a quoi sert une fonction..... sans succes!



voila la fonction:





void *DetourFunc( BYTE *src, const BYTE *dst, const int len )

{

BYTE *jmp = ( BYTE* )malloc( len + 5 );

DWORD dwback;



VirtualProtect( src, len, PAGE_READWRITE, &dwback );



memcpy( jmp, src, len );

jmp += len;



jmp[0] = 0xE9;

*( DWORD* )( jmp + 1) = ( DWORD )( src + len - jmp ) - 5;



src[0] = 0xE9;

*( DWORD* )( src + 1 ) = ( DWORD )( dst - src ) - 5;



VirtualProtect( src, len, dwback, &dwback );



return( jmp - len );

}



la fonction est appelé comme cela:



oDirect3DCreate9 = ( tDirect3DCreate9 )DetourFunc( ( BYTE*
)GetProcAddress( LoadLibrary( "d3d9.dll" ), "Direct3DCreate9" ), (
BYTE* )hkDirect3DCreate9, 5 );



si quelqu'un pouvais me donne run ptit coup de main





d'avance merci

6 réponses

cs_Arnotic Messages postés 933 Date d'inscription dimanche 1 avril 2001 Statut Membre Dernière intervention 9 janvier 2012
18 sept. 2005 à 00:42
Elle permet de faire de l'API Hooking (voir mes sources, j'utilise cette méthode). Elle permet de faire un jump dans une fonction pour sauter vers la tienne. Par exemple remplacer la msgbox de Windows par la tienne.

@+
Arnotic,
Admin CS,
Développeur chez Néos SDI,
MVP Visual C++
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
18 sept. 2005 à 00:43
Devrait servir à "détourner" la fonction en écrivant:
JMP adresse
sur les 5 premiers octets de la fonction.

ciao...
BruNews, MVP VC++
0
albert0 Messages postés 249 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 9 août 2008
18 sept. 2005 à 10:15
ha ouais d'accord.



je comprend mieu, en lisant ton source Arnotic





merci à vous deux
0
albert0 Messages postés 249 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 9 août 2008
18 sept. 2005 à 10:17
Mince y'a pas de "Edit", mais pourquoi "0xe9??"
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
18 sept. 2005 à 10:20
0xE9 (comme dit plus haut) correspond a la valeur hexadecimale de l'instruction JMP (ASM).

+2(p - n)
0
albert0 Messages postés 249 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 9 août 2008
18 sept. 2005 à 10:49
ah mais oui, evidement





ba merci beacoup :)
0
Rejoignez-nous