Binary Ninja Blog

Open Source Architectures

Vector 35 has a history of releasing lots of open source. We not only released the entire Binary Ninja API under the MIT license, but all API docs, and user docs as well. We continue to release high quality official plugins under open source licenses and even released the entire python prototype of Binary Ninja!

That said, we’ve long planned on doing even more and I’m pleased to announce that today we’re publishing the first of several of our internal core architectures: ARMv7/thumb2 and Arm64 (aarch64) under an Apache 2.0 license! These join our already open source PPC architecture, and will be followed up by our remaining core architectures: x86, x64, and MIPS architectures over the next few weeks.

Why Open Source?

Contributing to the open source community that we benefit from seems like the obvious thing to do. Not only to give back, but we also believe it creates a better experience for our users. It’s now easier than ever for the community to extend and customize our architectures in ways we couldn’t have predicted. One of our top priorities has always been to create a platform upon which others build. Rather than maintaining official support for every architecture variant or feature under the sun, open sourcing our architectures lets users easily adapt them for their specific needs while still taking advantage of our powerful Intermediate Languages all the way up to our HLIL decompilation.

AArch64 Repository

How do I contribute?

Just issue a pull-request! If you haven’t signed the CLA for the Binary Ninja API you’ll be asked to since it after submitting your first PR and that’s it! You can also follow the instructions in each repository to build the architecture yourself and test the replacement locally, or wait for one of our frequent dev updates once we accept the PR.

Release Schedule

We’re releasing these first two architectures today. Some of our most popular architecture extensions are for ARMv7 and AArch64 so we knew it was important to release those first.

As an added bonus, the latest AArch64 module already supports disassembling ARMv8.5 MTE instructions just in time for any ahem “surprise” announcements (🍎) that might be coming next week.

Note that we’re also in the middle of a major refactor of the AArch64 lifting and disassembly. As soon as that work is available for testing, it will be added to this repository as well. The new disassembler proof-of-concept is based on automatic parsing of the official specification and using a validation scheme to both manually and automatically compare the results to other tools. We’re sure this will be the most accurate AArch64 disassembler when it’s available.

The remaining core architectures will be released on the following schedule, so keep an eye out on Twitter and follow us on GitHub

  • x86 / x64: October 21
  • PPC / MIPS: October 28