diff options
| author | Xusheng <xusheng@vector35.com> | 2023-08-11 17:01:07 +0800 |
|---|---|---|
| committer | Xusheng <xusheng@vector35.com> | 2023-08-11 17:01:07 +0800 |
| commit | 656a95f0f810bf666b2894359fb7f24dc5f7bbf5 (patch) | |
| tree | 86c953758b7daa485cd40bc47638d1b8b3a262f9 /python/scriptingprovider.py | |
| parent | a693c795f73686eb8901eeb70e252b9ca796049d (diff) | |
Add current_il_instructions magic variable in the Python console. Fix https://github.com/Vector35/binaryninja-api/issues/4327.
Diffstat (limited to 'python/scriptingprovider.py')
| -rw-r--r-- | python/scriptingprovider.py | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/python/scriptingprovider.py b/python/scriptingprovider.py index 0a0f9ffa..10f97f0e 100644 --- a/python/scriptingprovider.py +++ b/python/scriptingprovider.py @@ -680,6 +680,7 @@ class PythonScriptingInstance(ScriptingInstance): "current_il_index", "current_il_function", "current_il_instruction", + "current_il_instructions", "current_il_basic_block" } self.locals = BlacklistedDict( @@ -709,6 +710,7 @@ class PythonScriptingInstance(ScriptingInstance): self.active_file_offset = None self.active_dbg = None self.active_il_index = 0 + self.selection_start_il_index = 0 self.active_il_function = None self.locals.blacklist_enabled = False @@ -899,6 +901,9 @@ from binaryninja import * elif action_handler is not None: action_context = action_handler.actionContext() + if view is not None: + self.selection_start_il_index = view.getSelectionStartILInstructionIndex() + token_state = None token = None var = None @@ -935,15 +940,26 @@ from binaryninja import * except: self.locals["current_il_instruction"] = None + invalid_il_index = 0xffffffffffffffff + if invalid_il_index not in (self.active_il_index, self.selection_start_il_index): + il_start = min(self.active_il_index, self.selection_start_il_index) + il_end = max(self.active_il_index, self.selection_start_il_index) + self.locals["current_il_instructions"] = (self.active_il_function[i] for i in \ + range(il_start, il_end + 1)) + else: + self.locals["current_il_instructions"] = None + if self.locals["current_il_instruction"]: self.locals["current_il_basic_block"] = self.locals["current_il_instruction"].il_basic_block else: self.locals["current_il_instruction"] = None + self.locals["current_il_instructions"] = None self.locals["current_il_basic_block"] = None else: self.locals["current_il_index"] = None self.locals["current_il_function"] = None self.locals["current_il_instruction"] = None + self.locals["current_il_instructions"] = None self.locals["current_il_basic_block"] = None self.active_il_function = None @@ -971,6 +987,7 @@ from binaryninja import * self.locals["current_il_index"] = None self.locals["current_il_function"] = None self.locals["current_il_instruction"] = None + self.locals["current_il_instructions"] = None self.locals["current_il_basic_block"] = None self.locals.blacklist_enabled = True |
