turntablx a écrit :
ah ouai on peu modifier un exe comme ca? ya pas besoin d'utiliser un librerie spéciale ou utiliser des api windows? c'est plutot sympa si c aussi rapide
|
Un exécutable est, comme tout fichier, une suite structurée de bits. A partir du moment où on sait comment est construite la structure, il est très facile de la modifier, que ce soit un .exe ou un .bmp.
Dans le cas d'un exécutable, la structure contient le code (C, basic, pascal, etc.) traduit en assembleur (c'est à dire compilé). Ces instructions assembleur possèdent une valeur codée sur 1 ou plusieurs octets et en modifiant ces octets, on peut facilement modifier le fonctionnement d'un programme.
Exemple (toutes les valeurs sont en hexadécimal) :
Code :
- strncpy(Path, lpszArgument, MAX_PATH);
|
pourra être compilé de cette façon :
PUSH 104 ; /maxlen = 104 (260.)
PUSH DWORD PTR [EBP+10] ; |src
PUSH EBX ; |dest
CALL 00401CF0 ; \strncpy
|
et codé dans le fichier sous cette forme :
68 04 01 00 00 FF 75 10 53 E8 8E 08 00 00
|
En modifiant ces opcodes, on peut donc modifier le programme. Et pour savoir où modifier, il faut parcourir la structure du fichier, comme pour n'importe quel autre type de fichier.