Skip to content

Boomerang v0.5.0

Compare
Choose a tag to compare
@ceeac ceeac released this 11 Jul 11:46
· 53 commits to master since this release

First release to include the new Capstone-based instruction decoders, and support for compiling on macOS.

Changelog:

  • Fixed: Crashes when reading malformed SSL specification files.
  • Fixed: Crashes when specifying malformed command line arguments for boomerang-cli.
  • Fixed: Crashes when decoding unrecognized floating point branches on SPARC.
  • Fixed: Crashes when loading ELF files with malformed relocation entries.
  • Fixed: Crash when decoding instructions with multiple instruction prefixes in some cases.
  • Fixed: Crash when decompiling x86 binaries that contain specific variants of the JP or JNP instructions.
  • Fixed: Crash when decompiling x86 binaries that contain functions where the first instruction is BSF or BSR.
  • Fixed: Crash when decompiling x86 binaries that contain functions where the first instruction is a string instruction.
  • Fixed: Crash when decompiling x86 binaries that contain instructions accessing FS or GS segment registers.
  • Fixed: Crash when decompiling SPARC binaries containing calls to helper functions.
  • Fixed: Crash when decompiling tail-recursive functions.
  • Fixed: Crash when decompiling functions containing dangling phi arguments in some cases.
  • Fixed: Crash when decompiling branches that have the same destination for both branch edges.
  • Fixed: Crash when decompiling binaries containing noreturn calls in some cases.
  • Fixed: Crash when decompiling code that temporarily stores the address of an imported function before a call.
  • Fixed: Crash when generating code for Basic Bocks containing a single jump.
  • Fixed: Crash when removing an empty jump in a delay slot on SPARC.
  • Fixed: Crash when analyzing data-flow for functions consisting of a single Basic Block.
  • Fixed: Crash when analyzing data-flow for functions where the entry BB is not the BB with the lowest address.
  • Fixed: Crash when analyzing data-flow for recursive functions after removing Basic Blocks from the same function.
  • Fixed: Crash when accessing deleted call statement via callee function.
  • Fixed: Potential crash when loading ELF files with a large number of sections.
  • Fixed: Potential crash when decompiling non-constant register expressions.
  • Fixed: Potential crash when analyzing delayed branches on SPARC where the branch and the delay slot cannot be swapped.
  • Fixed: Potential crash when analyzing dataflow for functions where the entry Basic Block is not at index 0.
  • Fixed: Potential crash when simplifying expressions that divide by zero.
  • Fixed: Memory leak when analyzing switch statements.
  • Fixed: Failure to load and disassemble 16-bit DOS MZ and LE executables.
  • Fixed: Failure to load DOS4GW LX or LE executables.
  • Fixed: Missing guard expressions when processing overlapped registers for assignments with guards.
  • Fixed: Unsigned integral types mistaken for signed integral types when parsing signature or symbol information.
  • Fixed: Signature promotion ignored '-nP' switch.
  • Fixed: Wrong decompilation of "Pass by pointer/reference" values (e.g. foo(&local0) was emitted as foo(esp-32)).
  • Fixed: Wrong decompilation of parameter types in function signatures in some cases.
  • Fixed: Wrong decompilation of x86 binaries containing a cmovCC-type instruction.
  • Fixed: Wrong decompilation of x86 binaries containing jumps that do not depend on flag registers.
  • Fixed: Wrong decompilation of x86 binaries using the sahf instruction in floating point comparisons.
  • Fixed: Wrong decompilation of x86 binaries containing multiple string instructions in a single Basic Block.
  • Fixed: Wrong decompilation of ppc binaries using the LR or CTR register in calls or switch statements.
  • Fixed: Wrong decompilation of SPARC branches where the branch and the delay slot cannot be swapped.
  • Fixed: Wrong decompilation of loops containing break or return statements in some cases.
  • Fixed: Unnecessary union types in high level code due to non-symmetric type meet operator.
  • Fixed: Missing rotation amount for left and right rotates in high level code.
  • Fixed: High level code output for bit extraction operator on right hand side of assignments.
  • Fixed: Functions used as members in global function pointer arrays before they were declared.
  • Fixed: Memory leaks in parsers.
  • Fixed: Missing high-level code when decompiling via boomerang-gui.
  • Feature: The x86 decoder now recognizes a larger subset of the x86 instruction set.
  • Feature: Added support for Code Generator plugins.
  • Feature: Added support for Type Recovery plugins.
  • Feature: Added support for Symbol Provider plugins.
  • Feature: Added support for Decoder plugins.
  • Feature: Added support for FrontEnd plugins.
  • Feature: Added support for compiling on macOS (10.13+).
  • Feature: Added experimental support for loading ST20 .bin executable images.
  • Improved: Performance of decoding x86 instructions.
  • Improved: General processing of overlapped registers (not just hard-coded ones).
  • Improved: Better high level code output quality for x86 binaries due to more instructions being recognized.
  • Improved: Better high level code output quality for PPC binaries due to more accurate instruction semantics.
  • Improved: Type Analysis of code containing ternary ?: operator.
  • Improved: Analysis of calls via function pointers.
  • Improved: Ordering of case labels in high level switch statements.
  • Improved: High level code output for increments of pointers to non-32 bit data.
  • Improved: Removal of unnecessary parameters for self-recursive functions.
  • Improved: Unit test coverage.
  • Improved: Regression test coverage.
  • Changed: Replaced old pentium (x86) decoder by x86 decoder using libcapstone for decoding instructions.
  • Changed: Replaced old PPC decoder by x86 decoder using libcapstone for decoding instructions.
  • Changed: Replaced old SSL parser by new GNU flex+bison SSL2 parser.
  • Changed: Replaced old C signature parser by new GNU flex+bison C signature parser.
  • Removed: HP SOM binary file loader.
  • Removed: Palm OS binary loader.
  • Removed: Broken MIPS support.
  • Removed: Broken M68k support.
  • Removed: Broken HP PA/RISC support.
  • Removed: Ability to build libboomerang as a static library.
  • Technical: Improved compilation times and memory usage while compiling.