diff options
| author | Brian Potchik <brian@vector35.com> | 2020-09-27 23:20:17 -0400 |
|---|---|---|
| committer | Brian Potchik <brian@vector35.com> | 2020-09-27 23:20:17 -0400 |
| commit | 0ff1794278a96d0b5c23a0fc0280d1faf5687a94 (patch) | |
| tree | 3f6004fcf8450a46bd91e44f0636cbc49c70a832 /python/mediumlevelil.py | |
| parent | ba41ea9735bd55328a4e2b6c65fdbdb245b9ccad (diff) | |
Add High Level IL Mappings.
Diffstat (limited to 'python/mediumlevelil.py')
| -rw-r--r-- | python/mediumlevelil.py | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/python/mediumlevelil.py b/python/mediumlevelil.py index 857d8cff..68da31f3 100644 --- a/python/mediumlevelil.py +++ b/python/mediumlevelil.py @@ -470,6 +470,19 @@ class MediumLevelILInstruction(object): return self.low_level_il @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) + if expr is None: + return None + return binaryninja.highlevelil.HighLevelILInstruction(self._function.high_level_il, expr) + + @property + def hlil(self): + """Alias for high_level_il""" + return self.high_level_il + + @property def ssa_memory_version(self): """Version of active memory contents in SSA form for this instruction""" return core.BNGetMediumLevelILSSAMemoryVersionAtILInstruction(self._function.handle, self._instr_index) @@ -927,6 +940,18 @@ class MediumLevelILFunction(object): """Alias for low_level_il""" return self.low_level_il + @property + def high_level_il(self): + """High level IL for this medium level IL.""" + result = core.BNGetHighLevelILForMediumLevelIL(self.handle) + if not result: + return None + return binaryninja.highlevelil.HighLevelILFunction(self._arch, result, self._source_function) + + @property + def hlil(self): + return self.high_level_il + def get_instruction_start(self, addr, arch = None): if arch is None: arch = self._arch @@ -1137,6 +1162,24 @@ class MediumLevelILFunction(object): return None return result + def get_high_level_il_instruction_index(self, instr): + high_il = self.high_level_il + if high_il is None: + return None + result = core.BNGetHighLevelILInstructionIndex(self.handle, instr) + if result >= core.BNGetHighLevelILInstructionCount(high_il.handle): + return None + return result + + def get_high_level_il_expr_index(self, expr): + high_il = self.high_level_il + if high_il is None: + return None + result = core.BNGetHighLevelILExprIndex(self.handle, expr) + if result >= core.BNGetHighLevelILExprCount(high_il.handle): + return None + return result + def create_graph(self, settings = None): if settings is not None: settings_obj = settings.handle |
