Calculer l'opcode d'une instrcution jmp [Résolu]

cs_izissise
Messages postés
5
Date d'inscription
mercredi 16 juin 2010
Dernière intervention
26 juillet 2011
- 24 juil. 2011 à 17:21 - Dernière réponse : cs_ghuysmans99
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Dernière intervention
30 juin 2013
- 24 juin 2012 à 15:21
Bonjour,

J'aimerais "calculer" l'opcode d'une instruction jmp avec une adresse ou sauté aléatoire bref mes recherche google n'ayant rien donner je me tourne vers vous !

007C7D30 - E9 CB821603 jmp 03930000

En fait je vois pas le lien entre 007C7D30, CB821603 et 03930000.
Merci a vous et très bonne journée !
Afficher la suite 

Votre réponse

11 réponses

Meilleure réponse
cs_patatalo
Messages postés
1466
Date d'inscription
vendredi 2 janvier 2004
Dernière intervention
14 février 2014
- 26 juil. 2011 à 20:44
3
Merci
re re,

vr = adr_dst > 0x7C7D35 ? adr_dst - 0x7C7D35 : (0x7C7D35 - adr_dst) * -1;

@++

Merci cs_patatalo 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 94 internautes ce mois-ci

Commenter la réponse de cs_patatalo
cs_ghuysmans99
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Dernière intervention
30 juin 2013
- 24 juil. 2011 à 23:49
0
Merci
Regarde du côté du Intel® 64 and IA-32 Architectures Software Developer’s Manual, LA référence pour ce qui est du langage machine x86. Partie utile : Vol 2A. Le seul problème c'est qu'il faut comprendre ce qui y est dit

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
Commenter la réponse de cs_ghuysmans99
cs_patatalo
Messages postés
1466
Date d'inscription
vendredi 2 janvier 2004
Dernière intervention
14 février 2014
- 25 juil. 2011 à 12:48
0
Merci
salut,


Il y a 2 types d'instructions de saut. L'une est relative à l'adresse suivant l'instruction de saut (+ ou - valeur donne l'adresse pointée comme pour le call). L'autre est absolue, la valeur indique l'adresse pointée.

@++
Commenter la réponse de cs_patatalo
cs_izissise
Messages postés
5
Date d'inscription
mercredi 16 juin 2010
Dernière intervention
26 juillet 2011
- 25 juil. 2011 à 12:59
0
Merci
D'apres le manuel c'est cette inscrution :
E9 cd JMP rel32 A Jump near, relative, RIP =
RIP + 32-bit displacement sign extended to 64-bits

donc 7c7d30 + cb821603 devrais me donner l'adresse de destination (3930000), mais ce n'est pas le cas .. :(
Commenter la réponse de cs_izissise
cs_patatalo
Messages postés
1466
Date d'inscription
vendredi 2 janvier 2004
Dernière intervention
14 février 2014
- 25 juil. 2011 à 22:33
0
Merci
re,


déjà, 0xcb821603 est une valeur négative.

@++
Commenter la réponse de cs_patatalo
cs_izissise
Messages postés
5
Date d'inscription
mercredi 16 juin 2010
Dernière intervention
26 juillet 2011
- 25 juil. 2011 à 23:03
0
Merci
Dsl mais j'arrive toujours pas a comprendre quelle pourrait me montrer le calcule entre l'adresse source et celle de destination ?

ps: je ne vous mais pas dit que j'utilisais cheat engine enfin bref quand je copie la ligne avec ce jmp jai : 007C7D30 - E9 CB822D03 - jmp 03AA0000 : [MD2_Final+251A67]
pour info l'adresse de MD2_Final est C36C60.

pss: Les adresse sont différente car l'allocation est dynamique (c'est pour ça qu'il faudrait que je calcule l'opcode dynamiquement aussi.)

Merci :)
Commenter la réponse de cs_izissise
cs_izissise
Messages postés
5
Date d'inscription
mercredi 16 juin 2010
Dernière intervention
26 juillet 2011
- 26 juil. 2011 à 17:31
0
Merci
[^^sad2]
Commenter la réponse de cs_izissise
cs_izissise
Messages postés
5
Date d'inscription
mercredi 16 juin 2010
Dernière intervention
26 juillet 2011
- 26 juil. 2011 à 21:55
0
Merci
Merci beaucoup !! j'obtiens 0x032D82CB plus cas convertir dans le bon endian !
Commenter la réponse de cs_izissise
cs_tboss
Messages postés
2
Date d'inscription
samedi 23 juin 2012
Dernière intervention
24 février 2014
- 23 juin 2012 à 19:57
0
Merci
J'ai un problème du même style : j'ai l'opcode et l'adresse d'un saut et je veux récupérer l'adresse vers laquelle le saut s'effectue.

5DAA0756 - E9 A5F89FB4 - jmp 124A0000

Je souhaite récupérer à partir d'un programme externe l'adresse 124A0000 en lisant l'opcode à l'adresse 5DAA0756.
Comment faire ?
Merci d'avance !
Commenter la réponse de cs_tboss
cs_tboss
Messages postés
2
Date d'inscription
samedi 23 juin 2012
Dernière intervention
24 février 2014
- 23 juin 2012 à 20:20
0
Merci
On peut pas éditer ?
A l'aide de la fonction ci dessus je trouve que dst = opcode - adresse actuelle si dest < adresse actuelle, ce qui est le cas.
Après calcul je trouve malheureusement 484E985E et non pas 124A0000.
Il y'a une histoire d'endian ? Comment je convertis ?
Commenter la réponse de cs_tboss
cs_ghuysmans99
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Dernière intervention
30 juin 2013
- 24 juin 2012 à 15:21
0
Merci
Pour le faire "à la main", tu convertis l'opérande : A5|F8 9F|B4 -> B4|9F F8|A5. On travaille en arithmétique signée (déplacement relatif, c'est un jmp near), le bit de poids signe est à 1, donc on prend le complément à deux (=1+not x) du déplacement et on le soustrait à l'adresse de la prochaine instruction (5DAA0756+5).

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
Commenter la réponse de cs_ghuysmans99

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.