Changelog

Version 2.0 (2020-12-30)
  • big feature: support x86-64 aka x64 aka AMD64
  • big feature: support x87 FPU instructions
  • big feature: support AARCH64
  • big feature: convert the global phase to streaming to process large binaries
  • feature: add option “–output-dir” to specify output directory
  • feature: unify the parameter types of multiple calls to the same function
  • feature: understand printf/scanf format strings
  • feature: add regression tests in public decompiler-subjects repo
  • feature: convert division by multiplication to proper division
  • feature: add unset registers as parameters to current signature
  • feature: support ‘noReturn’, ‘noMemoryRead’ and ‘noMemoryWrite’ in function signatures
  • feature: improve modeling of noReturn function calls
  • feature: propagate memory values between blocks
  • feature: support Mach-O AARCH64 binaries
  • feature: load integer and floating point literals from read-only areas
  • feature: allow the user to specify read-only ranges
  • feature: support linux based ‘int 80’ and ‘syscall’ syscalls
  • feature: improve MS-DOS BIOS interrupt detection
  • feature: alternative implementation to convert local stack area to registers which copes better with overlapping access
  • feature: multiple performance improvements
  • change: to not create type information about local memory if this memory is later converted to registers
  • change: use “” for empty string literals of the type is known to be a char pointer
  • change: mark entry and exit block in output
  • change: do not print “return” for void functions
  • change: add predefined register values for MS-DOS COM format
  • change: use symbols for globals from the binary
  • change: a large amount of smaller transformations like “UNSIGNED_EXTEND(x) == UNSIGNED_EXTEND(y)” to “x == y”
  • fix: support binaries which contain multiple symbols for the same address
  • fix: remove some extra cases of unused variable in complex SSA situations
  • fix: treat chars with high bit as binary for reading string literals
  • fix: do not propage values which are too complex
  • fix: make various outputs more repeatable
  • fix: support binaries with sections which have gaps between them
  • fix: do not transform a+n1 n2 to a n2-n1 since it is not the same in general
  • fix: support for stack parameters which take more than one stack slot
  • fix: support recent JDK releases
  • fix: better support of code which runs into the end of the code section
  • fix: a lot of other bug fixes

Version 1.3 (2012-09-28)

  • big feature: add a graphical user interface
  • feature: add support for MS-DOS COM file format
  • feature: add –treat-unknown-files-as-ms-dos-com command line option
  • feature: add the concept of holdec home where executable-independent information is stored
  • feature: add –home command line option
  • feature: add the ability to specify signature files for libraries; add –load-libs command line option
  • fix: some 16bit opcode issues
  • fix: recognize some more i386 opcodes as nops
  • fix: show C like signature for decompiled functions
  • change: add a dummy return block if the function has no return

Version 1.2 (2012-06-07)

  • feature: support (in various levels) hopefully all x86 opcodes excluding FPU, x64, MMX, SSE
  • feature: add –help command line option
  • feature: add –hide-addresses command line option
  • feature: -c supports now multiple functions which are matched on function name with a regexp
  • feature: differ between three different types of undefined values: cpu opcode results in undefined value, not modeled by the decompiler and trashed by a function call
  • feature: add new type ‘bit’ to the external type system
  • feature: simplify cond?0:1 to BIT_TO_INT(!cond) and cond?1:0 to BIT_TO_INT(cond)
  • feature: simplify x-y>42 to x>y+42
  • feature: a new file ‘symbol_table.txt’ is written in current directory after each run
  • feature: support ‘pc’ in the m68k code
  • change: use register names with two letters if required e.g. ‘reg_da’
  • change: replace builtin functions prefix from ‘intern_’ to ‘holdec
  • change: create names according their definition place; this should make generated names more repeatable
  • change: rework how concrete numbers are treated internally
  • change: treat signed and unsigned comparisons different internally
  • change: format numbers depending on the context (bit context -> unsigned hex, signed context -> signed decimal, unsigned and unknown context -> unsigned decimal)
  • change: rework the SSA generation to use an algorithm based on Aycock and Horspool
    change: do not convert tail controlled loops with a fixed number of iterations to a for(…) loop
  • fix: only issue a warning and do not die if a jump with a constant false condition is removed
  • fix: add dummy values for local->register converted variables without an initial assignment

Version 1.1 (2012-03-24)

  • Feature: loader for PE (Portable Executable) files
  • Feature: new command line option –info
  • Feature: new command line option –repeatable
  • Feature: rework list of available commands (-c on the command line)
  • Feature: allow function names in the activeFunction section
  • Feature: allow function names in the function specific part
  • Change: more compact output on asm line processing
  • Fixes: a large amount of them
]]>

Leave a Reply

Your email address will not be published. Required fields are marked *