|
1 | | -# <img src="./images/logo.png" width=20> RevEng.AI Binary Ninja Plugin |
| 1 | +# <img src="./images/banner.png"> |
2 | 2 |
|
3 | | -A Binary Ninja plugin for integrating with the RevEng.AI platform. |
| 3 | +# Official Binary Ninja Plugin for RevEng.AI |
4 | 4 |
|
5 | | -## Installation |
| 5 | +### Features Supported |
6 | 6 |
|
7 | | -1. Ensure you have Python 3.9 or later installed |
8 | | -2. Install the required dependencies: |
9 | | - ```bash |
10 | | - pip install -r requirements.txt |
11 | | - ``` |
12 | | -3. Copy the `revengai_bn` directory to your Binary Ninja plugins directory: |
13 | | - - Linux: `~/.binaryninja/plugins/` |
14 | | - - Windows: `%APPDATA%\Binary Ninja\plugins\` |
15 | | - - macOS: `~/Library/Application Support/Binary Ninja/plugins/` |
| 7 | +This plugin brings the power of RevEng.AI directly into Binary Ninja. Here are the main features currently supported: |
16 | 8 |
|
| 9 | +- **Configuration Panel**: Easily configure your API credentials and platform settings. |
| 10 | +- **Choose a Source**: Select the uploaded binary whose analysis will be used for other features such as matching and renaming. |
| 11 | +- **Process Binary**: Upload the currently loaded binary in Binary Ninja to RevEng.AI for analysis. |
| 12 | +- **Auto-Unstrip**: Automatically restore stripped symbols in your binary using our AI engine. |
| 13 | +- **Function Matching**: Compare and match functions from your current binary with those in your existing collections. |
17 | 14 |
|
18 | | -## Requirements |
| 15 | +--- |
19 | 16 |
|
20 | | -- Binary Ninja 5.0 or later |
21 | | -- Python 3.9 or later |
22 | | -- Internet connection for API access |
23 | | -- RevEng.AI API key |
| 17 | +## Installation & Running 🚀 |
| 18 | + |
| 19 | +### Step 1: Locate Binary Ninja Plugins Folder |
| 20 | + |
| 21 | +Locate your Binary Ninja user plugin directory: |
| 22 | + |
| 23 | +- **Tools > Plugins > Open Plugin Folder** from the Binary Ninja menu |
| 24 | + |
| 25 | +> 💡 **Tip**: This opens the correct path regardless of OS or install type. |
| 26 | +
|
| 27 | +Expected output locations: |
| 28 | + - Linux: `~/.binaryninja/plugins/` |
| 29 | + - Windows: `%APPDATA%\Binary Ninja\plugins\` |
| 30 | + - macOS: `~/Library/Application Support/Binary Ninja/plugins/` |
| 31 | + |
| 32 | + |
| 33 | +### Step 2: Download & Install the Plugin |
| 34 | + |
| 35 | +1. Visit the releases page: https://github.com/RevEngAI/reai-ida/releases |
| 36 | +2. Download the latest release (look for the most recent version). |
| 37 | +3. Extract the contents into the opened plugin folder. |
| 38 | +4. Ensure the folder structure looks like this: |
| 39 | + |
| 40 | +``` |
| 41 | +~/.binaryninja/plugins/ |
| 42 | + └── revengai/ |
| 43 | + └── [plugin files...] |
| 44 | +``` |
| 45 | + |
| 46 | +> 🖼️ *Insert screenshot of the correct plugin folder structure* |
| 47 | +
|
| 48 | +### Step 3: Install Dependencies |
| 49 | + |
| 50 | +In your system terminal (not inside Binary Ninja), install required dependencies using: |
| 51 | + |
| 52 | +```bash |
| 53 | +pip install -r ~/.binaryninja/plugins/revengai/requirements.txt |
| 54 | +``` |
| 55 | + |
| 56 | +Or directly from within Binary Ninja’s built-in Python terminal: |
| 57 | + |
| 58 | +```python |
| 59 | +import subprocess |
| 60 | +subprocess.check_call(['pip', 'install', '-r', '/path/to/revengai/requirements.txt']) |
| 61 | +``` |
| 62 | + |
| 63 | +--- |
| 64 | + |
| 65 | +## Using the Plugin ⚙️ |
| 66 | + |
| 67 | +Once installed, you’ll find `RevEng.AI` in the Binary Ninja toolbar menu. |
| 68 | + |
| 69 | +> 🖼️ *Insert screenshot of the RevEng.AI menu in Binary Ninja* |
| 70 | +
|
| 71 | +### 1. Configure the Plugin |
| 72 | + |
| 73 | +Select `Configuration` from the menu to set up your API key and host. |
| 74 | + |
| 75 | +> 🖼️ *Insert screenshot of configuration window* |
| 76 | +
|
| 77 | +Clicking "Continue" will validate your API key and auto-populate available models. |
| 78 | + |
| 79 | +--- |
| 80 | + |
| 81 | +### 2. Choose Source Analysis |
| 82 | + |
| 83 | +If you’ve already uploaded and processed a binary in the platform, you can select it as your working source. |
| 84 | + |
| 85 | +> 🖼️ *Insert screenshot of the choose-source UI* |
| 86 | +
|
| 87 | +This is required before using some features like function matching or auto-unstrip. |
| 88 | + |
| 89 | +--- |
| 90 | + |
| 91 | +### 3. Process a Binary |
| 92 | + |
| 93 | +Upload the currently loaded binary to RevEng.AI: |
| 94 | + |
| 95 | +- Open your binary in Binary Ninja |
| 96 | +- Select `RevEng.AI > Process Binary` |
| 97 | + |
| 98 | +> 🖼️ *Insert screenshot of binary processing prompt* |
| 99 | +
|
| 100 | +The plugin will handle the upload and initiate the analysis. Once completed, an internal analysis ID is assigned. |
| 101 | + |
| 102 | +--- |
| 103 | + |
| 104 | +### 4. Auto-Unstrip |
| 105 | + |
| 106 | +Bring back stripped symbol names automatically: |
| 107 | + |
| 108 | +- Select `RevEng.AI > Auto-Unstrip` |
| 109 | + |
| 110 | +> 🖼️ *Insert screenshot of auto-unstrip in action* |
| 111 | +
|
| 112 | +Functions will be renamed with the most likely matching names from your configured collections. |
| 113 | + |
| 114 | +--- |
| 115 | + |
| 116 | +### 5. Match Functions |
| 117 | + |
| 118 | +Use function matching to identify similar functions in other binaries or collections: |
| 119 | + |
| 120 | +- Open any function |
| 121 | +- Click `RevEng.AI > Match Functions` |
| 122 | + |
| 123 | +> 🖼️ *Insert screenshot of match functions result* |
| 124 | +
|
| 125 | +Matched functions are displayed with similarity and metadata. You can navigate or rename based on the results. |
| 126 | + |
| 127 | +--- |
| 128 | + |
| 129 | +## Troubleshooting |
| 130 | + |
| 131 | +- Only Binary Ninja 3.0+ is supported |
| 132 | +- Python 3.9 or later is required |
| 133 | +- Ensure your API key is valid and your analysis contains function-level information |
| 134 | + |
| 135 | +## Software Requirements |
| 136 | + |
| 137 | +This plugin relies on: |
| 138 | + |
| 139 | +- [reait](https://github.com/RevEngAI/reait) |
| 140 | +- requests |
| 141 | +- PySide6 |
24 | 142 |
|
25 | 143 | ## License |
26 | 144 |
|
27 | 145 | This plugin is released under the GPL-2.0 license. |
| 146 | + |
| 147 | +## Disclaimer |
| 148 | + |
| 149 | +Binary Ninja is a trademark of Vector 35. This project is not affiliated with or endorsed by Vector 35. |
0 commit comments