summaryrefslogtreecommitdiff
path: root/python/scriptingprovider.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/scriptingprovider.py')
-rw-r--r--python/scriptingprovider.py34
1 files changed, 33 insertions, 1 deletions
diff --git a/python/scriptingprovider.py b/python/scriptingprovider.py
index 05017972..74102dc2 100644
--- a/python/scriptingprovider.py
+++ b/python/scriptingprovider.py
@@ -1767,7 +1767,7 @@ PythonScriptingProvider.register_magic_variable(
def _get_current_token(instance: PythonScriptingInstance):
if instance.interpreter.locals["current_ui_token_state"] is not None:
- if instance.interpreter.locals["current_ui_token_state"].valid:
+ if instance.interpreter.locals["current_ui_token_state"].tokenIndex != 0xffffffff: # BN_INVALID_OPERAND
return instance.interpreter.locals["current_ui_token_state"].token
return None
@@ -1809,6 +1809,19 @@ PythonScriptingProvider.register_magic_variable(
)
+def _get_current_il_expr_index(instance: PythonScriptingInstance):
+ if instance.interpreter.locals["current_token"] is not None:
+ return instance.interpreter.locals["current_token"].il_expr_index
+ return None
+
+
+PythonScriptingProvider.register_magic_variable(
+ "current_il_expr_index",
+ _get_current_il_expr_index,
+ depends_on=["current_token"]
+)
+
+
def _get_current_il_function(instance: PythonScriptingInstance):
from binaryninja import FunctionGraphType
if instance.interpreter.locals["current_ui_view_location"] is not None:
@@ -1871,6 +1884,25 @@ PythonScriptingProvider.register_magic_variable(
)
+def _get_current_il_expr(instance: PythonScriptingInstance):
+ if instance.interpreter.locals["current_il_function"] is not None \
+ and instance.interpreter.locals["current_il_expr_index"] is not None:
+ return instance.interpreter.locals["current_il_function"].get_expr(
+ instance.interpreter.locals["current_il_expr_index"]
+ )
+ return None
+
+
+PythonScriptingProvider.register_magic_variable(
+ "current_il_expr",
+ _get_current_il_expr,
+ depends_on=[
+ "current_il_expr_index",
+ "current_il_function"
+ ]
+)
+
+
def _get_current_il_basic_block(instance: PythonScriptingInstance):
if instance.interpreter.locals["current_il_instruction"] is not None:
return instance.interpreter.locals["current_il_instruction"].il_basic_block