begin process at 2012 05 28 19:14:30
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

compréhension d'un bout de code


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

compréhension d'un bout de code

samedi 17 septembre 2005 à 23:30:46 | compréhension d'un bout de code

albert0

Membre Club
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

dimanche 18 septembre 2005 à 00:42:58 | Re : compréhension d'un bout de code

Arnotic

Administrateur CodeS-SourceS
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++
dimanche 18 septembre 2005 à 00:43:34 | Re : compréhension d'un bout de code

BruNews

Administrateur CodeS-SourceS
Devrait servir à "détourner" la fonction en écrivant:
JMP adresse
sur les 5 premiers octets de la fonction.

ciao...
BruNews, MVP VC++
dimanche 18 septembre 2005 à 10:15:56 | Re : compréhension d'un bout de code

albert0

Membre Club
ha ouais d'accord.

je comprend mieu, en lisant ton source Arnotic


merci à vous deux

dimanche 18 septembre 2005 à 10:17:29 | Re : compréhension d'un bout de code

albert0

Membre Club
Mince y'a pas de "Edit", mais pourquoi "0xe9??"
dimanche 18 septembre 2005 à 10:20:43 | Re : compréhension d'un bout de code

AlexMAN

Membre Club
0xE9 (comme dit plus haut) correspond a la valeur hexadecimale de l'instruction JMP (ASM).

+2(p - n)
dimanche 18 septembre 2005 à 10:49:40 | Re : compréhension d'un bout de code

albert0

Membre Club
ah mais oui, evidement


ba merci beacoup :)



Cette discussion est classée dans : byte, dword, src, len, jmp


Répondre à ce message

Sujets en rapport avec ce message

DnsQuery, hook et detours [ par wxccxw ] Bonjour, j'ai ecrit une dll que j'injecte dans IE ou firefox pour savoir l'host qu'il demande a charger afin de filtrer. voici donc le code [code=cp HOOK PROBLEME DLL [ par wxccxw ] hello, je vais une dll de hook et j'obtient sa :MON CODE :#include FARPROC fpRegQueryValueEx; // Buffer de l'adresse de la fonctionFARPROC fpRegOpenKe REG_DWORD [ par Xentor609 ] Lorsque je recupere la valeur d'une clé avec RegEnumValue,celle-ci doit etre stockée dans un BYTE. Quand le type de la valeur recupérée est un REG_SZ, AutoSuppression et .bat [ par phantom_2005 ] Bonjour,j'ai un problème de suppression de répertoire dans un fichier .bat.Je créée dans mon appli un fichier .bat d'autodestruction que j'appelle ava WORD, DWORD et BYTE en langage C ? [ par Cako19 ] Bonjour,Les types de données WORD, DWORD et BYTE sont-ils utilisables en langage C ?Ca refuse de compiler chez moi. Ils ne sont pas reconnus.Faut-il i Ajout d'une ressource partagée [ par sam2004 ] Bonjout tous,mon pb est le suivant : j'ai suivit toutes les etapes necessaire afin de mettre en marche un programme qui permettre l'ajout d'un part determination de permission associé a unpartage [ par sam2004 ] Bonjour tous, pour enummerer le partage sur un hôte vous utilisez la fonction NetShareEnum de la librairie netapi32.dll et pour avoir plus information RegSetValueEX > REG_DWORD [ par Roudy ] salut j'aimerais ecrire le chiffre 10 dans mon REG_DWORD mais il me le converti toujours en A et je ne my connait pas vraiement dans les types variabl CRC32 qui ne correspond pas [ par CyberP ] J'ai testé ce code que j'ai trouvé sur le net :const DWORD crc32_table[] = { 0UL, 16777216UL, 33554432UL, 50331648UL, 67108864UL, 83886080UL, 10066329 Conversion struct en char* [ par lastpixl ] Comment convertir une structure en char* ? C-à-d en fait comment avoir dans un char* le contenu de la struct, comme si on lisait un fichier dans leque


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,246 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales