What are the features of B2R2?
Written purely in F#, providing all the syntactic goodies for writing program analyzers, such as pattern matching, algebraic data types, and etc.
B2R2 naturally supports pure parallelism, thanks to F#, and highly optimized for parsing and lifting optimized IR statements.
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!
B2R2 runs on any OS, such as Linux, macOS, and Windows, as long as .NET Core supports it.
Although B2R2 is written in F#, it can interoperate well with other languages, such as Python and C#.
Since B2R2 is MIT licensed, you can even use it commercially!
Building B2R2 is as easy as just typing
dotnet build in
your terminal! No dependency hell. It just works!
Please read carefully the contribution guideline before you create a pull request.
B2R2 is a binary analysis framework, thus, the name is related to "binary" and "reversing". In fact, both "B" and "2" stand for binary, and "R" means reversing. Originally, the name of our framework was B2-R2, which was named after R2-D2, a famous fictional robot appeared in the Star Wars. However, we decided to omit the dash (-) as .NET does not allow it in identifiers (or namespaces) anyways.
Yes, it is inspired by Bagua. The two robots facing each other at the center of the logo resembles the Tai Chi symbol of Bagua. In Taoism, every object in the universe is considered to have their own energy (or force; to use the Star Wars terminology). The energy can be either negative or positive, which is called Yin and Yang, respectively. The concept of Yin and Yang is strikingly similar to "binary", because two seemingly opposite binary values (0 and 1) can form any computations that a computer can perform. The repeated B2R2 letters appeared in the logo also represent Yin and Yang (or binary) as its color alternates.