Skip to content

Commit b157bf9

Browse files
authored
Merge pull request #9 from RevEngAI/feat-release-testing
feat: pre-release testing
2 parents 0c559d4 + 0bee660 commit b157bf9

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+201
-216
lines changed

README.md

Lines changed: 82 additions & 96 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,18 @@ and use it for Binary Code Similarity to help you Reverse Engineer stripped bina
1515
## Table of contents
1616

1717
- [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)
1830

1931
### Key features
2032

@@ -26,12 +38,21 @@ This plugin brings the power of RevEng.AI directly into Binary Ninja. Here are t
2638
- **Auto-Unstrip**: Automatically restore stripped symbols in your binary using our AI engine.
2739
- **Match Functions**: Compare and match functions from your current binary with those in your existing collections.
2840
- **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.
3042

3143

3244
## Installation
3345

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

3657
Locate your Binary Ninja user plugin directory:
3758

@@ -45,143 +66,108 @@ Expected output locations:
4566
- macOS: `~/Library/Application Support/Binary Ninja/plugins/`
4667

4768

48-
### Step 2: Download & Install the Plugin
49-
50-
1. Visit the releases page: https://github.com/RevEngAI/reai-ida/releases
51-
2. Download the latest release (look for the most recent version).
52-
3. Extract the contents into the opened plugin folder.
53-
4. Ensure the folder structure looks like this:
54-
69+
After extraction, the directory structure should look like this:
5570
```
56-
Example in Linux...
71+
Example for Linux...
5772
~/.binaryninja/plugins/
5873
└── reai_toolkit/
5974
└── [plugin files...]
6075
```
6176

62-
### For Mac Users
63-
64-
After installation, run the following command:
65-
66-
```bash
67-
xattr -dr com.apple.quarantine "$HOME/Library/Application Support/Binary Ninja/plugins/reai_toolkit"
68-
```
69-
70-
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.
7778

78-
<img src="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.
7982

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+
[![Plugin Menu](images/installed.png)]()
8384

84-
### 1. Configure the Plugin
85+
## Usage
8586

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

88-
<img src="./images/config.png" >
89+
### Configuration
8990

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

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

94-
### 2. Process a Binary
95+
[![Plugin Menu](images/configure.png)]()
9596

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

98-
- Select `RevEng.AI > Process Binary`
100+
### Analysis
99101

100-
<img src="./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.
101104

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+
![Analysis Window](images/create-new.png)
104106

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

107-
### 3. Choose Source Analysis
110+
- Select `RevEng.AI -> Analysis -> Attach to existing`
108111

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+
![Atach to existing](images/attach-to-existing.png)
110113

111-
- Select `RevEng.AI > Choose Source`
114+
This is required before using features like function matching or auto unstrip.
112115

113-
<img src="./images/choosesource.png" >
116+
### Auto Unstrip
114117

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

117-
---
121+
You can access it by selecting `RevEng.AI -> Auto Unstrip` from the menu.
118122

119-
### 4. Auto Unstrip
123+
### Function Matching
120124

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

123-
- Select `RevEng.AI > Auto Unstrip`
130+
To match with all functions in the binary, select `RevEng.AI -> Function Matching`.
131+
![Function Matching Window](images/function-matching-full.png)
124132

125-
<img src="./images/autounstrip.png" >
133+
Or to match a single function, select the function and then navigate to `RevEng.AI -> Functions -> Match Function`.
126134

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`.
128138

129-
---
139+
### AI Decompilation
130140

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`.
132143

133-
Use function matching to identify similar functions in other binaries or collections:
144+
![AI Decomp](images/ai-decompilation.png)
134145

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

137-
<img src="./images/matchedfunctions.png" >
149+
The window can be pinned and will update as you select different functions.
138150

139-
Matched functions are displayed based on the given confidence value. You can navigate or rename based on the results.
151+
## Contributing
140152

141-
---
153+
We welcome pull requests from the community.
142154

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

145-
Use function matching to identify similar functions in other binaries or collections:
157+
### Reporting Bugs
146158

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).
148160

149-
<img src="./images/currentfunction.png" >
161+
## Known Issues
150162

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

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-
<img src="./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:
182166

183-
This plugin is released under the GPL-2.0 license.
167+
```bash
168+
xattr -dr com.apple.quarantine "$HOME/Library/Application Support/Binary Ninja/plugins/reai_toolkit"
169+
```
184170

185-
## Disclaimer
171+
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.
186172

187-
Binary Ninja is a trademark of Vector 35. This project isn't affiliated with or endorsed by Vector 35.
173+
---

images/ai-decompilation.png

92.1 KB
Loading

images/attach-to-existing.png

89.4 KB
Loading

images/autounstrip.png

-67.7 KB
Binary file not shown.

images/banner.png

-130 KB
Binary file not shown.

images/choosesource.png

-56.4 KB
Binary file not shown.

images/config.png

-48 KB
Binary file not shown.

images/configure.png

92.9 KB
Loading

images/create-new.png

53 KB
Loading

images/currentfunction.png

-130 KB
Binary file not shown.

0 commit comments

Comments
 (0)