Bonjour
Je vais essayer de m'expliquer, c'est compliqué
Pour un projet, je dois créer un décompilateur x86 Opcode -> Asm
J'ai ce site pour avoir les correspondances : http://ref.x86asm.net/coder32.html
Donc par exemple pour 66a305000000
Opcode : 66 | A3 | 05 | 00 | 00 | 00
J'identifie : AX | MOV | 0x5 | 0 | 0 | 0
(Il y a 2 chiffre hexadécimaux par "colonne" on va dire)
Résultat : MOV AX,0x5
Mon problème c'est que je ne sais pas comment délimiter la taille de ces "colonnes" si je tombe par exemple sur ça : 668C2D24204D00
Pour commencer je vois qu'il existe plusieurs sortes de Opcode qui correspond à "MOV"
par exemple :
668C2D24204D00
Opcode : 66 | 8C | 2D | 24 20 4D | 00
(Il y a toujours 2 chiffres hexadécimaux, sauf à la 4eme colonne!!!!)
J'identifie : GS | MOV | 0x004D2024 | 0
Résultat : MOV 0x004D2024,GS
Comment peut-on savoir combien il y a de chiffes hexadécimaux à délimiter par "colonne" comme dans mon exemple ??
Je remarque donc qu'il y a A3 et 8C qui veulent dire MOV il y a quelque chose en rapport ?
et autre question en rapport
J'ai ceci : 66 a3 05 00 00 00 66 01 05 05 00 00 00 66 29 05 02 00 00 00
qui veux dire :
Comment je fais pour délimiter chaque Opcode pour que je sépare les commandes en sachant qu'ils ont une taille différente?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 CMD > OPCODE mov AX,0x5 > 66 a3 05 00 00 00 add AX,0x5 > 66 01 05 05 00 00 00 sub AX,0x2 > 66 29 05 02 00 00 00
Merci
PS: Vous me dîtes si vous n'avez pas compris svp
Partager