Besion info importante assembleur/desassembleur

Résolu
PatSW Messages postés 24 Date d'inscription samedi 28 décembre 2002 Statut Membre Dernière intervention 1 février 2005 - 23 juil. 2004 à 21:02
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 - 28 juil. 2004 à 16:07
Bonjour,

je suis présentement en train de modifier un fichier execute que jai décompiler avec W32Dasm et toute mes modifications jusqu'a présent sont parfaite mais je bloc sur une seul et derniere chose.

J'ai changer une "procedure" de place mais je ne sais pas comment réécrire les JMP CALL ect;

voici la "procedure"

:004547A7 A114AE6E00 mov eax, dword ptr [006EAE14]
:004547AC 8B8C30CC010000 mov ecx, dword ptr [eax+esi+000001CC] ECX = total gold
:004547B3 85C9 test ecx, ecx
:004547B5 7405 je 004547BC
:004547B7 E806E1FFFF call 004528C2
:004547BC E944680000 jmp 0045B005

je doit mettre cette procedure a loffset :00409428

comment faire pour modifier le "jmp 0045B005" par exemple qui se retrouvera a :004547CF

en gros je voudrai savoir commen recalculer la valeur hexadecimal;
je sais que E9 veu dire "jmp" mais je ne sais pas comment est calculer ladresse :004547BC E944680000
E9 = jmp
4680000 = 0045B005 -> comment sa fait ici?

merci de votre aide!

The Universal ßð¥

3 réponses

ToutEnMasm Messages postés 587 Date d'inscription jeudi 28 novembre 2002 Statut Membre Dernière intervention 13 décembre 2022 3
23 juil. 2004 à 23:15
Salut,
D'habitude on trouve une adresse relative,c'est a dire :
on part de l'adresse du jmp 004547BC , on prend l'adresse d'arrivée 00409428 ,on fait une soustraction ou une addition en prétant attention au fait que le déplacement peut être négatif ou positif.
Pour y voir plus clair ,prendre l'exemple non modifié:
004547BC E944680000 jmp 0045B005
soustraire 4547BC de 0045B005,si l'opération es bonne on retrouve les chiffres suivants de l'instruction 4468 sinon faire l'inverse.
Pour des informations plus pointues sur les instructions voir le livre deux d'intel

ToutEnMasm
3
PatSW Messages postés 24 Date d'inscription samedi 28 décembre 2002 Statut Membre Dernière intervention 1 février 2005
26 juil. 2004 à 18:32
J'avais déja trouver une solution:

dans win32dasm, si on fait debug et ensuite patch code,
le code asm est retranscrit avec le code hexadecimal.

Cela ma permis de continuer mes modifs mais sans comprendre vraiment pourquoi, mais grace a ta reponse je comprend, ce qui me permet dans savoir plus sur l'asm, code que j'aimerais bien maîtriser!

Merci de ton aide!

The Universal ßð¥
0
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
28 juil. 2004 à 16:07
salut,

c pratiquement exacte sauf qu'il faut prendre l'adresse de l'instruction suivante du jmp.

exemple Masm:

@@:
jmp @B te donne le code 0EBh,0FEh

EBh c le code jmp +/- byte
FEh etant le déplacement. ( -2 et pas 0 )

@++
0
Rejoignez-nous