Skip to content

Releases: B2R2-org/B2R2

v0.10.1

Choose a tag to compare

@sangkilc sangkilc released this 17 Jun 07:32
4938b02

0.10.1 (2026-06-17)

⚠️ There are many breaking changes.

Added

  • Add a stable, format-agnostic BinFile API with format-agnostic section,
    segment, symbol, relocation, and exception types (#376).
  • Add a format-agnostic DWARF module extracted from format-specific code (#376).
  • Add IsPIE and IsBaseRelative properties to BinFile (#371).
  • Add InterpreterPath and BinFileKind to the stable BinFile API (#376).
  • Expose the ELF PHDR table address and size (#376).
  • Add a code-mode and linkage section API to BinFile (#376).
  • Parse x64 exception frames from PE .pdata/.xdata sections (#378).
  • Parse classic (FH3) and compressed (FH4) C++ catch handlers in PE (#378).
  • Parse Mach-O exception info from __eh_frame/__gcc_except_tab and compact
    unwind (#377).
  • Parse Mach-O dyld fixups, resolve dyld bind library names, and support ARM64E
    fixups (#374).
  • Implement basic functions and expand parser coverage for WASM (#372).
  • Implement PE relocated address lookup (#375).
  • Add support for recovering the CFG of a single target function (#345).
  • Support function pointers in jump tables.
  • Add a weak bucket table to Core and use weak buckets for LowUIR hash-consing
    (#367).
  • Add getVersion to Core.
  • Enable changing the font size in the GUI linear view.

Changed

  • Internalize format-specific types and build symbol, name resolver, and
    relocation lookups on the stable API (#376).
  • Decouple the MiddleEnd CFG builder and BinExplore section views from
    format-specific types (#376).
  • Split optional capabilities out of the IBinFile interface (#368).
  • Rename the linkage table to the import table (#376).
  • Suffix BinSectionKind cases with "Section" and rename several BinFile
    interfaces and predicates for clarity (#376).
  • Harden BinFilePointer construction and fix the GetBoundedPointer contract
    (#373, #369).
  • Refactor SSA types and refine LowUIR hash-consing APIs and AST construction
    (#367).
  • Fix LowUIR parser support for SideEffect Unlock and CastKind (#366, #365).
  • Refactor and clean up Core modules: BitVector, ProgramPoint, AddrRange,
    BytePattern, LEB128, SortedList helpers, UniqueQueue, and NoOverlapIntervalMap
    (#357, #358, #356, #359, #354, #360, #361, #362).
  • Fix Core bugs in HexString/ByteArray.toHexString formatting, Addr zero-padding,
    AddrRange equality, and the ISA string constructor (#353, #347, #355, #346,
    #348).
  • Use Mach-O initprot instead of maxprot for VM-mapped region permissions (#370).
  • Remove RecoveryMission from the MiddleEnd.
  • Fix Intel x64 DIV, CMPXCHG8B, and crc32 (including bitReflect temp value)
    (#340, #337, #338, #339).
  • Fix FS3389 warnings (#343).
  • Refactor GUI theme settings and font scaling for UI consistency.

v0.10.0

Choose a tag to compare

@sangkilc sangkilc released this 19 May 03:08
43def48

0.10.0 (2026-05-19)

Added

  • Add a new Avalonia-based GUI for BinExplore.
  • Add publishing scripts and platform assets for BinExplore.
  • Add the MiddleEnd.Executor module with common executor and state accessor
    interfaces.
  • Add a concrete executor with a revised ConcEval public API.
  • Add the MiddleEnd.SymbEval module with symbolic expressions, symbolic memory,
    SMT-LIB serialization, solver integration, Z3 support, call hooks, and run
    timeout handling.
  • Add static value fact extraction for LowUIR.
  • Add PE section header access and section-name lookup helpers in BinFile.
  • Add improved edge routing and post-processing support to the visualization
    module.

Changed

  • Replace the old BinExplore WebUI with the new native GUI.
  • Refactor BinExplore sessions, tabs, toolbar, status bar, and rendering state.
  • Improve BinExplore CFG, hexdump, minimap, and linear view rendering,
    navigation, caching, and synchronization.
  • Refactor ConcEval around the new executor and state accessor abstractions.
  • Improve FrontEnd disassembly delimiters and Intel disassembly grouping.
  • Fix unmatchable register patterns caused by case mismatches.
  • Make ELF symbol search stricter.
  • Refactor and optimize visualization modules, including layer assignment,
    barycenter handling, edge crossing detection, and edge drawing.
  • Fix visualization bugs in coordinate assignment, self-cycle edge margins, and
    edge post-processing.
  • Improve visualization algorithms.
  • Improve MiddleEnd error handling in basic blocks.
  • Update documentation, package descriptions, and author information.

v0.9.1

Choose a tag to compare

@sangkilc sangkilc released this 05 Sep 02:34
cd768e7

0.9.1 (2025-09-05)

Added

  • Support more insturctions in MIPS

Changed

  • Fix lifting errors in MIPS
  • Fix Core ISA active patterns
  • Publish nuget packages directly from CI
  • Upgrade FsReadLine

v0.9.0

Choose a tag to compare

@sangkilc sangkilc released this 28 Aug 04:45
2d7e212

0.9.0 (2025-08-28)

Added

  • Add PA-RISC 64-bit parser.
  • Add s390/s390x parser.
  • Add EVM CFG recovery support.
  • Introduce ExprList expression to LowUIR and remove Cons and Nil.
  • Introduce new APIs for front-end and middle-end modules.

Changed

  • Simplify LowUIR AST.
  • Use and employ new coding conventions for F#.
  • Use latest FsOptParse.
  • Turn off local optimizer in BBLFactory.
  • Update BitVector APIs.
  • Fix several bugs in BinFile.
  • Fix several lifting bugs.
  • Rename many types in BinFile.

v0.8.0

Choose a tag to compare

@sangkilc sangkilc released this 28 Mar 14:13
61eefe6

0.8.0 (2025-03-28)

Added

  • More instruction supports for Intel.
  • Add new dominator algorithms.
  • Add initial PA-RISC support.

Changed

  • Use .NET 9 (and F# 9): Our framework is not compatible with prior
    versions of .NET.
  • Fix many lifting/parsing bugs.
  • Refactor BinFile modules to make them more modular.
  • Fix BinGraph module bugs and make it more intuitive.
  • Redesign the middle-end module and now publicize it. It now uses more
    parallelism to recovery CFGs.

v0.7.0

Choose a tag to compare

@sijung07 sijung07 released this 01 Apr 05:09
6253b31

0.7.0 (2024-03-26)

Added

  • More instruction supports for Intel, AArch64, PPC, and RISCV.
  • Support Intel's AT&T syntax.
  • Support lazy loading of ELF metadata.
  • Handle dwarf action DW_CFA_same_value
  • Add a new rear-end module, Transformer, which allows users to transform binary code into another form.
  • Add initial SPARC support.
  • Add initial SH4 support.

Changed

  • Use .NET 8 (and F# 8): Our framework is not compatible with prior versions of .NET.
  • Fix many lifting/parsing bugs for Intel, PPC, AArch64, and RISCV.
  • Refactored many modules. Quite many modules/classes have been renamed.
  • Improve XML documentation.
  • Fix many bugs in the ELF parser.
  • Add more unit tests.

v0.6.0

Choose a tag to compare

@sangkilc sangkilc released this 29 Jun 13:04
f85c552

0.6.0 (2022-06-29)

Note

Since v0.5.0, our middle-end is closed-sourced, but we will publicize it sooner or later. So please stay tuned.

Added

  • More instruction supports for MIPS
  • More instruction supports for Intel
  • Added support for WASM (thanks to @kimdora)
  • Added several more classes in the Core module

Changed

  • Now we use .NET 6 (and F# 6). Our framework is not compatible with .NET 5.
  • Fixed MIPS exception frame parser
  • Optimized ELF parser for loading callsite tables
  • Fixed several bugs in Intel assembler
  • Changed ConcEval's interface
  • We now avoid using non-standard register sizes, such as 2<rt> and 3<rt>; we only use sizes multiple of 8 (e.g., 8, 16, 32, 64) or size 1. For those register variables whose size is non-standard, e.g., FTOP in Intel, we assign larger size for the variable.
  • Fixed several bugs in Intel and MIPS lifters
  • Fixed several bugs in BinFile module (ELF and PE)
  • Fixed several bugs in the middle-end (such as tail-call detection logic, etc.)

v0.5.0

Choose a tag to compare

@sangkilc sangkilc released this 22 Oct 11:36
c970898

0.5.0 (2021-10-22)

Note

We have made significant changes in our middle-end (CFG recovery, and function
identification, etc.) engines for this version, and we are still improving it.
The current version is stable enough, but we are actively changing the
implementation while doing some internal research, which is hoding us back for
open-sourcing it. Hence, we decided to partly publicize our tool (everything but
the middle-end engine). We always welcome PRs for our front-end modules 😄

We may bump few more versions before making everything public, but we will
eventually open-source everything. So please stay tuned!

Added

  • Handle ELF exception frames
  • Introduce new CFG recovery engine
  • Introduce BinaryPointer type which allows accessing non-addressable region of binary.
  • Add few more instruction support for x86-64 and ARMv7
  • Add a RearEnd.Launcher, which is a .NET CLI tool. You can now install B2R2 by typing dotnet tool install -g B2R2.RearEnd.Launcher.
  • Add support for AVR architecture

Changed

  • MiddleEnd has been largely rewritten
  • Module and function names largely changed.
  • Hash-consing is now controlled with build macro HASHCONS
  • MiddleEnd.ConcEval works with base address changes
  • Local IR optimizer has been rewritten
  • Optimized data-flow engine

v0.4.0

Choose a tag to compare

@sangkilc sangkilc released this 02 May 06:25
54bc9c7

0.4.0 (2020-05-02)

Added

  • Add support for Mach-O relocation.
  • Add support for COFF object parsing.
  • Add support for floating-point operations.
  • Add several missing Intel instructions.
  • Add a basic dataflow framework.
  • Add a partial support for Intel assembler. We will fully implement Intel
    assembler in the next version.

Changed

  • Fix various liting/parsing bugs.
  • Fix dominator algorithm bug.
  • Fix various BinGraph bugs.
  • Improve Web UI performance.
  • Fix a zooming bug in the Web UI.
  • Update OptParse version.
  • Remove manually-encoded Intel constants, which will slightly slow down our
    front-end, but it will improve the maintanence cost.
  • Clean up the REPL app, and make it more generic for future use.
  • Split MiddleEnd from BinGraph.

v0.3.1

Choose a tag to compare

@sangkilc sangkilc released this 11 Jan 02:04
3472c13

0.3.1 (2020-01-11)

Added

  • Add boilerplate code for assembler.
  • Add Nil to LowUIR to correctly handle cons cells.
  • Handle delayed import directory table for PE files.
  • Add basic EVM bytecode support.

Changed

  • Fix and refactor simple calculator language implementation.
  • Fix Mach section parsing bug.
  • Fix ARM translation errors.
  • Remove assumption about callee names.
  • Fix bitectors to generally handle arbitrary sizes.
  • Fix several visualization issues.
  • Rewrite completely the web user interface from scratch.