File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 77from reai_toolkit .features .view_function_in_portal import ViewFunctionInPortalFeature
88from reai_toolkit .features .ai_decompiler import AIDecompilerFeature
99from reai_toolkit .features .detach import DetachAnalysisFeature
10+ from reai_toolkit .features .view_analysis import ViewAnalysisFeature
1011__all__ = [
1112 'ConfigurationFeature' ,
1213 'UploadFeature' ,
1718 'ViewFunctionInPortalFeature' ,
1819 'AIDecompilerFeature'
1920 'DetachAnalysisFeature'
21+ 'ViewAnalysisFeature'
2022 ]
Original file line number Diff line number Diff line change @@ -9,7 +9,7 @@ def __init__(self, config=None):
99
1010 def register (self ):
1111 PluginCommand .register (
12- "RevEng.AI\\ Analysis\\ \u200b \u200b Detach Analysis" ,
12+ "RevEng.AI\\ Analysis\\ \u200b \u200b \ u200b Detach Analysis" ,
1313 "Detach from the current RevEng.AI analysis" ,
1414 self .verify_detach ,
1515 self .is_valid
Original file line number Diff line number Diff line change 1+ from reai_toolkit .utils import BaseAuthFeature
2+ from binaryninja import PluginCommand , log_info , BinaryView
3+ from binaryninja .interaction import InteractionHandler
4+
5+ class ViewAnalysisFeature (BaseAuthFeature ):
6+ def __init__ (self , config = None ):
7+ super ().__init__ (config )
8+
9+ def register (self ):
10+ PluginCommand .register (
11+ "RevEng.AI\\ Analysis\\ \u200b \u200b View Analysis" ,
12+ "View the current analysis in the RevEng.AI portal" ,
13+ self .open_analysis ,
14+ self .is_valid
15+ )
16+
17+ def open_analysis (self , bv : BinaryView ):
18+ url = f"{ self .config .portal_url } /analyses/{ self .config .binary_id } "
19+
20+ if url :
21+ log_info (f"RevEng.AI | Opening analysis in browser: { url } " )
22+ InteractionHandler ().open_url (url )
23+ else :
24+ log_info ("RevEng.AI | No URL configured for viewing analysis" )
25+
26+ def is_valid (self , bv : BinaryView ):
27+ return self .config .is_configured == True and self .config .analysis_id is not None
28+
Original file line number Diff line number Diff line change 88from reai_toolkit .features import ViewFunctionInPortalFeature
99from reai_toolkit .features import AIDecompilerFeature
1010from reai_toolkit .features import DetachAnalysisFeature
11+ from reai_toolkit .features import ViewAnalysisFeature
1112class RevengAIPlugin :
1213 def __init__ (self ):
1314 log_info ("RevEng.AI | Initializing plugin" )
@@ -20,6 +21,7 @@ def __init__(self):
2021 self .view_function_in_portal_feature = ViewFunctionInPortalFeature (self .config_feature .get_config ())
2122 self .ai_decompiler_feature = AIDecompilerFeature (self .config_feature .get_config ())
2223 self .detach_analysis_feature = DetachAnalysisFeature (self .config_feature .get_config ())
24+ self .view_analysis_feature = ViewAnalysisFeature (self .config_feature .get_config ())
2325 self ._register_features ()
2426
2527 def _register_features (self ):
@@ -32,4 +34,5 @@ def _register_features(self):
3234 self .match_current_function_feature .register ()
3335 self .view_function_in_portal_feature .register ()
3436 self .ai_decompiler_feature .register ()
35- self .detach_analysis_feature .register ()
37+ self .detach_analysis_feature .register ()
38+ self .view_analysis_feature .register ()
You can’t perform that action at this time.
0 commit comments