• 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