What is New

Want to see all news? Click here.

New Version: 1.7

30 Jun 2014

A new version of the retargetable decompiler has just arrived! It contains many new features and enhancements. Among the most important ones belong added support for decompiling files with no file format containing just raw machine code (like firmware), improved reconstruction of complex data types (such as arrays and structures), and enhanced generation of variable names and symbolic constants. We have also created a Twitter profile for our decompiler.

A list of changes:

  • added support for decompiling files with no file format containing just raw machine code (like firmware). You can try it by selecting the "Raw Machine Code" input type in our decompilation service.
  • added a reconstruction of function names from dynamically linked libraries (DLL) based on ordinal numbers
  • added a reconstruction of variables and constants stored over multiple registers
  • added emission of global variable addresses into the generated source code
  • added support for generating pointers to functions and arrays of function pointers into the generated source code
  • added a detection and reconstruction of RTTI tables when decompiling programs written in C++. When RTTI tables are detected, we emit the class names and methods in comments into the generated source code.
  • added new optimizations:
    • i += 1 and i -= 1 are generated as ++i and --i, respectively
    • simplified the passing of arrays to functions (&array[0] to array)
  • added a renaming of variables based on usual names of parameters of standard-library functions. For example, a variable passed as the first argument of fopen() is named file_path.
  • extended the conversion of constants passed to functions from standard libraries to their symbolic names. For example, instead of signal(2, 1), we now generate signal(SIGINT, SIG_IGN).
  • improved the reconstruction of complex data types, such as arrays and structures
  • improved the reconstruction of local variables
  • improved the support for decompiling programs built with Microsoft Visual C++ (reconstruction of functions, arguments, and other program constructs)
  • improved the default generator of variable names. Instead of fruit names, it now emits variables names gX, aX, and vX for global variables, function parameters, and other local variables, respectively.
  • improved the reconstruction of switch statements
  • improved the detection and use of debugging information in the DWARF format (the original language and used compiler)
  • it is now possible to select the format of the generated call and control-flow graphs (the supported formats are SVG, PNG, and PDF)
  • fix the generation of continue/break statements to outer loops (in C, continue/break statements only apply to the innermost loop)
  • fix the reconstruction of printf() and scanf() calls with more exotic string formats
  • many additional small enhancements and bug fixes