
B2R2 is a fully managed binary analysis framework written in F#. It provides a rich set of algorithms, functions, and tools for reverse engineering, program analysis, and binary-level inspection.

B2R2 is a fully managed binary analysis framework written in F#. It provides a rich set of algorithms, functions, and tools for reverse engineering, program analysis, and binary-level inspection.
The name B2R2 takes inspiration from R2-D2, the iconic robot from Star Wars. Originally named B2-R2, the project later adopted the dash-free form B2R2 because .NET identifiers and namespaces do not allow hyphens. The name reflects the project's purpose: "B" and "2" suggest binary and two-state computation, while "R" stands for reversing. In short, B2R2 is built for binary reversing.
B2R2 is analysis-friendly: it is written in F#, a language well suited for building program analyzers thanks to features such as pattern matching, algebraic data types, and expressive functional abstractions.
B2R2 is fast: its core binary analysis engine is designed for efficiency and written in a functional-first style. This makes it a natural fit for pure parallelism across common analysis tasks such as instruction lifting and CFG recovery.
B2R2 is easy to use: as a fully managed library, it avoids complicated native dependency setup. Install the .NET SDK, and you are ready to go. Native IntelliSense support also makes the APIs easier to explore.
B2R2 is OS-independent: it works on Linux, macOS, and Windows, as well as any other platform supported by .NET.
B2R2 is interoperable: it is not tied to a single programming language. In principle, B2R2 APIs can be used from any CLI-supported language.
B2R2 supports instruction parsing, binary disassembly, assembly, control-flow recovery, and other core building blocks for binary analysis. It also includes several user-facing command-line tools comparable to readelf and objdump, while remaining platform-agnostic. B2R2 currently supports four binary file formats: ELF, PE, Mach-O, and WebAssembly.
The table below summarizes the features currently supported by B2R2. Some areas are still in progress, and contributions are welcome. Before opening a pull request, please make sure to read our contribution guideline.
| CPU | Docs | Ins Parsing | Disasm | Lifting | CFG Recovery | Assembly |
|---|---|---|---|---|---|---|
| x86 | :full_moon: | :full_moon: | :full_moon: | :full_moon: | :full_moon: | :full_moon: |
| x86-64 | :full_moon: | :full_moon: | :full_moon: | :full_moon: | :full_moon: | :full_moon: |
| ARMv7 | :full_moon: | :full_moon: | :full_moon: | :full_moon: | :first_quarter_moon: | :new_moon: |
| ARMv8 (AArch64) | :full_moon: | :full_moon: | :full_moon: | :full_moon: | :first_quarter_moon: | :new_moon: |
| MIPS32 | :full_moon: | :full_moon: | :full_moon: | :full_moon: | :first_quarter_moon: | :new_moon: |
| MIPS64 | :full_moon: | :full_moon: | :full_moon: | :full_moon: | :first_quarter_moon: | :new_moon: |
| EVM | :full_moon: | :full_moon: | :full_moon: | :full_moon: | :full_moon: | :new_moon: |
| TMS320C6000 | :full_moon: | :full_moon: | :full_moon: | :new_moon: | :first_quarter_moon: | :new_moon: |
| AVR | :full_moon: | :full_moon: | :full_moon: | :full_moon: | :first_quarter_moon: | :new_moon: |
| PA-RISC | :full_moon: | :full_moon: | :full_moon: | :new_moon: | :first_quarter_moon: | :new_moon: |
| PPC32 | :full_moon: | :full_moon: | :full_moon: | :full_moon: | :first_quarter_moon: | :new_moon: |
| SPARC | :full_moon: | :full_moon: | :full_moon: | :full_moon: | :first_quarter_moon: | :new_moon: |
| SH4 | :full_moon: | :full_moon: | :full_moon: | :new_moon: | :first_quarter_moon: | :new_moon: |
| RISC-V | :full_moon: | :full_moon: | :full_moon: | :full_moon: | :first_quarter_moon: | :new_moon: |
| S390 | :full_moon: | :full_moon: | :full_moon: | :new_moon: | :first_quarter_moon: | :new_moon: |