FORUM Syndrome-OC - Jacky-PC


  Programmation


  Langage bas niveau(asm...)


  [QST] trouver les offsets dans le .EXE

 




Il y a 40 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici

 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[QST] trouver les offsets dans le .EXE

n°6684
electro
Posté le 11-03-2006 à 13:06:40  profilanswer
 

Bonjour,
 
Je souhaitais modifier légérement un vieux programme fait en visual c++ (pilotage d'un montage sur port //) pour  piloter le montage modifié mais le source est comme qui dirait perdu  :cry:  
 
refaire le programme entierement me prendrai bcp de temps et je risquerais de griller le montage (des tensions d'alims sont réglables via le port //)  :sweat:  
 
heureusement il y a findus ollydbg  :D  
 
j'ai réussi à localiser l'instruction ASM à modifier mais je ne sais pas comment à partir de l'adresse donnée dans Ollydbg retrouver l'adresse qui corresponds dans le fichier EXE (= offset)
 
j'ai bien fait des recherches sur les chaines hexa dans un éditeur hexadécimal mais il y a plusieurs "possibilités"  :heink:  
 
je ne suis pas habitué à manipuler des outils de debuggage sur PC, merci pour votre aide (les seuls outils que je sais manipuler sont ceux pour 68hc11 et at89c2051 - µc étudiés en travaux pratiques)
 
A+


---------------
http://electroremy.free.fr    http://cidess.free.fr
http://francetelevisions.free.fr    http://mediaplayertest.free.fr
mood
Google
Posté le 11-03-2006 à 13:06:40  profilanswer
 

n°6688
electro
Posté le 13-03-2006 à 22:27:28  profilanswer
 

Alors ils sont où les pros  :sarcastic: ?
 
OK je sors  :whistle:


---------------
http://electroremy.free.fr    http://cidess.free.fr
http://francetelevisions.free.fr    http://mediaplayertest.free.fr
n°6689
Trracer
Posté le 14-03-2006 à 09:47:40  profilanswer
 

Il n'y a pas de corrélation entre les offsets dans le fichier et les offsets mémoires avec des .exe (pour les .com c'est differents il ne sont pas relocalisable).  
La seule solution c'est d'extraire une serie unique d'instruction et de la modifier en conséquence...

n°6696
electro
Posté le 14-03-2006 à 22:58:46  profilanswer
 

La grosse difficulté pour moi est de retrouver ce qu'il y a à modifier dans le EXE à partir des instructions présentes en RAM.
 
Pour les µC, qui sont en architecture harvard, il n'y a pas ce pb puisque le code est en ROM; par contre sur un PC qui lui est en architecture von neumann, le gros pb est de savoir comment le code est monté en mémoire. C'est d'autant plus complexe que le programme en question est fait en visual c++ et qu'il utilise des DLL...
 
A+


---------------
http://electroremy.free.fr    http://cidess.free.fr
http://francetelevisions.free.fr    http://mediaplayertest.free.fr
n°6697
Trracer
Posté le 15-03-2006 à 09:50:55  profilanswer
 

L'architecture n'a rien à voir là dedans, des instructions ça reste des instructions. Si tu as deja trouvé la/les instruction(s) à modifier, il suffit de noter une suite d'instructions (hexa) qui soit suffisamment longue pour etre unique dans le code et de rechercher cette suite dans le code avec un editeur hexa. Une fois identifié il ne reste plus qu'à remplacer la/les instructions par les nouvelles.
 
Un peu de doc ici

n°6700
Dr Lous
I see old password
Posté le 15-03-2006 à 17:18:43  profilanswer
 

windesam est ton ami \o/ ;)

n°6873
Pyre
GNU/Linux Padawan
Posté le 13-06-2006 à 13:10:56  profilanswer
 

salut! bon alors c'est très très simple.  
 
Sous olly tu as trouvé l'adresse de ton instruction ça doit etre un truc du genre 00xxxxxx bref alors comme le dit Dr Lous c'est W32dasm qui sera ton ami! tu te débrouilles pour récupérer ce logiciel je te conseille la version 8.9 parce que c'est celle que j'utilise mais bon ça doit pas etre trop différent avec les autres versions! tu notes l'adresse de l'instruction que tu veux modifier, tu ouvres W32dasm, tu cliques sur "Goto" dans la barre en haut, ensuite tu vas dans Goto Code Location, puis dans la dialogbox tu tapes l'adresse que tu as notée auparavant.bon la tu te retrouves exactement au bon endroit et c'est là que ça devient intéressant.
 
tu as donc ton "curseur"(bon la petite barre qui highlight le texte on se comprend!) sur l'intruction que tu veux modifier, et tu regardes la barre tout en bas de la fenêtre de W32dasm. la il y a marqué:
 
 
 
line xxx page x Code data @00xxxxxx @offset 00XXXXXXh  
 
 
 
voila! ce qui t'intéresse c'est ce qui est en rouge (bon les XX c'est des autre numéros hein! ^^)et donc l'offset hexadécimal de ton instruction c'est l'adresse en rouge apres le @offset et sans le "h" bien sûr! tu n'as plus qu'a ouvrir ton exe avec ton éditeur hexa préféré et a faire goto etc..bon tu vas à la bonne adresse et tu modifie directement tes instructions en hexa! voila! j'espère avoir été clair et surtout que c'était bien ça ton problème, sinon sache aussi que dans olly dbg tu as une fonction "patch code" ou tu peux directement taper tes instructions en ASM et ça le remplace dans le code..mais il faut qu'il y ait la place évidamment mais si c'est just une ptite instruction a remplacer par une autre bah là c'est bon,sinon c'est plus dur..mais pas impossible!..mais je ne sais pas si on peut sauvegarder l'exe..surement mais je n'ai jamais cherché comment faire..voila a+!

n°6874
Pyre
GNU/Linux Padawan
Posté le 13-06-2006 à 13:20:29  profilanswer
 

oups..désolé le rouge n'est pas passé...bon bah bref t'auras compris c'est après le @offset!

mood
Google
Posté le 13-06-2006 à 13:20:29  profilanswer
 


Aller à :
Ajouter une réponse

  FORUM Syndrome-OC - Jacky-PC


  Programmation


  Langage bas niveau(asm...)


  [QST] trouver les offsets dans le .EXE

 

Hit Parade