summaryrefslogtreecommitdiff
path: root/python
diff options
context:
space:
mode:
Diffstat (limited to 'python')
-rw-r--r--python/highlevelil.py17
-rw-r--r--python/lowlevelil.py17
-rw-r--r--python/mediumlevelil.py17
3 files changed, 51 insertions, 0 deletions
diff --git a/python/highlevelil.py b/python/highlevelil.py
index e1d26f62..164be0e1 100644
--- a/python/highlevelil.py
+++ b/python/highlevelil.py
@@ -530,6 +530,14 @@ class HighLevelILInstruction(object):
return self.medium_level_il
@property
+ def mlils(self):
+ exprs = self.function.get_medium_level_il_expr_indexes(self._expr_index)
+ result = []
+ for expr in exprs:
+ result.append(mediumlevelil.MediumLevelILInstruction(self._function.medium_level_il.ssa_form, expr))
+ return result
+
+ @property
def low_level_il(self):
"""Low level IL form of this expression"""
if self.mlil is None:
@@ -924,6 +932,15 @@ class HighLevelILFunction(object):
return None
return result
+ def get_medium_level_il_expr_indexes(self, expr):
+ count = ctypes.c_ulonglong()
+ exprs = core.BNGetMediumLevelILExprIndexesFromHighLevelIL(self.handle, expr, count)
+ result = []
+ for i in range(0, count.value):
+ result.append(exprs[i])
+ core.BNFreeILInstructionList(exprs)
+ return result
+
def get_label(self, label_idx):
result = core.BNGetHighLevelILExprIndexForLabel(self.handle, label_idx)
if result >= core.BNGetHighLevelILExprCount(self.handle):
diff --git a/python/lowlevelil.py b/python/lowlevelil.py
index 870b787a..5f09d06c 100644
--- a/python/lowlevelil.py
+++ b/python/lowlevelil.py
@@ -1016,6 +1016,14 @@ class LowLevelILInstruction(object):
return self.medium_level_il
@property
+ def mlils(self):
+ exprs = self.function.get_medium_level_il_expr_indexes(self.expr_index)
+ result = []
+ for expr in exprs:
+ result.append(binaryninja.mediumlevelil.MediumLevelILInstruction(self._function.medium_level_il, expr))
+ return result
+
+ @property
def mapped_medium_level_il(self):
"""Gets the mapped medium level IL expression corresponding to this expression"""
expr = self._function.get_mapped_medium_level_il_expr_index(self.expr_index)
@@ -2994,6 +3002,15 @@ class LowLevelILFunction(object):
return None
return result
+ def get_medium_level_il_expr_indexes(self, expr):
+ count = ctypes.c_ulonglong()
+ exprs = core.BNGetMediumLevelILExprIndexes(self.handle, expr, count)
+ result = []
+ for i in range(0, count.value):
+ result.append(exprs[i])
+ core.BNFreeILInstructionList(exprs)
+ return result
+
def get_mapped_medium_level_il_instruction_index(self, instr):
med_il = self.mapped_medium_level_il
if med_il is None:
diff --git a/python/mediumlevelil.py b/python/mediumlevelil.py
index 68da31f3..acfc7478 100644
--- a/python/mediumlevelil.py
+++ b/python/mediumlevelil.py
@@ -470,6 +470,14 @@ class MediumLevelILInstruction(object):
return self.low_level_il
@property
+ def llils(self):
+ exprs = self.function.get_low_level_il_expr_indexes(self.expr_index)
+ result = []
+ for expr in exprs:
+ result.append(lowlevelil.LowLevelILInstruction(self._function.low_level_il.ssa_form, expr))
+ return result
+
+ @property
def high_level_il(self):
"""High level IL form of this expression"""
expr = self._function.get_high_level_il_expr_index(self._expr_index)
@@ -1162,6 +1170,15 @@ class MediumLevelILFunction(object):
return None
return result
+ def get_low_level_il_expr_indexes(self, expr):
+ count = ctypes.c_ulonglong()
+ exprs = core.BNGetLowLevelILExprIndexes(self.handle, expr, count)
+ result = []
+ for i in range(0, count.value):
+ result.append(exprs[i])
+ core.BNFreeILInstructionList(exprs)
+ return result
+
def get_high_level_il_instruction_index(self, instr):
high_il = self.high_level_il
if high_il is None: