Page 1 sur 1

PE et bidouillage

MessagePosté: 11 Juin 2006, 11:10
par EntraX666
Bonjour,

Je savais pas trop ou placer ce message donc comme informatique c'est vague ça devrait convenir.

Pour mieu comprendre le format Portable Executable de notre bon Windows :00000012: j'effectue quelque tests sur un exe. Mon but est de rajouter dans la section CODE un bout de code (Ouai super !). C'est une succession de 8 nop donc sans grande conséquence pour le programme. Pour cela j'augmente de 8 la taille virtuelle et réelle dans la table des sections puis dans cette meme table j'incremente de 8 les positions virtuelle et réelle des sections qui suivent. Comme l'insertion du code s'effectue avant le point d'entrée du programme, lui aussi j'incremente son adresse de 8.

Tout fonctionne bien sauf que windows et ollydbg ne veulent pas de mon nouveau programme. Par contre sous windasm32 je peux le charger et suivre pas à pas son execution, il n'y a aucun probleme.

Comme vous comprennez c'est ennuyant (Sans blague), si quelqu'un connait bien ce format, un coup de pouce serait le bienvenu !!

Merci !

MessagePosté: 11 Juin 2006, 11:36
par MrCool
Je ne connais pas ce format, mais si tu ajoutes du code en entrée ce sont toutes les adresses mémoires qui se trouvent en dessous des nop qui doivent être incrémentées de 8, non?

MessagePosté: 11 Juin 2006, 11:54
par EntraX666
Tout d'abord merci de ta réponse.
Ensuite, les instructions en asm sont les unes a la suites des autres. En inserant 8 octets les adresses des instructions suivantes sont automatiquement décalées de 8. Si j'incrémente le point d'entrée de 8 c'est pour que le code d'initialisation soit inchangé. Sinon la premiere instruction executé n'est pas cohérente avec le déroulement logique du programme, du coup on observe un magnifique crash :)

Pour ce qui connaissent pas et que ça interrese: http://minso.free.fr/cavinfo/systeme/executable.html

En maitrisant ce format on peut faire des trucs interressant comme des exe qui se décryptent avant leur execution ou des self extractor a la winzip.

MessagePosté: 11 Juin 2006, 12:44
par MrGecko
Le Portable Executable c'est pour résumer le format appliqué au code binaire compilé que nous connaissons tous : exe, ocx, dll, sys..
Il contient une partie en-tête et une partie code pur

Et c'est là qu'on peut rajouter du code perso en remplacant des fonctions "pas indispensables au bon fonctionnement du programme" par des "nop" comme il veut le faire, avec nop une instruction asm qui ne fait "rien".
C'est-à-dire qu'à la place de :
mov eax,ebx
cmp eax,eax
...

il glissera quelques instructions à lui (ici des nop).
Elles peuvent servir à beaucoup de chose, cette méthode fait partie du domaine du cracking (et plus largement du reverse engineering), discipline qui consiste à décompiler des programmes et à les modifier, par exemple pour remplacer un algorithme qui calcule un password par un qu'on connait (une autre méthode est d'effacer la verification du password en la remplacant par des nop) ou alors on peut faire aussi des virus en rajoutant du code malicieux dans un programme à l'apparence anodine. Enfin on peut faire d'autres choses comme il veut le faire mais ca, je n'ai jamais essayé.

Voilà une brève présentation de la chose, qui n'a pas grand rapport avec les jeux videos et la making c'est vrai...


Ca fait quelques années que je n'ai pas bidouillé dans ce domaine alors j'ai perdu un peu la main, je ne pourrais pas vraiment t'aider ^^;
As-tu bien regardé à la fin de la section .CODE s'il n'y avait pas assez de place pour faire ce que tu veux ? Ollydbg fait éditeur hexa, tu peux donc facilement voir si ton programme contient ou non des zones "libres", tu n'aurais alors plus de problèmes de redimenssionement.

MessagePosté: 11 Juin 2006, 13:24
par EntraX666
Oui on peut faire tout ça, mais pour changer je voudrait travailler un peu du bon coté de la force !! J'ai envie de tester un systeme de protection des executable qui necessite de l'auto-décryptage. Il me faut donc maitriser toutes ces histoires de section et tout le tralala pour que ça fonctionne sur n'importe quel executable. J'aimerai bien y parvenir car c'est tout aussi interressant et ça me ferait marrer si quelques personnes pouvait suer un peu dessus !!

MessagePosté: 11 Juin 2006, 15:56
par teto
je pense que tu connais déjà et je ne suis pas sur que cela puisse t'aider mais sait-on jamais:
http://kb.toutfr.com/wakka.php?wiki=FAQ#3

MessagePosté: 11 Juin 2006, 19:22
par EntraX666
Je te remercie, je connais res hacker et il est utile mais pas pour mon probleme. Merci quand meme !

MessagePosté: 12 Juin 2006, 12:53
par teto
En fait je pensais davantage à faire des recherches sur le CRC 32,CRC 16,ce genre de protection qui font qu'une fois l'executable modifié,il ne veut plus se lancer.
Mais bon,je n'y connais strictement rien,à toi de voir ^^

MessagePosté: 12 Juin 2006, 13:09
par EntraX666
Merci, mais malheureusement j'en suis pas encore au point d'implanter un algorithme de cryptage !