Binary Ninja Blog

Binary Ninja Enterprise Is Now Available

We are so happy to announce the release of our long awaited Binary Ninja Enterprise product. Throughout my 17-year reverse engineering and vulnerability research career I’ve wanted a way to collaborate with my teammates and coworkers. We tried many open source solutions which would eventually get out of sync or corrupt our database. We even wrote our own solution thinking, “We’re not going to make the same mistakes all those other schmucks made!” Only after months of wasted effort did we realize how difficult the problem was and that the platform we were trying to implement collaboration with was very deeply incapable of supporting such a feature.

When we started developing Binary Ninja in 2015 we knew at a fundamental level that we needed the product to be able to support collaboration. This goal influenced many of the design decisions throughout our development. Finally, two years ago (almost to the day), we committed the first lines of code on the product that we’re releasing today. We’re so proud of the product our engineers created, especially Glenn and Josh who saw our vision through.

The remote server browser from Binary Ninja Enterprise

Now, enough drivel: You’re here because you want to understand how Binary Ninja Enterprise can help you work more efficiently, improve your communication, organize your projects, and simplify Binary Ninja deployment across your organization. We’re here to help. Let’s dig in.

Seamless Collaboration

The headlining feature of Binary Ninja Enterprise is, of course, seamless collaboration. We call it seamless because it works so well that you almost forget that you’re using it. There is very little new to learn, and it doesn’t change the way you’re used to working. In fact, it doesn’t look much different except for the new status indicator in the lower left.

Binary Ninja Enterprise disassembling a binary with HLIL in linear view

There is no need to be constantly connected to a server. You can start your project locally and upload it with a couple of clicks. You can also take your collaborative project offline, do some reverse engineering on an airplane, and then resynchronize whenever you get connected again.

There are two main components to collaboration: The Enterprise Client and the Enterprise Server. We took a lot of inspiration from git so you’ll see us use a lot of git-oriented language. All of the state for your collaborative project is saved on your local machine. Each time you save your database it acts like a local git commit. This essentially records a snapshot of the changes in your database. When you’ve got some changes you’d like to share with your teammates you can click the synchronization area in the lower left. This is analogous to a git push.

The collaboration client is continually looking for upstream changes (similar to routinely running git fetch) and will update the synchronization icon in the lower left. If there are no upstream changes the indicator will look like this:

Sync indicator with no incoming changes from upstream

If there are upstream changes, the icon will look like this.

Sync indicator with 3 incoming changes from upstream

If someone has pushed upstream changes and you have your own local changes you’ll need to merge your changes before they can commit them. Merging is very similar to git merge and is usually automatic. If you and your teammates are reverse engineering the same code there will likely be conflicts, just like if you were editing the same function in source code. Regardless of what anyone is working on, merging still works, though it is up to you and your team to coordinate if you’d like to reduce merging conflicts.

Resolving a merge conflict with Binary Ninja Enterprise

Built-in Chat

To better coordinate with your teammates, Enterprise comes with built-in chat functionality. This persistent, per-binary chat keeps all the relevant conversations about a binary with the binary, so you can pick up the conversation where you left off. It is a great way to describe to your teammates what changes you made in a commit. You can even send hyperlinks into the current binary to help sync up.

Live, persistent chat within Binary Ninja Enterprise

Integrated Project and User Management

When working with a team, it becomes even more important to have some organization for the various projects and components of projects your team is working on. Binary Ninja Enterprise provides a convenient mechanism for creating projects, adding users, and managing permissions at both the file and project level.

Project permissions dialog in Binary Ninja Enterprise

Binary Ninja Enterprise even supports single sign-on through OAuth 2.0 and OpenID Connect.

Floating Licenses

Unlike our Non-Commercial (Personal) and Commercial products, Binary Ninja Enterprise uses a floating license system. Your copy of Binary Ninja Enterprise will come with 3 floating licenses (more can be purchased separately) that can be checked out from the Enterprise Server by any client. These licenses are kept for only a few hours by default (and renewed constantly in the background until you quit the client), but you can also manually check out a license for longer (up to 30 days).

Server login dialog in Binary Ninja Enterprise
Floating license checkout options in Binary Ninja Enterprise

What to Expect in Future Releases

When a new paradigm like this comes about, the number of new ideas that start flying around is exciting. We’d like to discuss just the tip of the iceberg on what we have planned for this product.

Offline Updates

The number one feature we’re going to be working on post-launch is support for offline updates. We know a lot of our customers use Binary Ninja on VPNs and disconnected networks, or they have security requirements that prevent them from using automated updates. The Binary Ninja Enterprise Server will soon have the ability to manage updates for your entire organization. Users will update the server which will then distribute updates to the clients.

Additional Single Sign On Options

Our existing SSO options should cover most of the use cases we expect from customers. But, we know a few are missing and that the existing options may need some additional edge cases covered. We’re currently looking into implementing SAML, but please let us know if your organization requires something else that we don’t currently support.

Additional Communication Enhancements

In addition to the above there are a few other features that we think would be really nice to help teams collaborate even more effectively.

  • Slackbot-like feature which would allow users to get notifications when new changes are made.
  • Shared plugins/scripts would allow users to have scripts stored with the binary or even at the project level. These plugins could register PluginCommands, Workflows, DataRenderers, etc.
  • Visual indication of where other users are in that binary. Showing this information could help teams to avoid merge conflicts proactively.

How Do I Get It?

Hopefully today’s tour of these new features has left you as excited about Binary Ninja Enterprise as we are! If you’re interested in purchasing or setting up a live demonstration for your organization, please contact us via email at [email protected] or by clicking the chat icon on the bottom-right of your screen.