diff options
| author | Glenn Smith <glenn@vector35.com> | 2025-04-05 15:46:16 -0400 |
|---|---|---|
| committer | Glenn Smith <glenn@vector35.com> | 2025-04-05 15:53:46 -0400 |
| commit | 3004784707280840879507327117021401615306 (patch) | |
| tree | bf83ee4c45f5b6f554c7a676777ade4b5c115bf5 /python | |
| parent | d222db8bd49f33716a18d0f9fc47833c2f802553 (diff) | |
Add current_il_expr and current_il_expr_index magic vars
Diffstat (limited to 'python')
| -rw-r--r-- | python/scriptingprovider.py | 34 |
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 |
