# Integrating Binary Ninja with pwndbg ## Requirements You need at least the personal edition of Binary Ninja (only tested on version 4.0+) that runs at least Python 3.10 for plugins. ## Setup Copy (or symlink) [`binja_script.py`](binja_script.py) to your [plugins directory](https://docs.binary.ninja/guide/plugins.html). ## Usage To start the Binary Ninja integration, open the binary you want to debug in Binary Ninja, then go to `Plugins > pwndbg > Start integration on current view`. This will start the XMLRPC server that pwndbg queries for information. Then, inside GDB, run `set integration-provider binja`, which will start the integration. You can run `set integration-provider none` to disable it again. ## Features The integration currently syncs symbol names, comments, decompilation, function type signatures, and stack variables. ## Commands - `bn-sync`: Navigate the Binary Ninja view to the current instruction - `decomp ADDR NLINES`: Displays the decompilation for `NLINES` lines at address `ADDR`. ## Config Options - `bn-autosync`: If set to `yes`, every step will automatically run `bn-sync` - `bn-il-level`: Sets the IL level to use for decompilation. Valid values are: `disasm`, `llil`, `mlil`, `hlil` - `bn-rpc-host`/`bn-rpc-port`: The host and port to connect to for the XMLRPC server - `bn-timeout`: The amount, in seconds, to wait for the XMLRPC server to connect