Grin logo
de en es fr
Shop
GRIN Website
Publish your texts - enjoy our full service for authors
Go to shop › Computer Science - Software

Decompiler - Der Stand der Technik im Jahr 2008

Title: Decompiler - Der Stand der Technik im Jahr 2008

Seminar Paper , 2008 , 34 Pages , Grade: 1

Autor:in: C. Pernsteiner (Author), B. Engleder (Author), H. Kreisel (Author)

Computer Science - Software
Excerpt & Details   Look inside the ebook
Summary Excerpt Details

Die nachfolgende Arbeit soll einen Überblick über den aktuellen Stand der Technik zum Thema Decompiling geben. Dazu wird zunächst der Begriff Decompiling gegenüber ähnlichen Begriffen abgegrenzt.

Nach einem Überblick über die Gründe für Decompiling und rechtlichen Aspekten wird der Decompiling-Prozess näher dargestellt und in einzelne Phasen unterteilt. Es wird erklärt welche Vorteile diese Einteilung in einzelne Phasen mit sich bringt.

Zur praktischen Veranschaulichung werden gängige Decompiler-Tools für aktuell relevante Sprachen wie z.B. Java oder .NET vorgestellt. Die Ergebnisse dieser Tools werden mit dem originalen Source Code verglichen um ein Indiz für die Qualität der Tools zu liefern.

Weiters werden vorhandene theoretische Probleme aufgezeigt, die beim Decompiling auftreten können. Ein Überblick über Techniken zum Schutz vor Decompiling rundet diese Arbeit ab.

Excerpt


Inhaltsverzeichnis

1 Einleitung

2 Allgemeines

2.1 Begriffsdefinition Decompiler

2.2 Abgrenzung zu Reverse Engineering / Disassembling

2.3 Gründe für die Verwendung von Decompiling

2.4 Rechtliche Aspekte (Legalität)

3 Der Decompiling Prozess

3.1 Module

3.2 Phasen

4 Probleme beim automatischen Decompiling

4.1 Halteproblem

4.2 Idiome

5 Überblick über ausgewählte Decompiler

5.1 Maschinensprache

5.2 Assembler Code

5.3 Java Bytecode

5.4 .NET assembly, CIL Code

5.5 Skriptsprachen Perl und PHP

5.6 Parallelen und Folgerungen

6 Obfuscation: Schutz vor Decompiling

7 Zusammenfassung

Zielsetzung & Themen

Diese Arbeit bietet einen umfassenden Überblick über den aktuellen Stand der Technik im Bereich des Decompiling. Ziel ist es, den Decompiling-Prozess methodisch zu durchleuchten, die Herausforderungen bei der automatischen Rückgewinnung von Quellcode aus Binärdateien aufzuzeigen und die Eignung verschiedener Programmiersprachen und Plattformen für diesen Prozess zu evaluieren.

  • Grundlagen und Abgrenzung des Reverse Engineering
  • Struktur und Module des Decompiling-Prozesses
  • Theoretische Grenzen: Halteproblem und Idiome
  • Analyse der Decompilierbarkeit von Java, .NET, Assembler und Skriptsprachen
  • Strategien zur Code-Verschleierung (Obfuscation)

Auszug aus dem Buch

4.1 Halteproblem

Ein grundsätzliches und theoretisch es Problem beim Thema Decompiling ist das sogenannte Halteproblem. Zusammenfassend kann dieses Problem folgendermaßen beschrieben werden:

Der Versuch ein Programm zu schreiben, welches überprüft ob ein bestimmtes Programm mit bestimmten Eingabeparametern terminiert ist nicht immer möglich. Es wird nämlich genau dann ein Widerspruch erzeugt, wenn diesem Programm als Eingabeprogramm und als Eingabeparameter das Programm selbst übergeben wird.

Die von Neumann Architektur, welche in allen Intel 80x86 und Pentium CPUs zum Einsatz kommt, unterscheidet im Maschinencode nicht zwischen Daten und Code. Die Verwendung der jeweiligen Bits ergibt sich aus dem Kontext des Programmablaufs. Da ein Compiler normalerweise gültigen Code erzeugt schafft dies beim Ablauf des Programms keine Probleme, beim Dekompilieren können automatische Analyseprogramme allerdings Schwierigkeiten bei der Zuordnung haben. In manchen Fällen muss der Benutzer des Decompilers also manuell entscheiden, welche Bytes als Code, und welche Bytes als Daten zu verwenden sind.

"...this problem is equivalent to the halting problem, as it is impossible to separate data from instructions in a von Neumann architecture that computes both data addresses and branch destination addresses at execution time. [...] The algorithm is proved to be NP-Complete"

Zusammenfassung der Kapitel

1 Einleitung: Diese Einleitung führt in die Thematik ein und skizziert den Aufbau der Untersuchung sowie die Zielsetzung der Arbeit.

2 Allgemeines: Das Kapitel definiert den Decompiler, grenzt ihn vom Reverse Engineering ab und beleuchtet sowohl die Beweggründe für das Dekompilieren als auch die damit verbundenen rechtlichen Aspekte.

3 Der Decompiling Prozess: Hier werden die Modulstruktur eines Decompilers und die einzelnen Phasen – von der Syntaxanalyse bis zur Code-Erzeugung – detailliert erläutert.

4 Probleme beim automatischen Decompiling: Dieses Kapitel behandelt die theoretischen Hürden, insbesondere das Halteproblem und die Schwierigkeiten bei der Interpretation von Idiomen.

5 Überblick über ausgewählte Decompiler: Eine praktische Analyse, die untersucht, wie gut Code aus verschiedenen Quellarten wie Java, .NET, Maschinensprache oder Skriptsprachen wiederhergestellt werden kann.

6 Obfuscation: Schutz vor Decompiling: Dieses Kapitel widmet sich den Schutzmechanismen, die verhindern sollen, dass Software einfach dekompiliert werden kann.

7 Zusammenfassung: Abschließende Betrachtung der Ergebnisse und ein Ausblick auf zukünftige Entwicklungen im Spannungsfeld zwischen Dekompilierung und Schutzmechanismen.

Schlüsselwörter

Decompiler, Reverse Engineering, Disassembling, Quellcode, Binärcode, Halteproblem, Java Bytecode, .NET, Obfuscation, Programmablauf, Code-Erzeugung, Semantische Analyse, Syntaxanalyse, Software Engineering

Häufig gestellte Fragen

Worum geht es in dieser wissenschaftlichen Arbeit primär?

Die Arbeit befasst sich mit der technischen Analyse von Decompilern, die darauf ausgelegt sind, Binärdateien wieder in lesbaren Quellcode zurückzuführen.

Welche Themenfelder stehen im Zentrum der Analyse?

Im Fokus stehen die methodische Vorgehensweise bei der Dekompilierung, die Problematik der Code-Identifikation (Daten vs. Code) sowie die Analyse-Eignung moderner Programmiersprachen.

Was ist das übergeordnete Ziel der Untersuchung?

Ziel ist es, den Decompiling-Prozess in seine Phasen zu zerlegen und aufzuzeigen, unter welchen Voraussetzungen und bei welchen Sprachen eine erfolgreiche Rekonstruktion des ursprünglichen Codes möglich ist.

Welche wissenschaftliche Methode wird in der Arbeit angewandt?

Die Arbeit nutzt eine strukturierte deskriptive Analyse und vergleicht verschiedene Decompiling-Werkzeuge anhand praktischer Code-Beispiele.

Welche Inhalte bilden den Hauptteil?

Der Hauptteil gliedert sich in die theoretischen Grundlagen des Decompiling-Prozesses, die Darstellung technischer Probleme wie das Halteproblem und die vergleichende Untersuchung verschiedener Compiler-Plattformen.

Durch welche Schlüsselwörter lässt sich die Arbeit am besten charakterisieren?

Die wichtigsten Begriffe sind Reverse Engineering, Decompiler, Maschinencode, Quellcode-Wiederherstellung und Obfuscation.

Warum ist das "Halteproblem" für Decompiler so relevant?

Es stellt eine theoretische Grenze dar, da es unmöglich ist, in einer von Neumann Architektur algorithmisch zweifelsfrei zwischen ausführbarem Maschinencode und Daten zu unterscheiden.

Welche Rolle spielt Obfuscation bei der Softwareentwicklung?

Obfuscation dient dazu, den Quellcode durch Transformationen so zu verschleiern, dass eine Dekompilierung erschwert wird, ohne die Funktionalität des Programms zu beeinträchtigen.

Excerpt out of 34 pages  - scroll top

Details

Title
Decompiler - Der Stand der Technik im Jahr 2008
College
University of Linz  (Seminar Software Engineering)
Grade
1
Authors
C. Pernsteiner (Author), B. Engleder (Author), H. Kreisel (Author)
Publication Year
2008
Pages
34
Catalog Number
V141455
ISBN (eBook)
9783640513659
ISBN (Book)
9783640512096
Language
German
Tags
Decompiler Decompiling Obfuscation Assembler Halteproblem Idiome
Product Safety
GRIN Publishing GmbH
Quote paper
C. Pernsteiner (Author), B. Engleder (Author), H. Kreisel (Author), 2008, Decompiler - Der Stand der Technik im Jahr 2008, Munich, GRIN Verlag, https://www.grin.com/document/141455
Look inside the ebook
  • Depending on your browser, you might see this message in place of the failed image.
  • Depending on your browser, you might see this message in place of the failed image.
  • Depending on your browser, you might see this message in place of the failed image.
  • Depending on your browser, you might see this message in place of the failed image.
  • Depending on your browser, you might see this message in place of the failed image.
  • Depending on your browser, you might see this message in place of the failed image.
  • Depending on your browser, you might see this message in place of the failed image.
  • Depending on your browser, you might see this message in place of the failed image.
  • Depending on your browser, you might see this message in place of the failed image.
  • Depending on your browser, you might see this message in place of the failed image.
  • Depending on your browser, you might see this message in place of the failed image.
Excerpt from  34  pages
Grin logo
  • Grin.com
  • Shipping
  • Contact
  • Privacy
  • Terms
  • Imprint