Skip to content

Commit 2da2890

Browse files
committed
fix: dynamic model id
1 parent ad5664b commit 2da2890

4 files changed

Lines changed: 22 additions & 8 deletions

File tree

reai_toolkit/features/choose_source/choose_source.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ def choose_source(self, bv: BinaryView, chose: str):
1111
log_info(f"RevEng.AI | Item: {chose}")
1212
new_binary_id = int(chose.split("Binary ID: ")[1].split(" -")[0])
1313
new_analysis_id = int(chose.split("Analysis ID: ")[1].split(" -")[0])
14+
new_model_id = int(chose.split("Model_ID: ")[1])
1415
analysis_id = self.config.get_analysis_id(bv)
1516
binary_id = self.config.get_binary_id(bv)
1617
if binary_id == new_binary_id and analysis_id == new_analysis_id:
@@ -19,7 +20,8 @@ def choose_source(self, bv: BinaryView, chose: str):
1920

2021
log_info(f"RevEng.AI | Changing Binary ID: {binary_id} to {new_binary_id}")
2122
log_info(f"RevEng.AI | Changing Analysis ID: {analysis_id} to {new_analysis_id}")
22-
self.config.set_current_info(new_binary_id, new_analysis_id)
23+
log_info(f"RevEng.AI | Changing Model ID to {new_model_id}")
24+
self.config.set_current_info(new_binary_id, new_analysis_id, new_model_id)
2325

2426
return True, "Binary ID changed successfully."
2527
except Exception as e:
@@ -45,7 +47,7 @@ def get_analysis(self, bv: BinaryView):
4547

4648
options = []
4749
for result in results:
48-
option = f"Name: {result.binary_name[:10]}{'...' if len(result.binary_name) > 10 else ''} - Binary ID: {result.binary_id} - Analysis ID: {result.analysis_id} - Model: {result.model_name} - Created at: {result.created_at.strftime('%m/%d/%Y %H:%M')}"
50+
option = f"Name: {result.binary_name[:10]}{'...' if len(result.binary_name) > 10 else ''} - Binary ID: {result.binary_id} - Analysis ID: {result.analysis_id} - Model: {result.model_name} - Created at: {result.created_at.strftime('%m/%d/%Y %H:%M')} - Model_ID: {result.model_id}"
4951
log_info(f"RevEng.AI | Analysis: {option}")
5052
if result.binary_id == binary_id and result.analysis_id == analysis_id:
5153
options.insert(0, option)

reai_toolkit/features/configuration/config.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -105,16 +105,18 @@ def get_all_analyses(self):
105105
return json.loads(all_analyses)
106106

107107

108-
def set_current_info(self, binary_id, analysis_id):
108+
def set_current_info(self, binary_id, analysis_id, model_id):
109109

110110
try:
111111
binary_id = int(binary_id)
112112
analysis_id = int(analysis_id)
113+
model_id = int(model_id)
113114
self.binary_id = binary_id
114115
self.analysis_id = analysis_id
116+
self.model_id = model_id
115117

116118
all_analyses = self.get_all_analyses()
117-
all_analyses[self.sha256] = {"binary_id": binary_id, "analysis_id": analysis_id}
119+
all_analyses[self.sha256] = {"binary_id": binary_id, "analysis_id": analysis_id, "model_id": model_id}
118120
settings = Settings()
119121

120122
settings.set_json("revengai.all_analyses", json.dumps(all_analyses))
@@ -142,6 +144,7 @@ def init_config(self, bv: BinaryView):
142144
log_info(f"RevEng.AI | Binary found in saved configurations, binary_id: {all_analyses[self.sha256]['binary_id']} and analysis_id: {all_analyses[self.sha256]['analysis_id']}")
143145
self.binary_id = all_analyses[self.sha256]["binary_id"]
144146
self.analysis_id = all_analyses[self.sha256]["analysis_id"]
147+
self.model_id = all_analyses[self.sha256]["model_id"]
145148
else:
146149
log_info(f"RevEng.AI | Binary not found in saved configurations, searching in RevEng.AI...")
147150
with revengai.ApiClient(self.api_config) as api_client:
@@ -152,8 +155,9 @@ def init_config(self, bv: BinaryView):
152155
else:
153156
self.binary_id = api_response.data.results[0].binary_id
154157
self.analysis_id = api_response.data.results[0].analysis_id
158+
self.model_id = api_response.data.results[0].model_id
155159
log_info(f"RevEng.AI | Binary found in RevEng.AI, binary_id: {self.binary_id}")
156-
self.set_current_info(self.binary_id, self.analysis_id)
160+
self.set_current_info(self.binary_id, self.analysis_id, self.model_id)
157161

158162
return True, ""
159163

reai_toolkit/features/match_current_function/match_current_function.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ def parse_confidence(item):
9494
})
9595

9696
schema_ann_model = revengai.FunctionMatchingRequest.from_dict({
97-
"model_id": 21,
97+
"model_id": self.config.model_id,
9898
"function_ids": [analyzed_function["function_id"]],
9999
"filters": filters,
100100
"result_per_function": 20,

reai_toolkit/utils/monitoring/process_binary_monitor.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,16 @@ def _worker(bv: BinaryView, bid: int, aid: int):
5353
f"RevEng.AI | Scheduled next status check for: {basename(bv.file.filename)} [Binary ID: {bid}] [Analysis ID: {aid}]"
5454
)
5555
else:
56-
callback(bid, aid)
57-
log_info(f"RevEng.AI | Analysis completed with status: {status} for Binary ID: {bid} and Analysis ID: {aid}")
56+
57+
# Anaysis is complete, fetch model_id and invoke callback
58+
with revengai.ApiClient(api_config) as api_client:
59+
api_instance = revengai.AnalysesCoreApi(api_client)
60+
analysis_details: revengai.BaseResponseBasic = api_instance.get_analysis_basic_info(
61+
analysis_id=analysis_id
62+
)
63+
model_id = analysis_details.data.model_id
64+
callback(bid, aid, model_id)
65+
log_info(f"RevEng.AI | Analysis completed with status: {status} for Binary ID: {bid} | Analysis ID: {aid} | Model ID: {model_id}")
5866
except RequestException as ex:
5967
log_error(f"RevEng.AI | Error getting binary analysis status: {str(ex)}")
6068
except Exception as ex:

0 commit comments

Comments
 (0)