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 :
بازگشت