logo Homepage
+  NewbieContest
|-+  Divers» Cracking» Problème pour enregistrer avec Olly
Username:
Password:
Pages: [1]
  Imprimer  
Auteur Fil de discussion: Problème pour enregistrer avec Olly  (Lu 9959 fois)
paulo045
Profil challenge

Classement : 8960/55020

Néophyte
*
Hors ligne Hors ligne
Messages: 17


Voir le profil
« le: 02 Juin 2010 à 20:19:26 »

Bonjour,
Alors voila, j'ai un problème avec Olly.
J'ai rajouté des instructions en assembleur a la fin du fichier .exe, sur des octets libres, mais quand je veux l'enregistrer, Olly me dit "Unable to locate data in executable file".
Et je sais vraiment pas comment faire.
Si quelqu'un pouvait m'aider svp...
Journalisée
Faerasgar
Profil challenge

Classement : 382/55020

Néophyte
*
Hors ligne Hors ligne
Messages: 47


Voir le profil
« #1 le: 02 Juin 2010 à 21:00:32 »

Salut, le fichier que tu modifies, mets le à la racine du disque ( C://tonfichier.exe ), sinon si t'as juste fait " enregistrer ", essaye de l'enregistrer sous un autre nom.


Edit: Cela dit, vu les épreuves auxquelles t'es arrivé en crack, elles ne nécessitent pas de méthode aussi poussée, peut-être aussi as-tu fait une mauvaise manip qui fait que le fichier ne peut être enregistré ainsi. Mais quoi qu'il en soit, essaye au moins ce que j'ai mis plus haut

Have fun

Faerasgar
« Dernière édition: 02 Juin 2010 à 21:02:31 par Faerasgar » Journalisée

Comme la lame tranche la chair, le pouvoir balafre l'esprit.
paulo045
Profil challenge

Classement : 8960/55020

Néophyte
*
Hors ligne Hors ligne
Messages: 17


Voir le profil
« #2 le: 02 Juin 2010 à 21:12:27 »

Je faisais juste un truc a part en fait, qui n'avait rien a voir avec les épreuves.
Mon truc marche bien en plus. Ce qui est chiant, c'est que je peux pas l'enregistrer et a chaque fois, je dois me retaper toutes les instructions !

Et j'ai essayé ce que tu m'as dit de faire mais cela ne change rien.
Journalisée
harvey

Profil challenge

Classement : 13/55020

Membre Senior
****
Hors ligne Hors ligne
Messages: 316


Voir le profil WWW
« #3 le: 02 Juin 2010 à 22:39:16 »

Bonjour,

Tu as dû éditer la mémoire en dehors des zones qui correspondent aux sections de l'executable.
Supposons que dans ton fichier, il y ait une section .code qui commence en 0x400 et qui finit en 0x800, suivie d'une section .data entre 0x800 et 0x2000. La section .code est mappée en mémoire entre 0x401000 et 0x402000. Tu rajoutes ton code à la fin, et tu place la dernière instruction en 0x40142A. Du coup, quand ollydbg reconstruit l'executable, il ne sait pas où mettre ce qui dépasse. Dans le cas de la dernière instruction, l'adresse réelle (=du fichier) qui correspondrait à l'adresse virtuelle (=de la mémoire) serait 0x40142A - 0x401000 + 0x400 = 0x82A; mais 0x82A est déjà dans la section suivante (.data). Il faudrait allonger la section que tu as modifiée, donc déplacer toutes celles qui suivent, modifier les headers, etc.
L'exécution du code patché se déroule normalement, probablement parce que la section .code en mémoire est plus grande que la section du fichier (alignement). Si tu fait "copy to executable" sans toucher aux octets supplémentaires, ollydbg se contente de replacer dans le fichier les 0x400 premiers octets (dans mon exemple).


Je ne sais pas si je suis clair. Une bonne explication du format PE (en anglais) se trouve ici:
http://msdn.microsoft.com/en-us/magazine/cc301805.aspx
voir aussi les tutos d'Iczelion (http://win32assembly.online.fr/tutorials.html ) qui ont été traduits en français.
De nombreux outils te permettent d'analyser ou manipuler les sections PE (lordPE, texe, filealyzer...)
« Dernière édition: 02 Juin 2010 à 22:45:28 par harvey » Journalisée

L'entropie vient en mangeant.
paulo045
Profil challenge

Classement : 8960/55020

Néophyte
*
Hors ligne Hors ligne
Messages: 17


Voir le profil
« #4 le: 03 Juin 2010 à 18:38:46 »

Je pense que tu as été clair.
C'est juste moi qui ai du mal à comprendre !
Journalisée
harvey

Profil challenge

Classement : 13/55020

Membre Senior
****
Hors ligne Hors ligne
Messages: 316


Voir le profil WWW
« #5 le: 04 Juin 2010 à 02:46:57 »

En fait, c'est simple:
le fichier exécutable est découpé en sections. Quand le fichier est chargé, chaque section est copiée (mappée) sur une zone de l'espace mémoire. Mais les sections en mémoire n'ont pas nécessairement la même taille que les sections du fichier, elle peuvent être plus grandes.

Quand tu fais "copy to executable", olly va chercher les sections en mémoire, les recoupe à la bonne taille et les copie dans le fichier. Seulement si tu as modifié un octet au-delà de la taille que doit avoir la section dans le fichier (taille réelle), ça pose problème. La section tient, par exemple, 1024 octets dans le fichier, et elle est mappée sur une zone mémoire de 4096 octets (avec un paquet de zéros à la fin). Si tu modifie le 1025ème octet, olly ne sait plus ce qu'il doit en faire au moment de reconstruire le fichier. D'où "unable to locate data in executable file". Que les octets que tu utilises soient à la fin du fichier ne change rien, c'est la taille des sections qui importe.

Pour remédier à ça (si c'est bien ça), tu peux raccourcir ton patch pour qu'il ne dépasse pas la taille réelle de la section. Ou alors, allonger la section, ou en rajouter une. LordPE permet sans doute de faire ça (je saurais pas te dire comment).
« Dernière édition: 04 Juin 2010 à 14:29:11 par harvey » Journalisée

L'entropie vient en mangeant.
paulo045
Profil challenge

Classement : 8960/55020

Néophyte
*
Hors ligne Hors ligne
Messages: 17


Voir le profil
« #6 le: 04 Juin 2010 à 20:32:02 »

Okay merci, j'ai un peu mieux compris.
Mais pourtant, je l'avais déjà fait. Ça veut dire que je n'avais pas dépassé la taille de la section si je comprends bien ?
Journalisée
harvey

Profil challenge

Classement : 13/55020

Membre Senior
****
Hors ligne Hors ligne
Messages: 316


Voir le profil WWW
« #7 le: 05 Juin 2010 à 20:53:12 »

Si tu as patché un truc dans olly et que tout s'est bien passé, alors tu as sans doute fait le patch au bon endroit. Ou alors j'ai mal compris la question ?
Journalisée

L'entropie vient en mangeant.
paulo045
Profil challenge

Classement : 8960/55020

Néophyte
*
Hors ligne Hors ligne
Messages: 17


Voir le profil
« #8 le: 06 Juin 2010 à 17:50:03 »

Ouais bah ça doit être ça.
Je l'avais fait au bon endroit
Journalisée
Pages: [1]
  Imprimer  
 
Aller à: