[Assemblage] - Calcul d'Offsets

Résolu
Nowid50 Messages postés 45 Date d'inscription dimanche 25 septembre 2005 Statut Membre Dernière intervention 29 octobre 2009 - 22 déc. 2007 à 17:54
Nowid50 Messages postés 45 Date d'inscription dimanche 25 septembre 2005 Statut Membre Dernière intervention 29 octobre 2009 - 23 déc. 2007 à 11:36
Bonjour à tous !
J'aimerais une "petite" information... (pas moyen de trouver sur Google...)

Voila la situation :
Je suis actuellement en train de programmer un mini assembleur qui a partir de ressources dans un fichier (Code Hexadécimal + nom à écrire), écrive du code assembleur. J'ai cependant une contraite de taille...

J'aimerais avoir le support de "ELSE_IF" (C'est à dire d'utiliser un JMP/CALL quand ma condition n'est pas vrai)

Voila le topo :
   J'ai mon code : JMP/CALL [Machin]...
on ca donne
    E9/E8 XX XX XX XX

Le problème c'est : Comment calculer ces X ?

J'ai regardé à l'aide de OllyDGB dans un programme existant :
E8 90F9FFFF       CALL -----.0047AF60

(Attention sous OllyDGB, les offsets sont bizaremment géré, ainsi pour obtenir le vrai offset de mon code, vous devez retirer 400'000 en Héxadécimal à l'adresse plus haut)

Voila je n'arrive pas à comprendre la logique... J'ai bien essayé de modifier les valeurs binaires ou du CALL mais rien a faire, je n'arrive pas à trouver la formule...

Un peu d'aide serait super !

Merci d'avance !

5 réponses

ToutEnMasm Messages postés 591 Date d'inscription jeudi 28 novembre 2002 Statut Membre Dernière intervention 13 décembre 2022 3
23 déc. 2007 à 11:32
Salut,
La formule peut s'écrire ainsi:
Adresse saut = adresse de l'instruction+ saut algébrique (négatif ou positif)


adresse de l'instruction = 400 000 + relative position dans le code
3
ToutEnMasm Messages postés 591 Date d'inscription jeudi 28 novembre 2002 Statut Membre Dernière intervention 13 décembre 2022 3
23 déc. 2007 à 08:06
Salut,
Rien de bizarre dans la manière de gérer les adresses par ollydbg



L'adressage
0
Nowid50 Messages postés 45 Date d'inscription dimanche 25 septembre 2005 Statut Membre Dernière intervention 29 octobre 2009
23 déc. 2007 à 09:46
Merci bien pour ton aide. J'ai compris maintenant (mais avouer que cela semble bizarre de comncer par 400'000 ;))

Sinon j'ai essayé de modifier le code binaire. Apparemet c'est relatif à la position du CALL/JMP... J'essaye d'autre et je vous tient au courant
0
Nowid50 Messages postés 45 Date d'inscription dimanche 25 septembre 2005 Statut Membre Dernière intervention 29 octobre 2009
23 déc. 2007 à 11:36
Merci beaucoup je file vérifier ca !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Nowid50 Messages postés 45 Date d'inscription dimanche 25 septembre 2005 Statut Membre Dernière intervention 29 octobre 2009
23 déc. 2007 à 11:36
Merci beaucoup je file vérifier ca !
0
Rejoignez-nous