summaryrefslogtreecommitdiff
path: root/python/lowlevelil.py
diff options
context:
space:
mode:
authorBrian Potchik <brian@vector35.com>2020-09-27 23:20:17 -0400
committerBrian Potchik <brian@vector35.com>2020-09-27 23:20:17 -0400
commit0ff1794278a96d0b5c23a0fc0280d1faf5687a94 (patch)
tree3f6004fcf8450a46bd91e44f0636cbc49c70a832 /python/lowlevelil.py
parentba41ea9735bd55328a4e2b6c65fdbdb245b9ccad (diff)
Add High Level IL Mappings.
Diffstat (limited to 'python/lowlevelil.py')
-rw-r--r--python/lowlevelil.py27
1 files changed, 27 insertions, 0 deletions
diff --git a/python/lowlevelil.py b/python/lowlevelil.py
index 9435f07b..64a862d6 100644
--- a/python/lowlevelil.py
+++ b/python/lowlevelil.py
@@ -1026,6 +1026,15 @@ class LowLevelILInstruction(object):
return self.mapped_medium_level_il
@property
+ def high_level_il(self):
+ """Gets the high level IL expression corresponding to this expression (may be None for eliminated instructions)"""
+ return self.mlil.hlil
+
+ @property
+ def hlil(self):
+ return self.high_level_il
+
+ @property
def value(self):
"""Value of expression if constant or a known value (read-only)"""
value = core.BNGetLowLevelILExprValue(self._function.handle, self.expr_index)
@@ -2999,6 +3008,24 @@ class LowLevelILFunction(object):
return None
return result
+ def get_high_level_il_instruction_index(self, instr):
+ med_il = self.medium_level_il
+ if med_il is None:
+ return None
+ mlil_instr = self.get_medium_level_il_instruction_index(instr)
+ if mlil_instr is None:
+ return None
+ return med_il.get_high_level_il_instruction_index(mlil_instr)
+
+ def get_high_level_il_expr_index(self, expr):
+ med_il = self.medium_level_il
+ if med_il is None:
+ return None
+ mlil_expr = self.get_medium_level_il_expr_index(expr)
+ if mlil_expr is None:
+ return None
+ return med_il.get_high_level_il_expr_index(mlil_expr)
+
def create_graph(self, settings = None):
if settings is not None:
settings_obj = settings.handle