Getting Started¶
Welcome to Binary Ninja. This introduction document is meant to quickly guide you over some of the most common uses of Binary Ninja. If you're interested in more detailed information, check out the User Manual.
Installing Binary Ninja¶
The download links you receive after purchasing expire after 72 hours but as long as you have active support you can request download links any time!
Linux¶
Because Linux install locations can vary widely, we do not assume that Binary Ninja has been installed in any particular folder on Linux. Instead, first unzip the installation zip wherever you wish to install BN, and then run binaryninja/scripts/linux-setup.sh
. This sets up file associations, icons, and adds BN's Python library to your python path. Run it with -h
to see the customization options.
MacOS¶
To install on MacOS, simply drag-and-drop the app bundle from the DMG to the desired location.
Windows¶
To install on Windows, use the installer linked from the email you received after purchase. You'll need to choose whether to install globally or to your local user path during the install process.
License¶
When you first run Binary Ninja, it will prompt you for your license key. You should have received your license key via the same email that included your download links. If not, please contact support.
Opening Files¶
While there are more ways than shown here, the most common ways to open a file are:
- Drag-and-drop
- File Open
- Run via CLI
But you can also change how analysis happens using open with options.
UI Basics¶
By default, you'll see four main areas in Binary Ninja:
- Symbol List (one of many sidebar panels)
- Cross References
- Main View (defaults to High Level IL and can have many panes)
- Feature Map
Not enabled by default but can be made visible is the global area which includes the scripting console and log window.
Make sure to check out the many view options available in the various ☰ ("hamburger") menus. However, most configuration settings are available in the settings menu. ([CMD/CTRL] ,
is the hotkey for settings)
in the top right of each pane allows for additional customization, including locking the pane to a single function.
Make sure to check out the many view options available in the various ☰ ("hamburger") menus in the top right of each pane. While most configuration settings are available in the settings menu. ([CMD/CTRL] , is the hotkey for settings), the ☰ menu in each pane allows for additional customization, including locking the pane to a single function.
Interacting¶
One of the most useful features of Binary Ninja is that everything can be quickly and easily accessed through a command-palette ([CMD/CTRL] p
). You'll be surprised how often it saves you from looking through menus to find out just what you need. Also, any action in the command-palette can be assigned to a custom hotkey. That said, here are a few of the more useful default hotkeys:
[ESC]
: Navigate backward[SPACE]
: Toggle between linear view and graph view[F5]
,[TAB]
: Toggle between Pseudo C and disassembly viewg
: Go to an address or symboln
: Name a symbol;
: Add a commenti
: Cycle between disassembly, LLIL, MLIL and HLILy
: Change type of the currently selected element1
,2
,4
,8
: Change type of a data variable to the indicated width in bytes (creates a variable if none exists)d
: Switch between data variables of various widthsr
: Change the data type to single ASCII charactero
: Create a pointer data type
For more hotkeys, see the User Manual.
Intermediate Languages¶
Binary Ninja is one of the most advanced binary analysis platforms, and it has a unique stack of related intermediate languages. If that gets you excited, you'll surely want to check out the developer guide for more information. If it doesn't mean anything to you, no worries, here's a few tips to make your life easier. The default view is "High Level IL". It looks and reads almost like pseudo code. There's a few extra notations (usually just around comparisons for whether they are signed or not, or between moves of data indicating the size of the operation) but it should otherwise be very understandable.
Many of the IL behaviors and views are customizable via settings. If you prefer disassembly or even Pseudo C as your default view, no worries, just check out the UI
/view.graph
and view.linear
settings. Likewise, there are several settings available under the "hlil" heading.
Using Plugins¶
Plugins can be installed by one of two methods, either automatically by using the Plugin Manager, or manually by copying the plugin to the appropriate folder.
Debugger¶
Binary Ninja includes a debugger that can debug executables on Windows, Linux, and macOS.
For more detailed information, see the debugger guide.
Updates¶
By default, Binary Ninja is configured to automatically update itself to any new stable releases. However, there are much more frequent updates with fixes and new features available by switching to the Development Branch using the update channel dialog.
What's next?¶
- Consider writing your first plugin
- Watch our Binary Ninja Basics videos
- Read the rest of the more detailed User Manual