about summary refs log tree commit diff stats
path: root/example/ida/graph_ir.py
diff options
context:
space:
mode:
Diffstat (limited to 'example/ida/graph_ir.py')
-rw-r--r--example/ida/graph_ir.py18
1 files changed, 10 insertions, 8 deletions
diff --git a/example/ida/graph_ir.py b/example/ida/graph_ir.py
index 29f91efa..b8afe5fc 100644
--- a/example/ida/graph_ir.py
+++ b/example/ida/graph_ir.py
@@ -17,7 +17,7 @@ from miasm.ir.ir import IRBlock, AssignBlock
 from miasm.analysis.data_flow import load_from_int
 from utils import guess_machine, expr2colorstr
 from miasm.analysis.simplifier import IRCFGSimplifierCommon, IRCFGSimplifierSSA
-
+from miasm.core.locationdb import LocationDB
 
 
 
@@ -200,19 +200,21 @@ def build_graph(start_addr, type_graph, simplify=False, dontmodstack=True, loadi
         print(fname)
 
     bs = bin_stream_ida()
-    mdis = dis_engine(bs)
-    ir_arch = IRADelModCallStack(mdis.loc_db)
+    loc_db = LocationDB()
+
+    mdis = dis_engine(bs, loc_db=loc_db)
+    ir_arch = IRADelModCallStack(loc_db)
 
 
     # populate symbols with ida names
     for addr, name in idautils.Names():
         if name is None:
             continue
-        if (mdis.loc_db.get_offset_location(addr) or
-            mdis.loc_db.get_name_location(name)):
+        if (loc_db.get_offset_location(addr) or
+            loc_db.get_name_location(name)):
             # Symbol alias
             continue
-        mdis.loc_db.add_location(name, addr)
+        loc_db.add_location(name, addr)
 
     if verbose:
         print("start disasm")
@@ -220,7 +222,7 @@ def build_graph(start_addr, type_graph, simplify=False, dontmodstack=True, loadi
         print(hex(start_addr))
 
     asmcfg = mdis.dis_multiblock(start_addr)
-    entry_points = set([mdis.loc_db.get_offset_location(start_addr)])
+    entry_points = set([loc_db.get_offset_location(start_addr)])
     if verbose:
         print("generating graph")
         open('asm_flow.dot', 'w').write(asmcfg.dot())
@@ -239,7 +241,7 @@ def build_graph(start_addr, type_graph, simplify=False, dontmodstack=True, loadi
                 for dst, src in viewitems(assignblk)
             }
             irs.append(AssignBlock(new_assignblk, instr=assignblk.instr))
-        ircfg.blocks[irb.loc_key] = IRBlock(irb.loc_db, irb.loc_key, irs)
+        ircfg.blocks[irb.loc_key] = IRBlock(loc_db, irb.loc_key, irs)
 
     if verbose:
         out = ircfg.dot()