Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1541 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Modifier directement l'exe sans recompiler

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Modifier directement l'exe sans recompiler

n°1653670
guda
Posté le 06-12-2007 à 11:13:01  profilanswer
 

Bonjour à tous,
 
Il y a quelques années on avait pondu un petit programme dans ma société.
Ils avaient mis une limitation pour la manipulation de fichier. Il fallait qu'il y ait moins de 500 caracteres.
 
Ma boite voudrait étendre la limitation à 900.
 
Il y a 2 problemes :
1 - le serveur qui herbergait les sources n'existe plus et bien sûr aucun backup n'a été fait  :non:  
2 - la valeur de 500 était en dur et pas dans un fichier de parametrage.
 
Je n'ai pas trop envie de tenter de décompiler l'exe. J'ai bien retrouvé un des fichiers sources. La ligne a modifier est :
 if(intLiM > 500 ) {
 
J'avais comme idée d'utiliser un éditeur héxadécimal à la recherche de la valeur 500 (1F4 en hexa) pour la passer à 900. Ca pas l'air d'être aussi facile.
 
Savez-vous comment je pourrais m'y prendre pour ne pas tout récrire ?
 
Merci pour votre aide

mood
Publicité
Posté le 06-12-2007 à 11:13:01  profilanswer
 

n°1653797
ptitchep
Posté le 06-12-2007 à 13:45:49  profilanswer
 

et utiliser un désassembleur (W32dasm par exemple sous windows)?
Ca va pas être du gateau de retrouver ta ligne mais ca sera déjà plus faisable qu'avec juste un éditeur hexa. Ensuite tu repères l'offset et tu modifies avec l'éditeur hexa.


---------------
deluser --remove-home ptitchep
n°1653863
IrmatDen
Posté le 06-12-2007 à 14:44:43  profilanswer
 

Tu peux utiliser un debugger comme OllyDbg pour:
1. Déssassembler
2. mettre des BP sur les valeurs 0x1F4
3. Reproduire le scénario menant à ce test
4. Le changer
5. Vérifier
 
Tu vas être obligé de passer par ces étapes quoi qu'il en soit, il n'y a pas moyen de changer ça :(

n°1654136
Ace17
Posté le 06-12-2007 à 20:29:36  profilanswer
 

Que se passe-t-il si tu essaies de manipuler un fichier de plus de 500 caracteres? Une boite de dialogue?
edit : tu voudrais pas balancer la source du fichier en question?


Message édité par Ace17 le 06-12-2007 à 20:31:13
n°1654143
Joel F
Real men use unique_ptr
Posté le 06-12-2007 à 20:38:29  profilanswer
 

Citation :


le serveur qui herbergait les sources n'existe plus et bien sûr aucun backup n'a été fait


 
:o

n°1654151
el muchach​o
Comfortably Numb
Posté le 06-12-2007 à 21:10:22  profilanswer
 

IrmatDen a écrit :

Tu peux utiliser un debugger comme OllyDbg pour:
1. Déssassembler
2. mettre des BP sur les valeurs 0x1F4
3. Reproduire le scénario menant à ce test
4. Le changer
5. Vérifier

 

Tu vas être obligé de passer par ces étapes quoi qu'il en soit, il n'y a pas moyen de changer ça :(


+1 Et au passage, les bons désassembleurs sous Windows sont OllyDbg et surtout la version gratuite de IDA Pro (IDA Freeware)
Au passage, si ce programme est essentiel, ça vaut p-ê le coup d'acheter une licence d'IDA Pro, vu qu'apparemment il inclut un décompilateur asm -> C/C++.

Message cité 1 fois
Message édité par el muchacho le 06-12-2007 à 21:26:33

---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°1654152
Elmoricq
Modérateur
Posté le 06-12-2007 à 21:11:28  profilanswer
 

C'est quand même très casse-gueule de modifier l'exe directement, on ne sait pas pour quelles raisons il y a cette limitation. Si tu as des int blabla[500] dans le code t'es pas sorti de l'auberge. :/
 
Si le programme effectue une tache simple, ça coûterait peut-être moins cher de le redévelopper ?

n°1654252
Ace17
Posté le 07-12-2007 à 08:27:13  profilanswer
 

el muchacho a écrit :

ça vaut p-ê le coup d'acheter une licence d'IDA Pro, vu qu'apparemment il inclut un décompilateur asm -> C/C++.

Ca y est, on sait faire ca maintenant ?  :heink:  

n°1654415
guda
Posté le 07-12-2007 à 11:59:24  profilanswer
 

Merci pour votre aide.
 
J'ai essayé les methodes. En fait la limitation actuelle est de 60000 caracteres. J'ai donc cherché avec IDA la valeur hexa 0EA60h
 
Il n'y a qu'une ligne
http://foutoir.free.fr/IDA_view.jpg
 
D'après vos explications, je vais sur l'éditeur hexadécimal, la ligne est surlignée
http://foutoir.free.fr/hexa.jpg
 
Pour essayer j'aimerai modifier la valeur par 99999 soit 1869F. Comment dois-je m'y prendre ?

n°1654435
IrmatDen
Posté le 07-12-2007 à 12:12:03  profilanswer
 

Hm, on peut avoir les vraies images stp? ;)
 
Par rapport aux limitations, ca va être plus risqué avec ces valeurs, et au piège indiqué par Elmo s'en ajoute un autre... Quid si cette info est stocké sur 16 bits? A plusieurs endroits?

mood
Publicité
Posté le 07-12-2007 à 12:12:03  profilanswer
 

n°1654844
Joel F
Real men use unique_ptr
Posté le 08-12-2007 à 00:20:18  profilanswer
 

Ace17 a écrit :

Ca y est, on sait faire ca maintenant ?  :heink:  


ouais, masi la sortie est encore parfois très dure à lire. MAis ca donne une bonne approx.

n°1654863
el muchach​o
Comfortably Numb
Posté le 08-12-2007 à 04:58:01  profilanswer
 

guda a écrit :


Pour essayer j'aimerai modifier la valeur par 99999 soit 1869F. Comment dois-je m'y prendre ?


Tu as de la chance qu'il n'y ait qu'une seule occurence de 0EA60h. Tu prends un éditeur hexa style xvi32 et tu modifies directement le fichier, et tu relances.


---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°1654866
bapho13
Usager usant
Posté le 08-12-2007 à 09:07:39  profilanswer
 

Et c'est ainsi que Robert envoya le serveur de la boite à la casse :lol:

 


Edit: y a pas de checksum dans les exe ?


Message édité par bapho13 le 08-12-2007 à 09:10:17
n°1654867
el muchach​o
Comfortably Numb
Posté le 08-12-2007 à 09:12:03  profilanswer
 

Clair que si il y a un calcul qui mène à un dépassement de capacité d'un entier par ex., le programme ne fonctionnera pas correctement et il ne le saura pas jusqu'à ce qu'au jour où il y a un bug engeandrant un comportement erronné flagrant. De toute façon, si l'outil était critique, ils auraient pas jeté le code, enfin j'espère. [:marc]
Pour les checksums, je ne crois pas qu'il y en ait.

Message cité 1 fois
Message édité par el muchacho le 08-12-2007 à 09:27:22

---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°1654913
Ace17
Posté le 08-12-2007 à 13:02:33  profilanswer
 

el muchacho a écrit :

Clair que si il y a un calcul qui mène à un dépassement de capacité d'un entier par ex., le programme ne fonctionnera pas correctement et il ne le saura pas jusqu'à ce qu'au jour où il y a un bug engeandrant un comportement erronné flagrant. De toute façon, si l'outil était critique, ils auraient pas jeté le code, enfin j'espère. [:marc]
Pour les checksums, je ne crois pas qu'il y en ait.


Y'en a, mais ils ne sont pas utilises.
 
Quant aux decompilateurs, meme si la sortie est dure a lire, est-ce qu'elle est recompilable?

n°1654932
bapho13
Usager usant
Posté le 08-12-2007 à 13:44:21  profilanswer
 

Ace17 a écrit :


Y'en a, mais ils ne sont pas utilises.


 
Meme par les antivirus ?
 
J'en sais réellement rien, hein, mais je pense que si c'est le cas ca peut etre ennuyeux  :sweat:

n°1654939
Ace17
Posté le 08-12-2007 à 14:14:21  profilanswer
 

bapho13 a écrit :


 
Meme par les antivirus ?
 
J'en sais réellement rien, hein, mais je pense que si c'est le cas ca peut etre ennuyeux  :sweat:


 
Certains virus DOS utilisent remplissent meme ce champ avec une signature pendant l'infection, de maniere a ne pas infecter le meme executable deux fois!
Quant aux antivirus, je peux imaginer un virus qui mette a jour le checksum a l'infection ... donc question protection, un checksum dans l'exe, c'est zero.

n°1654999
el muchach​o
Comfortably Numb
Posté le 08-12-2007 à 16:49:53  profilanswer
 

Ace17 a écrit :


Y'en a, mais ils ne sont pas utilises.
 
Quant aux decompilateurs, meme si la sortie est dure a lire, est-ce qu'elle est recompilable?


En fait, IDA pro est bcp utilisé pour le reverse de virus. La décompilation de tout un programme C++ n'a pas grand intérêt et ne donnera probablement pas de bons résultats pour retrouver l'architecture du code. Par contre, au niveau algorithmique, la décompilation doit pouvoir retrouver un algo d'une fonction statique de façon utilisable. Donc pour un petit prog en C avec un algo tordu par ex., j'imagine que ça peut aider.


---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Modifier directement l'exe sans recompiler

 

Sujets relatifs
modifier un texte dynamiquement en phpModifier les données EXIF d'une photo sous PHP
Modifier le nom d'un noeud XML avec SimpleXML ?modifier le CHMOD d'un xml sans le FTP
modifier titre graphique[HTA/VBS] Utilisation d'un vbs externe et modification d'un champ
[Résolu]Modifier les style de lien pour une partie seulementcréer un script ou logiciel pour modifier une page web automatikement
Modifier les associations de fichiers par le code ?Modifier la liste des types d'un parcourir
Plus de sujets relatifs à : Modifier directement l'exe sans recompiler


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR