DocumentCode
2330362
Title
SmartDec: Approaching C++ Decompilation
Author
Fokin, Alexander ; Derevenetc, Egor ; Chernov, Alexander ; Troshina, Katerina
Author_Institution
Cybern. Dept., Moscow State Univ., Moscow, Russia
fYear
2011
fDate
17-20 Oct. 2011
Firstpage
347
Lastpage
356
Abstract
Decompilation is a reconstruction of a program in a high-level language from a program in a low-level language. Typical applications of decompilation are software security assessment, malware analysis, error correction and reverse engineering for interoperability. Native code decompilation is traditionally considered in the context of the C programming language. C++ presents new challenges for decompilation, since the rules of translation from C++ to assembly language are far more complex than those of C. In addition, when decompiling a program that was originally written in C++, reconstruction of C++ specific constructs is desired. In this paper we discuss new methods that allow partial recovery of C++ specific language constructs from a low-level code provided that this code was obtained from a C++ compiler. The challenges that arise when decompiling such code are described. These challenges include reconstruction of polymorphic classes, class hierarchies, member functions and exception handling constructs. An approach to decompilation that is used to overcome these challenges is presented. Smart Dec, a native code to C++ decompiler that is being developed by the authors at Select LTD is presented. It reconstructs expressions, function arguments, local and global variables, integral and composite types, loops and compound conditional statements, C++ class hierarchies and exception handling constructs. An empirical study of the decompiler is provided.
Keywords
C++ language; error correction; exception handling; invasive software; open systems; program compilers; reverse engineering; C++ decompilation; SmartDec; class hierarchies; error correction; exception handling; high-level language; interoperability; low-level language; malware analysis; member functions; native code decompilation; polymorphic classes; program reconstruction; reverse engineering; software security assessment; Assembly; Computer languages; Lattices; Layout; Reverse engineering; Runtime; Software; C++; Class Hierarchy Reconstruction; Decompilation; Exception Reconstruction; Reverse Engineering;
fLanguage
English
Publisher
ieee
Conference_Titel
Reverse Engineering (WCRE), 2011 18th Working Conference on
Conference_Location
Limerick
ISSN
1095-1350
Print_ISBN
978-1-4577-1948-6
Type
conf
DOI
10.1109/WCRE.2011.49
Filename
6079860
Link To Document