Skip to content

Commit 14d05fe

Browse files
committed
dev: finishing fetch data types and also readme update
1 parent dc026e2 commit 14d05fe

39 files changed

Lines changed: 445 additions & 218 deletions

README.md

Lines changed: 139 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,149 @@
1-
# <img src="./images/logo.png" width=20> RevEng.AI Binary Ninja Plugin
1+
# <img src="./images/banner.png">
22

3-
A Binary Ninja plugin for integrating with the RevEng.AI platform.
3+
# Official Binary Ninja Plugin for RevEng.AI
44

5-
## Installation
5+
### Features Supported
66

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:
168

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.
1714

18-
## Requirements
15+
---
1916

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
24142

25143
## License
26144

27145
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.

features/match_functions/tab_result.py

Lines changed: 0 additions & 175 deletions
This file was deleted.

images/banner.png

130 KB
Loading
File renamed without changes.

features/auto_unstrip/__init__.py renamed to revengai/features/auto_unstrip/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from binaryninja import PluginCommand, log_info, BinaryView
22
from .auto_unstrip import AutoUnstrip
33
from .auto_unstrip_dialog import AutoUnstripDialog
4-
from revengai_bn.utils import BaseAuthFeature
4+
from revengai.utils import BaseAuthFeature
55

66
class AutoUnstripFeature(BaseAuthFeature):
77
def __init__(self, config=None):
File renamed without changes.

features/auto_unstrip/auto_unstrip_dialog.py renamed to revengai/features/auto_unstrip/auto_unstrip_dialog.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
from PySide6.QtGui import QPixmap, QIcon
88
from PySide6.QtCore import QCoreApplication
99
from PySide6.QtWidgets import QMessageBox
10-
from revengai_bn.utils import create_progress_dialog
10+
from revengai.utils import create_progress_dialog
1111
from .auto_unstrip_thread import AutoUnstripThread
1212
import os
1313

File renamed without changes.

features/choose_source/__init__.py renamed to revengai/features/choose_source/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from binaryninja import PluginCommand, log_info, BinaryView
22
from .choose_source import ChooseSource
33
from .choose_source_dialog import ChooseSourceDialog
4-
from revengai_bn.utils import BaseAuthFeature
4+
from revengai.utils import BaseAuthFeature
55

66
class ChooseSourceFeature(BaseAuthFeature):
77
def __init__(self, config=None):

0 commit comments

Comments
 (0)