Précédent   Forum du club des développeurs et IT Pro > Autres langages > Assembleur > x86 32-bits / 64-bits
x86 32-bits / 64-bits Architectures x86 32/64 bits et leurs outils (assembleurs, debuggers, émulateurs...)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 19/06/2012, 12h03   #1
Array
Nouveau Membre du Club
 
Avatar de Array
 
Inscription : juillet 2007
Messages : 209
Détails du profil
Informations personnelles :
Âge : 21

Informations forums :
Inscription : juillet 2007
Messages : 209
Points : 25
Points : 25
Par défaut Opcode A3 (mov)

Bonjour,

J'ai une question... à propos de l'instruction "mov".
En ce moment j'ai une fonction de hooking au sein d'un processus...

Soit ce code...

Code :
1
2
3
 
E8 39 6A 02 00                                call    sub_1DC6CC0
A3 84 61 13 02                                mov   dword_2136184, eax
Je me demandais... comme l'opcode du mov est ici A3... comment retrouver l'addresse du dword_2136184 ???

Selon une référence en opcode...
Code :
1
2
 
A3	movl eax,moffs32	2	Move EAX to (seg:offset)	movl %eax,farmem32
Est-ce que la séquence après A3 (i.e. 84 61 13 02) est en fait un "jump" (une addresse relative) ou quoi encore? C'est l'essence de ma question...

Autrement dit, pour obtenir l'addresse réelle, dois-je additionner 84611302 à l'addresse même de l'instruction mov, ou simplement utiliser 84611302 ?

Et si je dois faire une addition, à partir de quelle byte la faire? À la prochaine instruction après le mov, après le byte A3 ou après le début de l'instruction mov? Je ne sais pas trop...

Merci,
Array
Array est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/06/2012, 12h37   #2
Obsidian
Modérateur
 
Avatar de Obsidian
 
Homme
Chercheur d'emploi
Inscription : septembre 2007
Messages : 4 613
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 36
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Chercheur d'emploi
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : septembre 2007
Messages : 4 613
Points : 11 089
Points : 11 089
Hello,

N'oublie pas qu'Intel travaille en Little Endian.

« 84 61 13 02 », ça donne « 2 13 61 84 » remis dans le bon ordre, ce qui est bien l'offset indiqué par l'étiquette « dword_2136184 » générée automatiquement.

Après, cet offset est relatif au segment de données, en mode réel comme en mode protégé, ou à zéro en flat mode.
Obsidian est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 16h19.


 
 
 
 
Partenaires

Hébergement Web