x86 JMP opcode-Struktur
Ich bin gerade auf der Suche auf die .text-Abschnitt, der eine einfache exe-Datei habe ich in C, und ich versuche nur, um herauszufinden, wie einige x86 Befehle strukturiert sind.
Von dem, was ich gelesen habe, es scheint, dass 0xe9 ist ein single-byte-opcode für einen relativen Sprung (JMP), aber ich bin unsicher, wie der rest der bytes, die tatsächlich bilden die Sprung-Adresse.
Ich bin mit dem super online-disassembler ODA zu zerlegen meinem Programm, und dies ist, was angezeigt wird:
.text:0x00411005 e936210000 jmp 0x00413140
So 0xe9 ist die JMP-Anweisung, und dies ist ein 32-bit-ausführbare Datei, ich nehme an, die nächsten vier bytes sind, wird die Adresse für den Sprung, aber ich bin ein wenig unsicher, wie Sie tatsächlich strukturiert ist.
Wenn jemand helfen könnte glänzen etwas Licht auf das seine, ich würde es zu schätzen wissen.
Dank
- Ist das nicht eine fast wörtliche Kopie-paste von der Frage, die Sie gerade gelöscht haben? Den gleichen Rat (Lesen Sie das Handbuch) gilt für diese Frage.
- Verwandte: stackoverflow.com/questions/14921735/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist ein relativer Sprung, was bedeutet, dass das Ziel angegeben relativ zu der nächsten Anweisung.
Diese Anleitung ist unter der Adresse 0x411005 und dauert 5 Byte, so dass die nächste Instruktion ist bei der Adresse 0x41100a. Die relative Höhe zu springen (kodiert als little-endian, d.h. die bytes gespeichert sind, von der unbedeutendsten bis bedeutendste) ist 0x2136. So das Ziel des Sprungs ist 0x41100a + 0x2136 = 0x413140.