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