Inlämning av Examensarbete / Submission of Thesis

David Eriksson MSE-2002:17, pp. 25. Inst. för programvaruteknik och datavetenskap/Dept. of Software Engineering and Computer Science, 2002.

The work

Författare / Author: David Eriksson
david@2good.nu
Titel / Title: Designing an object-oriented decompiler - Decompilation support for Interactive Disassembler Pro
Översatt titel / Translated title: Design av en objekt-orienterad dekompilator - Dekompilatorstöd för Interactive Disassembler Pro
Abstrakt Abstract:

Decompilation, or reverse compilation, takes a computer program and produces high-level code that
works like the original source code. This makes it easier to understand a computer program when source
code is not available. However, there are very few tools for decompilation available today. This report
describes the design and implementation of Desquirr, a decompilation plug-in for Interactive Disassembler
Pro. Desquirr has an object-oriented design and performs basic decompilation of programs running on
Intel x86 processors.

The low-level analysis uses knowledge about specialized compiler constructs, called idioms, to perform
a more accurate decompilation. Desquirr implements data flow analysis, meaning the conversion from
primitive machine code instructions into code in a high-level language. The major part of the data flow
analysis is the Register Copy Propagation which builds high-level expressions from primitive instructions.
Control flow analysis, meaning to restore high-level language constructs such as if/else and for loops, is
not implemented.

A high level representation of a piece of machine code contains the same information as an assembly
language representation of the same machine code, but in a format that is easier to comprehend. Symbols
such as ?*? and ?+? are used in high-level language expressions, compared to instructions such as ?mul?
and ?add? in assembly language. Two small test cases which compares decompiled code with assembly
language shows promising results in reducing the amount of information needed to comprehend a program.

Populärvetenskaplig beskrivning / Popular science summary: Dekompilering, eller omvänd kompilering, tar ett datorprogram och omvandlar det till högnivåspråk som fungerar som den ursprungliga källkoden. Detta gör det lättare att förstå ett datorprogram när källkod inte finns tillgänglig. Det finns väldigt få verktyg för dekompilering tillgängliga idag. Den här rapporten beskriver design och implementation av Desquirr, en dekomplator-plugin för Interactive Disassembler Pro. Desquirr har en objekt-orienterad design och utför grundläggande dekompilering av program som kör på Intel x86-processorer.
Ämnesord / Subject: Datavetenskap - Computer Science\General
Datavetenskap - Computer Science\Software Engineering
Nyckelord / Keywords: decompilation, reverse engineering, program transformation

Publication info

Dokument id / Document id:
Program:/ Programme Programvaruteknik/Software Engineering
Registreringsdatum / Date of registration: 09/16/2004
Uppsatstyp / Type of thesis: D-Uppsats/Magister/Master

Context

Handledare / Supervisor: Lars Lundberg
Lars.Lundberg@bth.se
Examinator / Examiner: Claes Wohlin
Organisation / Organisation: Blekinge Institute of Technology
Institution / School: Inst. för programvaruteknik och datavetenskap/Dept. of Software Engineering and Computer Science
Inst. för Programvaruteknik och Datavetenskap S-372 25 Ronneby
+46 455 38 50 00
http://www.ipd.bth.se/

Files & Access

Bifogad uppsats fil(er) / Files attached: pt98der_master_thesis.pdf (171 kB, öppnas i nytt fönster)