Intel x86-Opcode Referenz?
Was ist ein relativ schnell und einfach Methode der aufzublicken, was einen beliebigen opcode bedeutet (sagen wir 0xC8
) in x86?
Die Intel Software Developer ' s manual ist nicht sehr lustig zu durchsuchen...
InformationsquelleAutor der Frage Mehrdad | 2011-06-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Überprüfen dieses sehr komplette Tabelle von x86-opcodes auf x86asm.net.
Nur
CTRL+F
und Sie sind fertig! Lesen Sie sich unbedingt die richtige Linie tho, alsC8
zum Beispiel kann erscheinen in mehreren Standorten.InformationsquelleAutor der Antwort user703016
Während die Intel Software Developer ' s Manual selbst ist definitiv nicht sehr bequem zu durchsuchen, der opcode-Tabellen, die in diesem Handbuch helfen könnte. Werfen Sie einen Blick auf den Anhang A "Opcode-Map" in die Band 2B der Anleitung, kann es nützlich sein.
InformationsquelleAutor der Antwort Eugene
Hier ist eine ziemlich schöne visuelle. Geht nicht ins detail, aber wenn Sie brauchen nur zu schauen, ein hex-Wert sehr schnell, dies sollte es tun-
Quelle: http://pnx.tf/files/x86_opcode_structure_and_instruction_overview.png
InformationsquelleAutor der Antwort iliketocode
Eine schnelle Referenz zum nachschlagen opcodes ist sandpile. Brauche ich zwei Klicks, um herauszufinden, was 0xc8 tut (es ist
enter
btw).InformationsquelleAutor der Antwort Gunther Piez
Gibt es auch asmjit/asmdb Projekt, die bietet public-domain X86/X64-Datenbank in einem JSON-ähnlichen format (es ist ein node-Modul eigentlich nur require() von Knoten oder auch in-browser -). Es ist konzipiert für die weitere Verarbeitung (zum Beispiel zu schreiben, Prüfungen, Monteure, Zerleger), aber es ist auch sehr einfach, öffnen Sie einfach die Datenbank-Datei und erforschen.
AsmDB kommt mit einem tool namens x86util.js, die indiziert werden können, die x86-Datenbank in eine viel mehr freundliche Darstellung, die verwendet werden können, um tatsächlich etwas zu tun mit es. Schreiben wir ein einfaches Werkzeug in node.js druckt alle Anleitungen, die den gleichen opcode-byte, wie Sie bieten:
Probieren Sie es aus:
Darüber hinaus gibt es Kommandozeilen-tools, die verwendet werden kann für die quick-and-dirty zerlegen, aber diese erfordern die gesamte Anweisung (im Gegensatz zu dem, dass nur die opcode-byte), hier sind einige Tipps:
Mithilfe llvm-mc aus LLVM Projekt:
Mit ndisasm von nasm Projekt:
Gibt es auch eine AsmGrid Projekt vom gleichen Autor wie AsmDB. Es ein work-in-progress-online-AsmDB explorer, die verwendet Farben zur Visualisierung der verschiedenen Eigenschaften der einzelnen Anweisungen.
InformationsquelleAutor der Antwort Petr
Einen anderen Weg, mit einem debugger (gdb, windbg, ollydbg, ...) oder disassembler (IDA), und setzen Sie dann die byte-Sequenzen in den beschreibbaren Speicherbereich. Schließlich Demontage an der Start-Adresse, byte-Sequenzen.
Es Naht kompliziert, aber in einigen Situationen nützlich, wenn Sie das knacken/Rückwärtsfahren.
InformationsquelleAutor der Antwort oDisPo
Sandpile ist wahrscheinlich das, was du bist suchen für. Noch, der beste Weg, um Blick auf die x86-Codierung ist nicht in hex sondern in oktal. Plötzlich x86 sieht nicht so hässlich und es macht Sinn. Die klassische Erklärung dafür ist aus Usenet alt.lang.asm-circa 1992:
InformationsquelleAutor der Antwort Olsonist