Frequently Asked Questions
What platforms does Binary Ninja run on?
One Binary Ninja license includes support for Linux, OS X, and Windows. Specifically:
- Linux: 64-bit Ubuntu most recent LTS plus latest stable are officially supported, many other distros are unofficially supported
- OS X: 10.10 and 10.11
- Windows: Windows 8 x64 and Windows 10 x64 (Win 7 x64 currently works if fully updated, but is not officially supported)
What CPU architectures are supported?
Binary Ninja includes various levels of support for different cpus. We break down support below for each architecture based on whether we support disassembly, lifting, inline-assembly editing (which also includes insertion of raw chunks of assembly), and C compilation (using our own built in compiler called SCC):
Architecture Disassembly Lifting Assembling Compiling x86 32-bit Partial Partial Y Y x86 64-bit Partial Partial Y Y ARMv7 Y* Y* Y Y Thumb2 Y Y Y N ARMv8 Y* Y* Y N PowerPC Y* Y* Y* Y MIPS Y* Y* Y Y 6502 Y Y - - Many others! - - - -
What file formats are supported?
We current have loaders for the following file formats:
Can you demangle symbols?
We currently demangle both GNU3 and MSVS symbols including C++11 using our own cross-platform library on OS X, Linux, and Windows.
Do you support loading PDB files?
We currently do not support loading PDB files, though there are third party plugins that demonstrate how to import symbols from them.
Can Binary Ninja work offline?
Absolutely. While Binary Ninja will try to connect online to check for updates and show the changelog, it works fine without it. You can even disable those features in the preferences if you don't want to see the errors about failing to connect.
You will need a computer running the same version of Binary Ninja on the internet if you want to receive updates or switch to the dev channel. Right now, the recommended process is to install it on a computer that's online, let it update to whatever channel you want, then just copy the install folder over top of the installed version on your offline computer. You can also use the version switcher plugin to automate the process if you like.
In addition, our upcoming Enterprise version will be specifically designed to work well in offline networks. It will be distribute updates to connected clients and even support different channels, enabling a team that's working offline to have a workflow identical to being online.
You made another IL!
That's not a question -- still, it's something we commonly hear. There are many reasons we've made yet another IL, the first being that it was important to us to be able to provide an analysis platform across all the architectures we supported.
Other ILs are specific to one architecture, or overly verbose so that lifting to them is a time-consuming task. By implementing multiple ILs, we solved a number of problems simultaneously. First, our initial IL is very quick and easy to lift to. Our example NES 6502 plugin demonstrates that. Second, once we've lifted to our initial IL, we can easily translate to other ILs better suited for different purposes.
Do you have a debugging interface?
No, not at this time. We definitely plan for a debugging interface in the long term but right now we are focused on our static analysis efforts.
Of course, that hasn't stopped others from integrating Binary Ninja into a dynamic analysis workflow. For example, check out Snare's Binjatron plugin that connects Binary Ninja to Voltron which itself is a front-end for a variety of debuggers (GDB, LLDB, WinDbg and VDB at last count).
SCC is short for "shell code compiler", it's a custom C compiler designed to create small shellcode payloads with minimal file size. It includes a simple libc that is statically compiled / inlined for very small file sizes. SCC is convenient for testing exploitation or overwriting built-in functionality of a program with a C replacement. Want a function to always return a particular structure or value? You could do it in assembly, but it's often easier in C.
If you are testing obfuscation technique analysis, SCC also supports a number of built in obfuscations such as junk code insertion, different variables as the stack pointer, etc.
Do you support any automation/API?
Of course. The reason we chose the tagline "a reverse engineering platform" is that no GUI reverse engineering tool will ever magically solve all reverse engineering problems. The human has to be a part of the analysis loop. Not only though interactive changes, but also through a solid API that can be extended and built on by the community. To that end, we've built Binary Ninja around a modular core with extensive use of plugins. The UI that you use now when you run Binary Ninja uses the same API that is available to any plugin. For any of the commercial licenses of Binary Ninja, this also means that Binary Ninja is designed to work well in a remote, headless fashion for larger scale analysis projects. We even support "compute" licenses for distributed headless analysis.
Binary Ninja is primarily written in C++11, with C, C++, and Python APIs. The API itself as well as sample plugins are available under an MIT license on the binaryninja-api repository.
Can I contribute to the API?
We welcome contributions to the MIT licensed API, but we do ask that you fill out and sign a contribution license agreement if you would like to have your plugin or API change included in the default installer. Even if you don't want to submit the actual code, we'd love to have your plugin linked to from the readme to make it easier to find without requiring a signed agreement.
Where's all the buttons?
We've tried hard to make a product with a very powerful API that makes it extensible and adaptable to a variety of use-cases. Still, we wanted the initial interface to be clean and simple, helping you to focus just on easy reverse engineering.
Will there be a decompiler?
Absolutely. While we do not expect to have the decompiler complete in 2017, we're designing everything to support it. In fact, you can already see some of the important steps toward a full, cross-platform, decompiler by turning on the "Low Level-IL" view.
Will you support collaboration?
Collaboration was one of our early design goals in Binary Ninja. We've built our database format to easily support multiple user collaboration by separately identifying user-initiated changes versus analysis initiated changes to the database. This not only allows us to have a merging/branching model that supports collaboration, but also allows us to upgrade the analysis capability in a new version, and then re-apply user changes for easy database upgrades between versions.
Collaboration will work in two ways. First, the commercial and personal licenses will both support an ad-hoc peer to peer based collaboration system that works for any two Binary Ninja users on the same network.
Secondly, the enterprise license will include a collaboration server that supports authentication, authorization, and centralized storage of databases for environments where one central repository makes more sense than ad-hoc collaboration.
We currently plan to have collaboration implemented some time in early 2017 for the enterprise version, with the other two versions gaining the feature some time later.
Will the price ever change?
Our introductory price period ended on Sept 30, 2017. We do not expect our current prices to change at this time, but we do not guarantee any pricing.
Additionally, some future features (eg, a decompiler) will likely either be a separate purchase or may result in the base price going up.
How do I renew my license?
30 days before your support period ends, you'll receive an email including a link allowing you to renew. You should receive another email if you reach five days before the support period ends. You will also be notified via a small notification icon in the status bar of Binary Ninja itself if you are running an updated build and you have not disabled online activity.
Can I purchase via a purchase order or get an invoice?
Purchase orders and invoices are supported for purchases of more than 10 copies of the commercial license. Contact us for more information. We do make exceptions to this if necessary.
Can I order through a reseller?
Yes, we have worked with a number of resellers. We do not offer reseller discounts, and we encourage resellers to let us know the end-customer's email after they purchase licenses so the license can be updated allowing the end-user to receive download links, fresh licenses, and support without going through the reseller in the future.
How many computers can I run Binary Ninja on?
Your personal or commercial license is for your use on as many machines that you use running any operating system we support. Please note that you may only simultaneously run as many copies as you have purchased licenses.
If you'd like to purchase compute licenses for remote distributed processing, please contact us.
Are updates included in the purchase?
One year of updates are included with the original purchase.
When your updates run out, you may continue to use the last update you received indefinitely, or renew your support period to continue to receive updates.
What will renewal pricing for continued updates be?
Renewing a support license costs 50% of the current purchase price for that license. More information available on our blog under the "Renewals" section.
Can I upgrade from one license to another?
Upgrades are available from lower-tier licenses as a pro-rated discount based based on quarter-year increments.
So if you've used the personal edition for two months (one quarter of usage) and then upgrade, you'd pay $487.25 ($599-$149*0.75) for a new one-year license of the commercial version in exchange for turning in the personal license.
If you're interested in upgrading an existing license, contact us.
Can I transfer my named license to someone else?
We do allow users to transfer licenses from one email to another as long as the product is inside of its support period.
To change the user associated with a license, contact us.
What do you mean by "introductory pricing"?
We believe Binary Ninja provides more value than the initial prices we're selling it for, but we want to thank early adopters, so our initial pricing is at an introductory rate. We will update our website and email our mailing list at least a month before we end the introductory pricing period to make sure it's widely communicated.
What do you consider "commercial" use?
Our licenses differentiate between commercial and personal usage as a way to make the product affordable for students and hobbyists while still enabling us to fund a company to make a product for a niche market.
So what do we consider commercial use? If your primary use of the product is for profit, then the use is commercial. If you are using Binary Ninja on your work computer for, for example, it doesn't necessarily qualify as commercial use. If you're using it as a part of your job while at work though, then it probably is.
If you're not sure whether your use qualifies as commercial or personal, contact us and ask.
We also apply a "de minimis" standard. If your commercial use (running ads on Youtube videos, for example) makes you less money than 5 times the cost of a commercial license, we're happy to have you continue to use a personal license. Once you start making enough money to afford it, we hope you'l consider upgrading.
What is your return policy?
We will refund purchases within 15 days of the purchase if Binary Ninja doesn't meet your needs. We reserve the right to deny refunds in situations where we believe the policy is being abused, but we're confident that you'll get more than your money's worth out of it. Contact us for more information on the return process.
- What if I lose my license?
Can you write a sole source justification for my purchasing department?
Binary Ninja is the only reverse engineering platform that has a built in compiler, a fully exposed Intermediate Language with data flow, and fully public API. Each of those features are unique in isolation amongst commercial products, and the combination is unmatched anywhere.
If you have need for a dedicated shellcode compiler to extend, adapt, or modify a binary, our built in Shell Code Compiler is a unique tool that is seamlessly integrated into Binary Ninja.
The Binary Ninja Intermedia Language (BNIL) family of ILs allow for advanced analysis techniques on all architectures supported by Binary Ninja. Features like static data flow allow for querying known register values in the Low Level IL (LLIL), and higher level abstractions such as the Medium Level IL allow analysis on a form of the binary that abstracts away the stack, memory, and registers to variables. Not only that, but adding a new architecture supporting BNIL is easy to do for any third-party, allowing our powerful analysis framework to be applied to even new unique platforms.
Unique among commercial products, the Binary Ninja API is open-sourced and fully exposed. All plugins and scripts have the full access to the core analysis engine that the main GUI leverages.
Unique compared to open source products, Binary Ninja has a dedicated development and support team that can provide commercial support with multiple tiers available.
Why does Binary Ninja connect online?
Binary Ninja connects back to our update infrastructure to receive changelogs and notification of new versions. You're more than welcome to block that update mechanism, but be advised that we only offer support for the latest version.
To disable all online activity, just uncheck both of the following options in preferences:
- Update to latest version automatically
- Show active content on start page
Note that it's still possible for Binary Ninja to access online content if you use the
Open URLmenu choice in the
Filemenu. To completely block all online traffic, we recommend a firewall or isolated virtual machine.
Do you watermark my downloaded binary?
We do not watermark our binaries in any way. This is partially due to a desire to use a streamlined update process that takes advantage of global CDN infrastructure for faster automatic updates, but partially because we are busy trying to build features that make the product better.
Please don't pirate Binary Ninja--we know we're selling to customers more than capable of cracking our software, so we're not going to try to implement overly complicated anti-piracy mechanisms (may we recommend crackmes.de for those interested in that type of fun). Instead we ask that you support us by encouraging others to purchase copies if they find it helpful.
How do I verify your binaries?
This website contains SHA256 hashes you can use to verify your downloads. In addition, our Mac OS and Windows binaries are digitally signed.
Do you have a bug bounty?
We have no official bug bounty at this time. We do plan to launch one at some point, but we figure we should run AFL and libfuzzer ourselves before we open it up to the public.
That said, we're always grateful for bug reports and encourage security reports to be sent via slack or email.
Do you isolate your analysis with a sandbox?
Not at this time, though we'd love to do that long term. As usual, we highly recommend the use of additional security layers when analyzing other people's binaries, especially malware. One named license includes support for Windows, Linux, and Mac OS so it's easy to run Binary Ninja in a VM for added protection but still run it natively on a different OS when you need to.
Who makes Binary Ninja?
Binary Ninja is made by Vector 35 LLC, a company focused on building reverse engineering tools, video games, and video games built on top of reverse engineering tools.
Wasn't this an open source project at first?
The short answer is no, it wasn't. We released a one-off open source version of a private internal tool. It's an unfortunately common misconception we've heard that Binary Ninja was an open-source project that was subsequently closed because we released a public prototype.
The truth is that Binary Ninja was a private internal CTF team tool that we formed Vector 35 to build into a commercial product. When doing that, we wanted to give back to the community as much as we could while still being commercially viable, so a one-off version of the previous python prototype was released under the GPLv2.
The prototype doesn't share code with the current commercial offering. While many of the UI decisions and general design choices carried over, the prototype is a distinct product.
- Why have a python prototype?
- My download links have expired!
Do you have a demo?
Yes! Head over to our demo download to try it out.
My question wasn't answered?
Just because you put a question mark on it doesn't make it a question. Still, we want to address any feedback which is why we have the embedded chat box floating on the bottom of this page. If we're awake and online we're usually pretty quick to respond, if not, just leave your question there along with your email and we'll get back to you. Or, you can hop on to our public slack and ask there as we have a very active community there.