You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+82-96Lines changed: 82 additions & 96 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -15,6 +15,18 @@ and use it for Binary Code Similarity to help you Reverse Engineer stripped bina
15
15
## Table of contents
16
16
17
17
-[Key Features](#key-features)
18
+
-[Installation](#installation)
19
+
-[Setup](#setup)
20
+
-[Verifying the Installation](#verifying-the-installation)
21
+
-[Usage](#usage)
22
+
-[Configuration](#configuration)
23
+
-[Analysis](#analysis)
24
+
-[Auto Unstrip](#auto-unstrip)
25
+
-[Function Matching](#function-matching)
26
+
-[AI Decompilation](#ai-decompilation)
27
+
-[Contributing](#contributing)
28
+
-[Reporting Bugs](#reporting-bugs)
29
+
-[Known Issues](#known-issues)
18
30
19
31
### Key features
20
32
@@ -26,12 +38,21 @@ This plugin brings the power of RevEng.AI directly into Binary Ninja. Here are t
26
38
-**Auto-Unstrip**: Automatically restore stripped symbols in your binary using our AI engine.
27
39
-**Match Functions**: Compare and match functions from your current binary with those in your existing collections.
28
40
-**Match Unique Function**: Compare and match a single function from your current binary with those in your existing collections.
29
-
-**View Function in Portal**: Convenient shortcut to explore the function within the platform interface.
41
+
-**View Function in Portal**: Convenient shortcuts to explore the function within the platform interface.
30
42
31
43
32
44
## Installation
33
45
34
-
### Step 1: Locate Binary Ninja Plugins Folder
46
+
The builds for latest stable version of the RevEng.AI Binary Ninja plugin can be downloaded from the [Releases](https://github.com/revengai/plugin-binary-ninja/releases/latest) page.
47
+
48
+
### Supported Binary Ninja versions
49
+
50
+
We support Binary Ninja 3.0+ on Windows, macOS and Linux with Python version `3.10`.
51
+
52
+
### Setup
53
+
54
+
1.**Download** the plugin code for your platform from the [Releases](https://github.com/revengai/plugin-binary-ninja/releases/latest) page.
55
+
2.**Extract** the archive contents into your Binary Ninja plugins directory.
It removes the macOS “quarantine” flag (added to files downloaded from the internet), so the system won’t block or warn when loading the plugin.
71
-
72
-
---
73
-
74
-
## Using the Plugin ⚙️
75
-
76
-
Once installed, you’ll find `RevEng.AI` listed in the Binary Ninja plugins toolbar menu.
77
+
3.**Restart** Binary Ninja if it was running.
77
78
78
-
<imgsrc="images/plugintoolbar.png" >
79
+
### Verifying the Installation
80
+
Once Binary Ninja is open, confirm that the RevEng.AI menu appears in the plugins menu bar.
81
+
If no errors are displayed in the console and the menu loads, your installation is complete.
79
82
80
-
Make sure to restart Binary Ninja completely after installation.
81
-
Then, check the Plugins menu — the RevEng.AI plugin should be visible.
82
-
Finally, load a binary and explore the features described below.
83
+
[]()
83
84
84
-
### 1. Configure the Plugin
85
+
##Usage
85
86
86
-
Select `Configuration` from the menu to set up your API key and host.
87
+
In this section, we provide an example workflow for our plugin.
87
88
88
-
<imgsrc="./images/config.png" >
89
+
### Configuration
89
90
90
-
Clicking "Continue" will validate your API key.
91
+
The first thing we need to do is configure the plugin with our API key and the host to use.
91
92
92
-
---
93
+
When you load the plugin for the first time, or by selecting `RevEng.AI -> Configure`, you will be guided through the configuration process.
93
94
94
-
### 2. Process a Binary
95
+
[]()
95
96
96
-
Upload the currently loaded binary to RevEng.AI:
97
+
Enter your API Key from the [RevEng.AI Portal](https://portal.reveng.ai/settings) into the API Key field
98
+
where it will be validated and saved for future use.
97
99
98
-
- Select `RevEng.AI > Process Binary`
100
+
### Analysis
99
101
100
-
<imgsrc="./images/processbinary.png" >
102
+
Once configured, you can upload the current binary for analysis by selecting `RevEng.AI -> Analysis -> Create New`.
103
+
It's usually enough to keep the default options, but you can adjust the analysis settings as needed.
101
104
102
-
Before starting the process, you can add a PDB file and debug information, assign custom tags for better tracking, choose which AI model you want to use, and decide whether to keep the analysis private (default) or make it publicly available.
103
-
The plugin will handle the upload and initiate the analysis. Once completed, an internal analysis ID is assigned.
105
+

104
106
105
-
---
107
+
If you have already processed your binary on the platform or if there are publicly available analyses, you can select
108
+
one as your working source without needing to upload again.
106
109
107
-
### 3. Choose Source Analysis
110
+
- Select `RevEng.AI -> Analysis -> Attach to existing`
108
111
109
-
If you have already processed your binary on the platform or if there are publicly available analyses, you can select one as your working source.
112
+

110
113
111
-
- Select `RevEng.AI > Choose Source`
114
+
This is required before using features like function matching or auto unstrip.
112
115
113
-
<imgsrc="./images/choosesource.png" >
116
+
### Auto Unstrip
114
117
115
-
This is required before using some features like function matching or auto unstrip.
118
+
The `Auto Unstrip` tool allows you to automatically recover function names based on our debug symbol database. It is
119
+
an automated process that will recover all function names from the currently attached binary.
116
120
117
-
---
121
+
You can access it by selecting `RevEng.AI -> Auto Unstrip` from the menu.
118
122
119
-
### 4. Auto Unstrip
123
+
### Function Matching
120
124
121
-
Bring back symbol names automatically:
125
+
The function matching tool allows you to rename functions in a binary based on similarity to functions in our database.
126
+
It is a manual process that can be done on a per-function basis, or in batch mode for the entire binary. It allows you
127
+
to have more control over which functions are renamed, and when as well as the ability to review the suggested names before
128
+
applying them.
122
129
123
-
- Select `RevEng.AI > Auto Unstrip`
130
+
To match with all functions in the binary, select `RevEng.AI -> Function Matching`.
Or to match a single function, select the function and then navigate to `RevEng.AI -> Functions -> Match Function`.
126
134
127
-
Functions will be renamed with the most likely matching names from your configured collections.
135
+
Adjust the filters as necessary and when ready click `Match Functions`.
136
+
For multiple functions at most 1 result will be returned. For individual functions, up to 10 functions will be returned.
137
+
You can then decide to rename a function to one of the suggested names by clicking `Rename Matched Functions`.
128
138
129
-
---
139
+
### AI Decompilation
130
140
131
-
### 5. Match Functions
141
+
The `AI Decompilation` tool allows you to get AI generated decompilation of selected functions. You can access it by
142
+
selecting a function in Binary Ninja's listing or decompiler view and selecting `RevEng.AI -> Functions -> AI Decompilation`.
132
143
133
-
Use function matching to identify similar functions in other binaries or collections:
144
+

134
145
135
-
- Click `RevEng.AI > Match Functions`
146
+
The window will show you the AI generated decompilation of the selected function as well as a
147
+
natural language explanation of what the function does.
136
148
137
-
<imgsrc="./images/matchedfunctions.png" >
149
+
The window can be pinned and will update as you select different functions.
138
150
139
-
Matched functions are displayed based on the given confidence value. You can navigate or rename based on the results.
151
+
## Contributing
140
152
141
-
---
153
+
We welcome pull requests from the community.
142
154
143
-
### 6. Match Current Function
155
+
The plugin is still undergoing active development currently, and we are looking for feedback on how to improve it.
144
156
145
-
Use function matching to identify similar functions in other binaries or collections:
157
+
### Reporting Bugs
146
158
147
-
- Click `RevEng.AI > Match Current Functions`
159
+
If you've found a bug in the plugin, please open an issue via [GitHub](https://github.com/RevEngAi/plugin-binary-ninja/issues/new/choose), or create a post on our [Discord](https://discord.com/invite/ZwQTvzfSbA).
148
160
149
-
<imgsrc="./images/currentfunction.png" >
161
+
## Known Issues
150
162
151
-
Matched functions are displayed based on the given similarity value. You can navigate or rename based on the results.
163
+
- On macOS, you might need to remove the quarantine attribute from the plugin folder to allow Binary Ninja to load it properly.
152
164
153
-
---
154
-
155
-
### 7. View Current Function in Portal
156
-
157
-
Quick and easy way to open the current function in the RevEng.AI Portal.
158
-
159
-
- Click `RevEng.AI > View Function in Portal`
160
-
161
-
<imgsrc="./images/output.gif" >
162
-
163
-
---
164
-
165
-
166
-
## Troubleshooting
167
-
168
-
- Only Binary Ninja 3.0+ is supported
169
-
- Python 3.9 or later is required
170
-
- Ensure your API key is valid and your analysis contains function-level information
171
-
172
-
## Software Requirements
173
-
174
-
This plugin relies on:
175
-
176
-
-[reait](https://github.com/RevEngAI/reait)
177
-
- requests
178
-
- PySide6
179
-
- libbs
180
-
181
-
## License
165
+
After installation, run the following command:
182
166
183
-
This plugin is released under the GPL-2.0 license.
0 commit comments