about summary refs log tree commit diff stats
path: root/example/ida/graph_ir.py
diff options
context:
space:
mode:
authorFabrice Desclaux <fabrice.desclaux@cea.fr>2018-07-18 10:29:17 +0200
committerFabrice Desclaux <fabrice.desclaux@cea.fr>2018-07-18 10:29:17 +0200
commitc6bd8b3a360df50d655989fc5f8249572eb78833 (patch)
tree5f5f5d848cc6238151a4ca30906ef3eb0353ad91 /example/ida/graph_ir.py
parentcf74092981e4f3fa7bed9ce182a38e570653a138 (diff)
downloadfocaccia-miasm-c6bd8b3a360df50d655989fc5f8249572eb78833.tar.gz
focaccia-miasm-c6bd8b3a360df50d655989fc5f8249572eb78833.zip
Example: updt api
Diffstat (limited to 'example/ida/graph_ir.py')
-rw-r--r--example/ida/graph_ir.py16
1 files changed, 9 insertions, 7 deletions
diff --git a/example/ida/graph_ir.py b/example/ida/graph_ir.py
index afd00d5c..3f9a43f2 100644
--- a/example/ida/graph_ir.py
+++ b/example/ida/graph_ir.py
@@ -8,7 +8,8 @@ import idautils
 from miasm2.core.bin_stream_ida import bin_stream_ida
 from miasm2.core.asmblock import is_int
 from miasm2.expression.simplifications import expr_simp
-from miasm2.analysis.data_flow import dead_simp
+from miasm2.analysis.data_flow import dead_simp, remove_empty_assignblks, \
+    merge_blocks
 from miasm2.ir.ir import AssignBlock, IRBlock
 
 from utils import guess_machine, expr2colorstr
@@ -101,7 +102,7 @@ def build_graph(verbose=False, simplify=False):
     start_addr = idc.ScreenEA()
 
     machine = guess_machine(addr=start_addr)
-    mn, dis_engine, ira = machine.mn, machine.dis_engine, machine.ira
+    dis_engine, ira = machine.dis_engine, machine.ira
 
     if verbose:
         print "Arch", dis_engine
@@ -131,6 +132,8 @@ def build_graph(verbose=False, simplify=False):
 
     asmcfg = mdis.dis_multiblock(start_addr)
 
+    entry_points = set([start_addr])
+
     if verbose:
         print "generating graph"
         open('asm_flow.dot', 'w').write(asmcfg.dot())
@@ -165,14 +168,13 @@ def build_graph(verbose=False, simplify=False):
         while modified:
             modified = False
             modified |= dead_simp(ir_arch, ircfg)
-            modified |= ircfg.remove_empty_assignblks()
-            modified |= ircfg.remove_jmp_blocks()
-            modified |= ircfg.merge_blocks()
+            modified |= remove_empty_assignblks(ircfg)
+            modified |= merge_blocks(ircfg, entry_points)
         title += " (simplified)"
 
-    g = GraphMiasmIR(ircfg, title, None)
+    graph = GraphMiasmIR(ircfg, title, None)
 
-    g.Show()
+    graph.Show()
 
 if __name__ == "__main__":
     build_graph(verbose=True, simplify=False)