Zurückübersetzer

Ein Zurückübersetzer ist ein Computerprogramm, das Maschinensprache in die Zusammenbau-Sprache — der inverse Betrieb zu diesem eines Monteurs übersetzt. Ein Zurückübersetzer unterscheidet sich von einem Dekompilierer, der eine höhere Programmiersprache aber nicht eine Zusammenbau-Sprache ins Visier nimmt. Zerlegung, die Produktion eines Zurückübersetzers, wird häufig für die menschliche Lesbarkeit aber nicht Eignung für den Eingang zu einem Monteur formatiert, es hauptsächlich ein Rücktechnikwerkzeug machend.

Zusammenbau-Sprachquellcode erlaubt allgemein den Gebrauch von Konstanten und Programmierer-Anmerkungen. Diese werden gewöhnlich vom gesammelten Maschinencode durch den Monteur entfernt. Wenn so, ein Zurückübersetzer, der auf dem Maschinencode funktioniert, würde Zerlegung erzeugen, die an diesen Konstanten und Anmerkungen Mangel hat; die auseinander genommene Produktion wird schwieriger für einen Menschen zu dolmetschen als der ursprüngliche kommentierte Quellcode. Einige Zurückübersetzer machen von der symbolischen Beseitigen-Informationsgegenwart in Gegenstand-Dateien wie ELF Gebrauch. Der Interaktive Zurückübersetzer erlaubt dem menschlichen Benutzer, mnemonische Symbole für Werte oder Gebiete des Codes in einer interaktiven Sitzung zusammenzusetzen: Menschliche Scharfsinnigkeit, die auf den Zerlegungsprozess häufig angewandt ist, passt menschlicher Kreativität im Codeschreiben-Prozess an.

Zerlegung ist nicht eine genaue Wissenschaft: Auf CISC Plattformen mit Instruktionen der variablen Breite, oder in Gegenwart vom Selbständern des Codes ist es für ein einzelnes Programm möglich, zwei oder mehr angemessene Zerlegung zu haben. Bestimmung, auf welche Instruktionen wirklich während eines Laufs des Programms gestoßen würde, nimmt zum bewiesenen - unlösbares stockendes Problem ab.

Probleme der Zerlegung

Das Schreiben eines Zurückübersetzers, der Code erzeugt, der, wenn gesammelt, genau dieselbe Dualzahl erzeugt, ist nichttrivial; es gibt häufig Unterschiede. Jedoch, selbst wenn eine völlig richtige Zerlegung erzeugt wird, bleiben Probleme, wenn das Programm modifiziert werden soll. Zum Beispiel kann dieselbe Maschinensprachsprung-Instruktion durch den Zusammenbau-Code erzeugt werden, der zu einer angegebenen Position (zum Beispiel springt, um spezifischen Code durchzuführen), oder der durch eine bestimmte Anzahl von Bytes (zum Beispiel springt, um über einen unerwünschten Zweig zu hüpfen). Ein Zurückübersetzer kann nicht wissen, was beabsichtigt ist, und jede Syntax verwenden kann, eine Zerlegung erzeugend, die die ursprüngliche Dualzahl wieder hervorbringt. Jedoch, wenn ein Programmierer Instruktionen zwischen der Sprung-Instruktion und seinem Bestimmungsort hinzufügen will, ist es notwendig, die Operation des Programms zu verstehen, um zu bestimmen, ob der Sprung absolut oder relativ sein sollte, d. h. Ob sein Bestimmungsort an einer festen Position bleiben oder bewegt werden sollte, um beide die ursprünglichen und hinzugefügten Instruktionen auszulassen.

Beispiele von Zurückübersetzern

Ein Zurückübersetzer kann eigenständig oder interaktiv sein. Ein eigenständiger Zurückübersetzer, wenn durchgeführt, erzeugt eine Zusammenbau-Sprachdatei, die untersucht werden kann; ein interaktiver zeigt die Wirkung jeder Änderung, die der Benutzer sofort vornimmt. Zum Beispiel kann der Zurückübersetzer nicht am Anfang wissen, dass eine Abteilung des Programms wirklich Code ist, und behandeln Sie es als Daten; wenn der Benutzer angibt, dass es Code ist, wird der resultierende auseinander genommene Code sofort gezeigt, dem Benutzer erlaubend, es zu untersuchen und weitere Handlung während desselben Laufs zu nehmen.

Jedes interaktive Testhilfeprogramm wird eine Weise einschließen, die Zerlegung des Programms anzusehen, das die Fehler wird beseitigt. Häufig wird dasselbe Zerlegungswerkzeug als ein eigenständiger zusammen mit dem Testhilfeprogramm verteilter Zurückübersetzer paketiert. Zum Beispiel ist objdump, ein Teil des GNUS Binutils, mit dem interaktiven Testhilfeprogramm gdb verbunden.

  • IDA
  • OllyDbg ist ein 32-Bit-Assemblerniveau-Analysieren-Testhilfeprogramm
  • OLIVER und SIMON schließen Zurückübersetzer für den Monteur, das COBOL und PL/1 ein

Siehe auch

  • Kontrollfluss-Graph
  • Datenfluss-Analyse
  • Dekompilierer
  • L. Vinciguerra, L. Testamente, N. Kejriwal, P. Martino und R. Vinciguerra, "Ein Experimentieren-Fachwerk, um Zerlegung und Decompilation Werkzeuge für C ++ und Java", Proc. der 10. Arbeitskonferenz für die Rücktechnik (WCRE) 2003 Zu bewerten.
  • B. Schwarz, S. Debray und G. Andrews, "Zerlegung des Rechtskräftigen Wieder besuchten Codes", Proc. der 9. Arbeitskonferenz für die Rücktechnik (WCRE), Seiten 45-54, 2002.

Links


Philip II aus Spanien / Schlag-Zone
Impressum & Datenschutz