[Plateformes] PE et bidouillage

Le côté programmation du développement d'un jeu vidéo.

PE et bidouillage

Messagepar EntraX666 » 11 Juin 2006, 11:10

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 !
EntraX666
Hello World, I'm new !
 
Messages: 6
Inscription: 10 Avr 2005, 11:06

Messagepar MrCool » 11 Juin 2006, 11:36

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?
Avatar de l’utilisateur
MrCool
Hello World, I'm new !
 
Messages: 1924
Inscription: 13 Mar 2005, 00:57
Localisation: Rouen / Paris

Messagepar EntraX666 » 11 Juin 2006, 11:54

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.
EntraX666
Hello World, I'm new !
 
Messages: 6
Inscription: 10 Avr 2005, 11:06

Messagepar MrGecko » 11 Juin 2006, 12:44

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.
Avatar de l’utilisateur
MrGecko
Hello World, I'm new !
 
Messages: 1078
Inscription: 02 Mai 2005, 17:43
Localisation: Montpellier

Messagepar EntraX666 » 11 Juin 2006, 13:24

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 !!
EntraX666
Hello World, I'm new !
 
Messages: 6
Inscription: 10 Avr 2005, 11:06

Messagepar teto » 11 Juin 2006, 15:56

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
Avatar de l’utilisateur
teto
 
Messages: 1168
Inscription: 26 Juil 2005, 19:02
Localisation: /home/Paris

Messagepar EntraX666 » 11 Juin 2006, 19:22

Je te remercie, je connais res hacker et il est utile mais pas pour mon probleme. Merci quand meme !
EntraX666
Hello World, I'm new !
 
Messages: 6
Inscription: 10 Avr 2005, 11:06

Messagepar teto » 12 Juin 2006, 12:53

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 ^^
Avatar de l’utilisateur
teto
 
Messages: 1168
Inscription: 26 Juil 2005, 19:02
Localisation: /home/Paris

Messagepar EntraX666 » 12 Juin 2006, 13:09

Merci, mais malheureusement j'en suis pas encore au point d'implanter un algorithme de cryptage !
EntraX666
Hello World, I'm new !
 
Messages: 6
Inscription: 10 Avr 2005, 11:06


Retourner vers Programmation

Qui est en ligne

Utilisateurs parcourant ce forum: Google [Bot] et 17 invités

cron