summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorJordan Wiens <jordan@psifertex.com>2022-10-17 17:16:40 -0400
committerJordan Wiens <jordan@psifertex.com>2022-10-17 17:16:50 -0400
commit5ca8304da6dfc67f2feda5888a3c84d2e0c2ef90 (patch)
tree4ded93f22e6bfba41252966f450585888ec0a282 /docs
parentf7b97cffae5582b7891f1718ce64eb0e30c29d25 (diff)
another round of small doc changes
Diffstat (limited to 'docs')
-rw-r--r--docs/getting-started.md33
-rw-r--r--docs/guide/index.md37
-rw-r--r--docs/guide/troubleshooting.md2
3 files changed, 41 insertions, 31 deletions
diff --git a/docs/getting-started.md b/docs/getting-started.md
index d7724f5c..53efa6d8 100644
--- a/docs/getting-started.md
+++ b/docs/getting-started.md
@@ -1,11 +1,11 @@
# 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](guide/index.md).
+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](./guide/index.md).
![main](./img/main.png "Main")
## Installing Binary Ninja
-The download links you receive after purchasing expire after 72hrs but as long as you have [active support](https://binary.ninja/faq/#updates) you can [request download links](https://binary.ninja/recover/) any time!
+The download links you receive after purchasing expire after 72 hours but as long as you have [active support](https://binary.ninja/faq/#updates) you can [request download links](https://binary.ninja/recover/) 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.
@@ -15,7 +15,7 @@ To install on MacOS, simply drag-and-drop the app bundle from the DMG to the des
### Windows
-To install on Windows, use the installer linked from the email you received after purchase. You'll only choose whether to install globally or to your local user during the install process.
+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
@@ -37,31 +37,34 @@ But you can also change how analysis happens using [open with options](./guide/i
By default, you'll see four main areas in Binary Ninja:
-1. Symbol List (one of many [sidebars](./guide/index.md#the-sidebar))
+1. Symbol List (one of many [sidebar panels](./guide/index.md#the-sidebar))
1. [Cross References](./guide/index.md#cross-references-pane)
1. Main View (defaults to High Level IL and can have many [panes](./guide/index.md#tiling-panes))
-1. [Feature Map](guide/index.md#feature-map)
+1. [Feature Map](./guide/index.md#feature-map)
-Not enabled by default but can be made visible is the global area which includes the [scripting console](guide/index.md#script-python-console) and log window.
+Not enabled by default but can be made visible is the global area which includes the [scripting console](./guide/index.md#script-python-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](./guide/index.md#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
![command palette](./img/command-palette.png "Command Palette")
-One of the most useful features of Binary Ninja is that everything can be quickly and easily accessed through a [command-palette](./guide/index.md#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 changed to a [custom hotkey](./guide/index.md#custom-hotkeys). That said, here are a few of the more useful default hotkeys:
+One of the most useful features of Binary Ninja is that everything can be quickly and easily accessed through a [command-palette](./guide/index.md#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](./guide/index.md#custom-hotkeys). 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 decompilation (HLIL) and disassembly view
+ - `[SPACE]` : Toggle between linear view and [graph view](./guide/index.md#graph-view)
+ - `[F5]`, `[TAB]` : Toggle between Pseudo C and disassembly view
- `g` : Go to an address or symbol
- `n` : Name a symbol
- `;` : Add a comment
- `i` : Cycle between disassembly, LLIL, MLIL and HLIL
- `y` : Change type of the currently selected element
- - `1`, `2`, `4`, `8` : Change type directly to a data variable of the indicated widths
+ - `1`, `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 widths
- `r` : Change the data type to single ASCII character
- `o` : Create a pointer data type
@@ -71,11 +74,15 @@ For more hotkeys, see the [User Manual](./guide/index.md).
## 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](./dev/bnil-overview.md) 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. If you prefer disassembly or even [Pseudo C](./guide/index.md#pseudo-c) as your default view, no worries, just check out the `UI`/`view.graph` and `view.linear` settings.
+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](./dev/bnil-overview.md) 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](./guide/index.md#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. First, they can be manually installed by copying the plugin to the appropriate [folder](./guide/index.md#user-folder), or using the [Plugin Manager](./guide/plugins.md#plugin-manager).
+Plugins can be installed by one of two methods, either automatically by using the [Plugin Manager](./guide/plugins.md#plugin-manager), or manually by copying the plugin to the appropriate [folder](./guide/index.md#user-folder).
+
+
## Debugger
@@ -85,7 +92,7 @@ For more detailed information, see the [debugger guide](./guide/debugger.md).
## Updates
-While Binary Ninja automatically updates itself, by default you will only use the Stable Branch and you can check out features much faster on the development branch using the [update channel](./guide/index.md#updates) dialog.
+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](./guide/index.md#updates) dialog.
## What's next?
diff --git a/docs/guide/index.md b/docs/guide/index.md
index 21eacce5..b9029ce2 100644
--- a/docs/guide/index.md
+++ b/docs/guide/index.md
@@ -1,6 +1,6 @@
# User Manual
-Welcome to the Binary Ninja User Manual. You'll notice two menus here, on the left are links to subsections that have grown so large they are split out into their own sections. On the right is the table of contents for the user manual. Major sections on their own page include:
+Welcome to the Binary Ninja User Manual. You'll notice two menus here. On the right is the table of contents for this main page of the user manual. On the left are links to larger topics that have their own pages, including:
- [Plugins](plugins.md)
- [Settings](settings.md)
@@ -42,26 +42,27 @@ The contents of the user folder includes:
- `settings.json`: User settings file (see [settings](settings.md))
The following files and folders may be created in the user folder but are not created by default without some additional action:
+
- `keybindings.json`: Custom key bindings (see [key bindings](#custom-hotkeys))
- `startup.py`: Default python commands run once the UI is loaded in the context of the scripting console
- `signatures/`: Any user-signatures can be stored in this location which is not created by default
- `pythonVER/`: Any pip dependencies from plugin manager plugins are installed to the appropriate python version subfolder such as `python310`
-- `symbols/`: Store PDBs downloaded
+- `symbols/`: Used to store automatically downloaded PDBs
- `update/`: Used to store update caches for pending updates
- `snippets/`: Used to store snippets created using the official Snippet plugin
- `themes/`: For user themes or user-modified versions of official themes
- `community-themes/`: Can also be used to store themes, useful to clone the [plugin theme collection](https://github.com/vector35/community-themes) directly into your user folder
-![license pop-up >](../img/license-popup.png "License Popup")
-
### QSettings Locations
-Some settings such as window locations, saved checkboxes, recent file lists, disassembly settings, dialog histories.
+Some settings such as window locations, saved checkboxes, recent file lists, disassembly settings, dialog histories are stored in QSettings.
-If you ever have the need to flush these, you can find the install locations as described in the [QT documentation](https://doc.qt.io/qt-5/qsettings.html#platform-specific-notes).
+If you ever have the need to flush these, you can find the install locations as described in the [QT documentation](https://doc.qt.io/qt-6/qsettings.html#platform-specific-notes).
## License
+![license pop-up >](../img/license-popup.png "License Popup")
+
When you first run Binary Ninja, it will prompt you for your license key. You should have received your license key via email after your purchase. If not, please contact [support](https://binary.ninja/support).
Once the license key is installed, you can change it, back it up, or otherwise inspect it simply by looking inside the base of the user folder for `license.dat`.
@@ -89,7 +90,7 @@ You can load files in many ways:
* `binaryninja:///bin/ls?expr=sub_2830` - open the given file and navigate to the function: `sub_2830`
* `binaryninja:///bin/ls?expr=.text` - open the given file and navigate to the start address of the `.text` section
* `binaryninja:///bin/ls?expr=.text+6b` - open the given file and navigate to the hexadecimal offset `6b` from the `.text` section.
- * URLs For referencing remote file files either the URL should be prefixed with `binaryninja:` and optionally suffixed with the `expr` query parameter
+ * URLs For referencing remote files either the URL should be prefixed with `binaryninja:` and optionally suffixed with the `expr` query parameter
* `binaryninja:file://<remote_path>?expr=[.data + 400]` - Download the remote file and navigate to the address at `.data` plus `0x400`
## Saving Files
@@ -99,23 +100,24 @@ You can load files in many ways:
There are five menu items that can be used to save some combination of a raw file or a file's analysis information. Analysis information is saved into files that end in `.bndb` and have the same prefix as the original file. The default behavior for each of the "save" menu choices is described below:
1. "Save" - This menu is the only one bound to a hotkey by default and it is intended to be the "do what I probably want" option.
- - If you have edited the contents of a file and have not yet confirmed the file name to save over, this will ask you to save the file contents and prompt for a file name (check the save dialog title text to confirm this).
- - If you have edited the file contents and _have_ previously specified the file name, this option will save those changes to that file without a prompt.
- - If you have not edited the contents of the file but have added any analysis information (created functinos, comments, changed names types, etc), you will be asked for the name of the `.bndb` analysis database if one does not already exist.
- - If an existing analysis database does exist and is in use, the existing database will be saved without a prompt.
- - Finally, if you have changed both file contents and analysis information, you'll be prompted as to which you wish to save.
+ - If you have edited the contents of a file and have not yet confirmed the file name to save over, this will ask you to save the file contents and prompt for a file name (check the save dialog title text to confirm this).
+ - If you have edited the file contents and _have_ previously specified the file name, this option will save those changes to that file without a prompt.
+ - If you have not edited the contents of the file but have added any analysis information (created functions, comments, changed names types, etc), you will be asked for the name of the `.bndb` analysis database if one does not already exist.
+ - If an existing analysis database is currently being opened or previously saved, the existing database will be saved without a prompt.
+ - Finally, if you have changed both file contents and analysis information, you'll be prompted as to which you wish to save.
2. "Save As" - Will prompt to save the analysis database or just the file contents.
- - If you choose to save the analysis database, it behaves similarly to "Save" above, except for the cases that save without prompt. In those cases, you will _always_ be prompted for a filename.
- - If you choose to save the file contents only, you will be prompted for a filename to which to save the current contents of the binary view, including any modifications.
+ - If you choose to save the analysis database, it behaves similarly to "Save" above, except for the cases that save without prompt. In those cases, you will _always_ be prompted for a filename.
+ - If you choose to save the file contents only, you will be prompted for a filename to which to save the current contents of the binary view, including any modifications.
3. "Save All" - Used to save multiple tabs worth of analysis data only. Does not save file contents.
4. "Save Analysis Database" - Will prompt to select a database to save analysis information if none is currently selected and in use, and will save without a prompt if one has already been selected.
+ ![save with options >](../img/save-with-options.png "Save With Options")
+
5. "Save Analysis Database With Options" - Allows for saving a `.bndb` without additional undo information, or by cleaning up some internal snapshot information to decrease the file size.
-![save with options >](../img/save-with-options.png "Save With Options") <!-- this image is getting floated down into the next section -->
## Status Bar
@@ -125,7 +127,7 @@ The status bar provides current information about the open file as well as some
* Update Notification - perform updates, download status, and restart notification
* Analysis progress - ongoing analysis progress of current active file
-* Cursor offset or selection
+* Cursor offset or selection - interactive control that can be clicked to change its display format
* File Contents Lock - interactive control to prevent accidental changes to the underlying file
## Analysis
@@ -229,7 +231,7 @@ The settings themselves are saved directly in the `keybindings.json` file in you
- `[CTRL] [` (Windows/Linux) : Navigate backward
- `[CTRL] ]` (Windows/Linux) : Navigate forward
- `[SPACE]` : Toggle between linear view and graph view
- - `[F5]`, `[TAB]` : Toggle between decompilation (HLIL) and disassembly view
+ - `[F5]`, `[TAB]` : Toggle between Pseudo C and disassembly view
- `g` : Go To Address dialog
- `n` : Name a symbol
- `u` : Undefine an existing symbol (only for removing new user-defined names)
@@ -243,6 +245,7 @@ The settings themselves are saved directly in the `keybindings.json` file in you
- `[SHIFT] a` : Change the data type to a wchar_t string
- `[CTRL-SHIFT] a` : Change the data type to a wchar32_t string
- `1`, `2`, `4`, `8` : Change type directly to a data variable of the indicated widths
+ - `f` : Switch data variable between floating point types of various precisions
- `d` : Switch between data variables of various widths
- `r` : Change the data type to single ASCII character
- `o` : Create a pointer data type
diff --git a/docs/guide/troubleshooting.md b/docs/guide/troubleshooting.md
index 0794f934..b2da8c53 100644
--- a/docs/guide/troubleshooting.md
+++ b/docs/guide/troubleshooting.md
@@ -39,7 +39,7 @@ While third party plugins are not officially supported, there are a number of tr
Additionally, if you're having trouble running a plugin in headless mode (without a GUI calling directly into the core), make sure you're running the Commercial version of Binary Ninja as the Student/Non-Commercial edition does not support headless processing.
-Next, if running a python plugin, make sure the python requirements are met by your existing installation. Note that on windows, the bundled python is used and python requirements should be installed either by manually copying the modules to the `plugins` [folder](./#directories).
+Next, if running a python plugin, make sure the python requirements are met by your existing installation. Note that on windows, the bundled python is used and python requirements should be installed either by manually copying the modules to the `plugins` [folder](./#directories), or by switching to a different interpreter in the settings.
## License Problems