diff options
| author | Jordan Wiens <jordan@psifertex.com> | 2025-07-10 20:33:53 -0400 |
|---|---|---|
| committer | Jordan Wiens <jordan@psifertex.com> | 2025-07-15 12:03:55 -0400 |
| commit | 99e442620e8e19053120dc44239372d1fb5a3053 (patch) | |
| tree | f7c26c1410ee92494908d4d5e6cb61e178d6ccdd /docs | |
| parent | 22c2873ccff4de8dcfbfa8c99388f934cd860740 (diff) | |
add binexport to open source docs
update plugin documentation now that binexport is shipped
add binexport documentation
Diffstat (limited to 'docs')
| -rw-r--r-- | docs/about/open-source.md | 4 | ||||
| -rw-r--r-- | docs/dev/plugins.md | 4 | ||||
| -rw-r--r-- | docs/guide/binexport.md | 48 | ||||
| -rw-r--r-- | docs/img/binexport-bdviewer.png | bin | 0 -> 255352 bytes | |||
| -rw-r--r-- | docs/img/binexport-setting.png | bin | 0 -> 31169 bytes | |||
| -rw-r--r-- | docs/img/binexport-success.png | bin | 0 -> 80621 bytes |
6 files changed, 54 insertions, 2 deletions
diff --git a/docs/about/open-source.md b/docs/about/open-source.md index 8909d988..6b4afcac 100644 --- a/docs/about/open-source.md +++ b/docs/about/open-source.md @@ -26,6 +26,7 @@ The previous tools are used in the generation of our documentation, but are not * Core - [abseil-cpp] ([abseil-cpp license] - Apache 2.0) + - [BinExport] ([binexport license] - Apache 2.0) - Google project, [Vector 35 fork] - [jsoncpp] ([jsoncpp] - Public Domain / MIT) - [llvm] ([llvm license] - BSD-style) - [lzf] ([lzf license] - BSD) @@ -307,6 +308,9 @@ Please note that we offer no support for running Binary Ninja with modified Qt l [Qt 6.8]: https://www.qt.io/licensing/open-source-lgpl-obligations [abseil-cpp]: https://github.com/abseil/abseil-cpp [abseil-cpp license]: https://github.com/abseil/abseil-cpp/blob/master/LICENSE +[BinExport]: https://github.com/google/binexport +[binexport license]: https://github.com/google/binexport/blob/main/LICENSE +[Vector 35 fork]: https://github.com/Vector35/binexport [capstone]: https://github.com/aquynh/capstone [capstone license]: https://github.com/aquynh/capstone/blob/master/LICENSE.TXT [breathe license]: https://github.com/michaeljones/breathe/blob/master/LICENSE diff --git a/docs/dev/plugins.md b/docs/dev/plugins.md index 5cac34d6..5e69fd88 100644 --- a/docs/dev/plugins.md +++ b/docs/dev/plugins.md @@ -363,7 +363,7 @@ and use command-line lldb or gdb to debug their code. Shout-outs to people tryin ## Submitting to the plugin manager -While native plugins are not supported in the plugin manager at this time, it's possible to work around this limitation by pre-building a native plugin for all three platforms and using a python plugin that acts as a loader for the native plugin. There aren't any good examples of automated workflows for this, but [binexport](https://github.com/google/binexport) has supposedly got it working. But given that the people you're distributing your plugin to may have a different version of the API, you will likely want to just distribute the source code and build setup, and have them build against whatever version of Binary Ninja they have installed. +While native plugins are not fully supported in the plugin manager at this time, it's possible to work around this limitation by pre-building a native plugin for all three platforms and using a python plugin that acts as a loader for the native plugin. Additionally, you can submit a plugin as "view_only" which helps with discoverability. ## Examples @@ -372,7 +372,7 @@ Several native plugin examples exist: - [Triage](https://github.com/Vector35/binaryninja-api/tree/dev/examples/triage) - [Debugger](https://github.com/Vector35/debugger) - [ObjectiveNinja](https://github.com/jonpalmisc/ObjectiveNinja) - - [BinExport](https://github.com/google/binexport#binary-ninja) (Used with BinDiff) + - [BinExport](https://github.com/vector35/binexport#binary-ninja) (Used with BinDiff) - [Binliner](https://github.com/holmesmr/binliner) ## Contributing to Official Plugins diff --git a/docs/guide/binexport.md b/docs/guide/binexport.md new file mode 100644 index 00000000..629fe962 --- /dev/null +++ b/docs/guide/binexport.md @@ -0,0 +1,48 @@ +# BinExport / BinDiff + +BinExport is a [plugin written by Google](https://github.com/google/binexport) (originally [Zynamics](https://www.zynamics.com/) before their acquisition) to create files used for the [BinDiff](https://github.com/google/bindiff) differential analysis tool. + +## Usage + +### Enable the Experimental Plugin + +{ width="400" } + +The initial release of this plugin is **EXPERIMENTAL** due to being finished too close to a stable release for better testing. As such, it is disabled by default. To enable it, search settings for "binexport", enable the plugin, and restart Binary Ninja. + +### Activation + +{ width="300" } + +To trigger the plugin and create a `.binexport` file for the current binary, use either the `Plugins` / `BinExport` menu, or the `BinExport` action in the [command-palette](./index.md#command-palette). + +A file dialog will open, defaulting to the same file name and location (without the original file extension -- a new file extension will automatically be appended of .BinExport`) + +If successful, two more dialogs will show up. One warning that the export can take some time for large files, and a second confirming success. + +### What Next? + +After creating the before and after `.BinExport` files you wish to analyze, you'll want to install [BinDiff](https://github.com/google/bindiff), and run it on the CLI or the GUI to create a `.bindiff` result database. + +```sh +$ bindiff writable.BinExport writable2.BinExport +BinDiff 7 (@377901646, Jun 7 2021), (c)2004-2011 zynamics GmbH, (c)2011-2021 Google LLC. +Setup: 0s +primary: writable: 11 functions, 2 calls +secondary: writable2: 11 functions, 2 calls +Matching: 0s +matched: 11 of 11/11 (primary/secondary, 11/11 non-library) +call graph MD index: primary 0.264073 + secondary 0.264073 +Similarity: 99.2002% (Confidence: 99.2002%) +Writing results: 0.0s +``` + +The resulting `.BinDiff` file can either be opened in the BinDiff Java GUI, or directly in Binary Ninja directly using the [BD Viewer](https://github.com/PistonMiner/binaryninja-bindiff-viewer) plugin (available via the [Plugin Manager](./plugins.md)) and also supports porting symbols from one matched database to another. + + +_BD Viewer Plugin_ + +## Changes / Fork + +All changes made to the original plugin to be able to ship it as a plugin directly with the product are maintained in the [Vector 35 fork](https://github.com/Vector35/binexport) and are [released](https://github.com/Vector35/binexport/blob/main/LICENSE) under the same Apache 2.0 license as the [original plugin](https://github.com/google/binexport/blob/main/LICENSE). Please do not file issues related to anything on that repo except for specific Binary Ninja UI functionality or changes. diff --git a/docs/img/binexport-bdviewer.png b/docs/img/binexport-bdviewer.png Binary files differnew file mode 100644 index 00000000..852c76e9 --- /dev/null +++ b/docs/img/binexport-bdviewer.png diff --git a/docs/img/binexport-setting.png b/docs/img/binexport-setting.png Binary files differnew file mode 100644 index 00000000..6a4b7fa1 --- /dev/null +++ b/docs/img/binexport-setting.png diff --git a/docs/img/binexport-success.png b/docs/img/binexport-success.png Binary files differnew file mode 100644 index 00000000..69a42b10 --- /dev/null +++ b/docs/img/binexport-success.png |
