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

cs_izissise 5 Messages postés mercredi 16 juin 2010Date d'inscription 26 juillet 2011 Dernière intervention - 24 juil. 2011 à 17:21 - Dernière réponse : cs_ghuysmans99 3983 Messages postés jeudi 14 juillet 2005Date d'inscription 30 juin 2013 Dernière intervention
- 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 1466 Messages postés vendredi 2 janvier 2004Date d'inscription 14 février 2014 Dernière intervention - 26 juil. 2011 à 20:44
3
Merci
re re,

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

@++

Merci cs_patatalo 3

codes-sources a aidé 82 internautes ce mois-ci

Commenter la réponse de cs_patatalo
cs_ghuysmans99 3983 Messages postés jeudi 14 juillet 2005Date d'inscription 30 juin 2013 Dernière intervention - 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 1466 Messages postés vendredi 2 janvier 2004Date d'inscription 14 février 2014 Dernière intervention - 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 5 Messages postés mercredi 16 juin 2010Date d'inscription 26 juillet 2011 Dernière intervention - 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 1466 Messages postés vendredi 2 janvier 2004Date d'inscription 14 février 2014 Dernière intervention - 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 5 Messages postés mercredi 16 juin 2010Date d'inscription 26 juillet 2011 Dernière intervention - 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 5 Messages postés mercredi 16 juin 2010Date d'inscription 26 juillet 2011 Dernière intervention - 26 juil. 2011 à 17:31
0
Merci
[^^sad2]
Commenter la réponse de cs_izissise
cs_izissise 5 Messages postés mercredi 16 juin 2010Date d'inscription 26 juillet 2011 Dernière intervention - 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 2 Messages postés samedi 23 juin 2012Date d'inscription 24 février 2014 Dernière intervention - 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 2 Messages postés samedi 23 juin 2012Date d'inscription 24 février 2014 Dernière intervention - 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 3983 Messages postés jeudi 14 juillet 2005Date d'inscription 30 juin 2013 Dernière intervention - 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.