summaryrefslogtreecommitdiff
path: root/docs/guide
diff options
context:
space:
mode:
authorgalenbwill <galenbwill@users.noreply.github.com>2022-10-19 19:32:04 -0400
committerPeter LaFosse <peter@vector35.com>2022-11-10 16:19:13 -0500
commit57aa7249fe0fdfa5cabc5231595314df91d12729 (patch)
treefdefa63ebb99afec0a8bd39961a2ca883e102b4a /docs/guide
parent971cdd0779ad7b55eb73e4d0356e9adf10caaf1d (diff)
plugins.md: review and editing for 3.2 complete
Diffstat (limited to 'docs/guide')
-rw-r--r--docs/guide/plugins.md27
1 files changed, 13 insertions, 14 deletions
diff --git a/docs/guide/plugins.md b/docs/guide/plugins.md
index fed781ed..be3092a3 100644
--- a/docs/guide/plugins.md
+++ b/docs/guide/plugins.md
@@ -1,6 +1,6 @@
# Using Plugins
-The most common Binary Ninja plugins are Python which we are covering here. That said, there are some C++ plugins which must be built for the appropriate native architecture and will usually include build instructions for each platform. Several [C++ examples](https://github.com/Vector35/binaryninja-api/tree/dev/examples) are included in the API repository, and the [binexport](https://github.com/google/binexport) utility (used with [bindiff](https://www.zynamics.com/bindiff.html)) is also a native plugin that must be built and installed manually.
+The most common Binary Ninja plugins are written in Python which we are covering here. That said, there are some C++ plugins which must be built for the appropriate native architecture and will usually include build instructions for each platform. Several [C++ examples](https://github.com/Vector35/binaryninja-api/tree/dev/examples) are included in the API repository, and the [binexport](https://github.com/google/binexport) utility (used with [bindiff](https://www.zynamics.com/bindiff.html)) is also a native plugin that must be built and installed manually. Finally, there is preliminary support for [Rust plugins](https://github.com/Vector35/binaryninja-api/tree/dev/rust), but the Rust API is still in the early stages of development, and should be considered a moving target, so proceed with caution and develop at your own risk.
Plugins are loaded from the user's plugin folder:
@@ -14,15 +14,14 @@ Note that plugins installed via the [PluginManager API](https://api.binary.ninja
![Plugin Manager >](../img/plugin-manager.png "Plugin Manager")
-Plugins can now be installed directly via the GUI from Binary Ninja. You can launch the plugin manager via any of the following methods:
+Plugins can be installed directly via the GUI from Binary Ninja. You can launch the plugin manager via any of the following methods:
- (Linux/Windows) `[CTRL-SHIFT-M]`
- (macOS) `[CMD-SHIFT-M]`
Or:
- - (Linux/Windows) `Edit` / `Preferences` / `Manage Plugins`
- - (macOS) `Binary Ninja` / `Preferences` / `Manage Plugins`
+ - `Plugins` / `Manage Plugins`
Or:
@@ -33,7 +32,7 @@ Note that some plugins may show `Force Install` instead of the normal `Install`
### Plugin Manager Searching
-The plugin manager also supports a number of helpful search keywords to filter through the list of plugins as it continues to grow:
+In addition to finding plugins by name or description content, the search box in the plugin manager also supports a number of helpful search keywords to filter through the list of plugins as it continues to grow:
- `@installed` to only show installed plugins
- `@enabled` to only show enabled plugins
@@ -49,7 +48,7 @@ The following plugin categories are also searchable:
## Manual installation
-You can manually install a plugin either by adding a folder which contains it (the plugin folder must contain an `__init__.py` at the top of the folder, or a python file can be included directly in the plugin folder--though this is not recommended).
+You can manually install a plugin either by adding a folder which contains it (the plugin folder must contain an `__init__.py` at the top of the folder, or a python file can be included directly in the plugin folder -- though this is not recommended).
Note, if manually cloning the [api repository](https://github.com/Vector35/binaryninja-api), make sure to:
@@ -57,13 +56,13 @@ Note, if manually cloning the [api repository](https://github.com/Vector35/binar
git submodule update --init --recursive
```
-after cloning or else the submodules will not actually be downloaded.
+after cloning or else the necessary submodules will not actually be downloaded.
### Installing via the API
-Binary Ninja now offers a [PluginManager API](https://api.binary.ninja/binaryninja.pluginmanager-module.html) which can simplify the process of finding and installing plugins. From the console:
+Binary Ninja includes a [PluginManager API](https://api.binary.ninja/binaryninja.pluginmanager-module.html) which can simplify the process of finding and installing plugins. From the console:
-``` text
+``` python
>>> mgr = RepositoryManager()
>>> dir(mgr)
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'add_repository', 'check_for_updates', 'default_repository', 'handle', 'plugins', 'repositories']
@@ -82,13 +81,13 @@ False
True
```
-Then just restart and your plugin will be loaded.
+Then just restart and the newly-enabled plugin will be loaded.
### Installing Prerequisites
-Binary Ninja can now automatically install pip requirements for python plugins when the plugin was installed using the plugin manager. If the plugin author has included a `requirements.txt` file, the plugin manager will automatically install those dependencies.
+Binary Ninja can automatically install pip requirements for python plugins installed using the plugin manager. If the plugin author has included a `requirements.txt` file, the plugin manager will automatically install those dependencies.
-Because Windows and macOS ship with an embedded version of Python, if you want to install plugins inside that Python, we recommend instead installing an official [python.org](https://www.python.org/downloads/windows/) (NOTE: ensure you do not accidentally install a 32-bit build) version, or a [homebrew](https://docs.brew.sh/Homebrew-and-Python) Python 3.x build.
+Binary Ninja ship with an embedded version of Python on Windows and macOS. Instead of installing pip plugins inside that Python, we recommend installing an official version from [python.org](https://www.python.org/downloads/windows/) (NOTE: ensure you do not accidentally install a 32-bit build) or a [homebrew](https://docs.brew.sh/Homebrew-and-Python) Python 3.x build. Binary Ninja currently requires a version of Python 3.7 or greater, though 3.10 or newer is preferred (and may be required by some plugins).
Then you can adjust your [python.interpreter setting](settings.md#python.interpreter) to point to the appropriate install location. Note that the file being pointed to should be a `.dll` or `.dylib` though homebrew will often install libraries without any extension. For example:
@@ -99,7 +98,7 @@ $ file /usr/local/Cellar/python@3.8/3.8.5/Frameworks/Python.framework/Versions/3
### Troubleshooting
-Troubleshooting many Binary Ninja problems is enhanced by enabling debug logs and logging the output to a file. Just launch Binary Ninja with:
+When troubleshooting Binary Ninja problems, it may help to enable debug logging as well as logging the output to a file. Just launch Binary Ninja with:
``` text
/Applications/Binary\ Ninja.app/Contents/macOS/binaryninja -d -l /tmp/bnlog.txt
@@ -107,7 +106,7 @@ Troubleshooting many Binary Ninja problems is enhanced by enabling debug logs an
And check `/tmp/bnlog.txt` when you're done.
-Additionally, running a python plugin with an environment variable of `BN_DISABLE_USER_PLUGINS` will prevent the API from initializing user-plugins which is helpful for identifying when a plugin is causing problems. Furthermore, by setting `BN_USER_DIRECTORY` you can override your 'user' directory where all your settings and plugins are loaded.
+Additionally, running a python plugin with an environment variable of `BN_DISABLE_USER_PLUGINS` will prevent the API from initializing user-plugins. This is helpful for identifying when a plugin is causing problems. Furthermore, by setting `BN_USER_DIRECTORY` you can override your 'user' directory where all your settings and plugins are loaded.
## Writing Plugins