B2R2 v0.3 releases: useful algorithms, functions, and tools for binary analysis
B2R2 is a collection of useful algorithms, functions, and tools for binary analysis, written purely in F# (in .NET lingo, it is purely managed code). B2R2 has been named after R2-D2, a famous fictional robot appeared in the Star Wars. In fact, B2R2’s original name was B2-R2, but we decided to use the name B2R2 instead because .NET does not allow dash (-) characters in identifiers (or namespaces). The name essentially represents “binary” or “two”: “binary” itself means “two” states anyway. “B” and “2” mean “binary”, and “R” indicates reversing.
- B2R2 is analysis-friendly: it is written in F#, which provides all the syntactic goodies for writing program analyzers, such as pattern matching, algebraic data types, and etc.
- B2R2 is fast: it has a fast and efficient front-end engine for binary analysis, which is written purely in a functional way. Therefore, it naturally supports pure parallelism for binary disassembling, lifting and IR optimization.
- B2R2 is easy to play with: there is absolutely no dependency hell for B2R2 because it is a fully-managed library. All you need to do is to install .NET Core SDK, and you are ready to go! Native IntelliSense support is another plus!
- B2R2 is OS-Independent: it works on Linux, Mac, Windows, and etc. as long as .NET core supports it.
- B2R2 is interoperable: it is not bound to a specific language. Theoretically, you can use B2R2 APIs with any CLI supported languages.
- Functional First
Written purely in F#, providing all the syntactic goodies for writing program analyzers, such as pattern matching, algebraic data types, and etc.
- Fast Frontend
B2R2 naturally supports pure parallelism, thanks to F#, and highly optimized for parsing and lifting optimized IR statements.
- No Dependency
There is absolutely no dependency hell for B2R2. So it is easy to play with. All you need to do is to install .NET Core SDK, and you are ready to go!
- OS Independent
B2R2 runs on any OS, such as Linux, macOS, and Windows, as long as .NET Core supports it.
- Language Agnostic
Although B2R2 is written in F#, it can interoperate well with other languages, such as Python and C#.
- Open Source
Since B2R2 is MIT licensed, you can even use it commercially!
- Add a demangler module for both Itanium and MS types.
- Add several CFG-related lenses to smoothly transform a certain graph into
- Start supporting ARMv7 SIMD instructions.
- Add a simple REPL for LowUIR.
- Add a simple calculator language for BinExplorer.
- Fix ARMv7 translation errors (close to stable now).
- Fix subtle errors in ELF parsing (GitHub issue #25)
- Fix visualization bugs.
- Redesign many parts in BinGraph modules and their APIs.
- Fix graph building logic to handle ARM/Thumb switching.
- Refactor WebUI modules.
- Update disassembly modules to be able to decompose assembly statements into
Copyright (c) SoftSec Lab. @ KAIST, since 2016