2011-10-17 6 views
3

Quelqu'un pourrait-il me dire ce que "0x48ff25" signifie dans le code de désassemblage suivant?Que signifie le code machine AMD64 "48 ff 25"?

00000000`7745b0ac 48ff2525801000 jmp  qword ptr [ntdll!NlsAnsiCodePage+0xe3e (00000000`775630d8)] 

J'ai vérifié le manuel du programmeur architecture AMD64, mais il est vraiment difficile de trouver réponse par moi-même ...

+0

Cela m'a vraiment aidé. –

Répondre

9

48 est un préfixe REX.W
FF est l'octet opcode
25 est l'octet ModR/M, le champ d'opcode étendu est/4 et le reste signifie que l'opérande est un opérande de mémoire dans [RIP + sdword] (que le rex.w fait un qword)

Ce qui signifie que l'instruction est JMP qword ptr [RIP + 0x00108025] (mais vous connaissiez déjà cette partie) où RIP fait référence à adresse juste après l'instruction.