MCPcopy Create free account
hub / github.com/Vector35/binaryninja-api / generateLines

Method generateLines

python/examples/linear_mlil.py:36–101  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

34 self.updateLines()
35
36 def generateLines(self):
37 if self.function is None:
38 return []
39
40 il = self.function.mlil
41
42 # Set up IL display options
43 renderer = DisassemblyTextRenderer(il)
44 renderer.settings.set_option(DisassemblyOption.ShowAddress)
45 renderer.settings.set_option(DisassemblyOption.ShowVariableTypesWhenAssigned)
46
47 # Sort basic blocks by IL instruction index
48 blocks = il.basic_blocks
49 list(blocks).sort(key=lambda block: block.start)
50
51 # Function header
52 result = []
53 result.append(
54 LinearDisassemblyLine(
55 LinearDisassemblyLineType.FunctionHeaderStartLineType, self.function, None,
56 DisassemblyTextLine([], self.function.start)
57 )
58 )
59 result.append(
60 LinearDisassemblyLine(
61 LinearDisassemblyLineType.FunctionHeaderLineType, self.function, None,
62 DisassemblyTextLine(self.function.type_tokens, self.function.start)
63 )
64 )
65 result.append(
66 LinearDisassemblyLine(
67 LinearDisassemblyLineType.FunctionHeaderEndLineType, self.function, None,
68 DisassemblyTextLine([], self.function.start)
69 )
70 )
71
72 # Display IL instructions in order
73 lastAddr = self.function.start
74 lastBlock = None
75 lineIndex = 0
76 for block in il:
77 if lastBlock is not None:
78 # Blank line between basic blocks
79 result.append(
80 LinearDisassemblyLine(
81 LinearDisassemblyLineType.CodeDisassemblyLineType, self.function, block, DisassemblyTextLine([], lastAddr)
82 )
83 )
84 for i in block:
85 lines = renderer.get_disassembly_text(i.instr_index)
86 lastAddr = i.address
87 lineIndex = 0
88 for line in lines:
89 result.append(
90 LinearDisassemblyLine(LinearDisassemblyLineType.CodeDisassemblyLineType, self.function, block, line[0])
91 )
92 lineIndex += 1
93 lastBlock = block

Callers 2

updateLinesMethod · 0.95
navigateMethod · 0.95

Calls 7

get_disassembly_textMethod · 0.95
DisassemblyTextLineClass · 0.90
set_optionMethod · 0.45
sortMethod · 0.45
appendMethod · 0.45

Tested by

no test coverage detected