Download presentation
Presentation is loading. Please wait.
Published byQuincy Duggan Modified over 9 years ago
1
Decompilation of Binary Programs Christina Cifuentes & K. John Gough School of Computing Science Queensland University of Technology Presented by Conny Chan
2
Overview Usage of decompiler Phases of the decompiler Front-end, UDM, Back-end The decompiling system Signature generator Conclusion Discussion
3
Perform inverse process of a compiler Usage: Maintenance of Code Lost code recovery Migration of application to new HW platform. Translation of the obsolete code into new code. Software Security Malicious code detection Reverse Compiler Binary codeHLL program
4
Note in advance: Decompiler in this article: Experimental decompiler for the DOS OS Intel i80286 architecture Read.com and.exe files Produce C programs as output.
5
Decompiler Structure Binary Program Front-end (machine dependent) UDM (analysis) Back-end (language dependent) HLL program
6
The Front-end Binary Program Virtual Memory LoaderParser 1. Low-level Intermediate code 2. Control flow graph Semantic Analysis
7
The Semantic Analysis Performs idiom analysis e.g. type propagation. E.g. long variable found at –1 to –4. neg dx neg ax sbb dx, 0 neg dx:ax [bp-2] … [bp-4] merged[bp-2]:[bp-4]
8
The Universal Decompiling Machine (UDM) 1. Low-level Intermediate code 2. Control flow graph UDM Data Flow Analysis Control Flow Analysis 1. High-level Intermediate code 2. Structured control flow graph
9
The Back-end 1. High-level Intermediate code 2. Structured control flow graph Restructuring HLL Code Generation HLL Program
10
The HLL code generation Defines: Global variables Emits code for each function In each function: Comments of such procedures Variables and procedures named in loc1, proc2, etc.
11
The Decompiling System Decompiler (dcc) Signature Generator (dccSign)
12
Signature Database Signature Generator (dccSign) Signature Database Compiler Signatures Library Signatures Decompiler (dcc) Extract Signatures e.g. printf(), scanf() If a library function matched, replaced by the library name instead of analyzed by dcc.
13
Signatures Library Signature A series of instructions that identifies library function for a compiler. Compiler Signature A series of instructions that identifies a particular version of a compiler.
14
Signature Checker Determined if known compiler is used. Check first n bytes of instructions with pattern-matching Decompiler (dcc) Signature Checker
15
Conclusion Present one way for decompiling binary program. Prove the feasibility of writing a decompiler for a contemporary machine architecture.
16
Discussion Is decompilation legal?
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.