about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorFabrice Desclaux <fabrice.desclaux@cea.fr>2020-10-30 14:56:05 +0100
committerFabrice Desclaux <fabrice.desclaux@cea.fr>2020-10-30 14:56:05 +0100
commiteba583bfb85978d7eadd2eb53095e4100e095f60 (patch)
treee89b30eac8dee961a9e442d6d0a3425f41b6f314
parentb8af43b26480b65d25f6fc3832884fa1df4db4d0 (diff)
downloadmiasm-eba583bfb85978d7eadd2eb53095e4100e095f60.tar.gz
miasm-eba583bfb85978d7eadd2eb53095e4100e095f60.zip
Fix ida examples
-rw-r--r--example/ida/ctype_propagation.py11
-rw-r--r--example/ida/depgraph.py13
-rw-r--r--example/ida/graph_ir.py18
-rw-r--r--example/ida/symbol_exec.py8
4 files changed, 30 insertions, 20 deletions
diff --git a/example/ida/ctype_propagation.py b/example/ida/ctype_propagation.py
index 35cd53bb..1f55a975 100644
--- a/example/ida/ctype_propagation.py
+++ b/example/ida/ctype_propagation.py
@@ -17,6 +17,7 @@ from miasm.expression.expression import ExprLoc, ExprInt, ExprOp, ExprAssign
 from miasm.ir.symbexec_types import SymbExecCType
 from miasm.expression.parser import str_to_expr
 from miasm.analysis.cst_propag import add_state, propagate_cst_expr
+from miasm.core.locationdb import LocationDB
 
 from utils import guess_machine
 
@@ -264,13 +265,15 @@ def analyse_function():
     mn, dis_engine, ira = machine.mn, machine.dis_engine, machine.ira
 
     bs = bin_stream_ida()
-    mdis = dis_engine(bs, dont_dis_nulstart_bloc=True)
+    loc_db = LocationDB()
+
+    mdis = dis_engine(bs, loc_db=loc_db, dont_dis_nulstart_bloc=True)
     if end is not None:
         mdis.dont_dis = [end]
 
 
     iraCallStackFixer = get_ira_call_fixer(ira)
-    ir_arch = iraCallStackFixer(mdis.loc_db)
+    ir_arch = iraCallStackFixer(loc_db)
 
     asmcfg = mdis.dis_multiblock(addr)
     # Generate IR
@@ -308,8 +311,8 @@ def analyse_function():
         infos_types[expr] = set([objc])
 
     # Add fake head
-    lbl_real_start = ir_arch.loc_db.get_offset_location(addr)
-    lbl_head = ir_arch.loc_db.get_or_create_name_location("start")
+    lbl_real_start = loc_db.get_offset_location(addr)
+    lbl_head = loc_db.get_or_create_name_location("start")
 
     first_block = asmcfg.label2block(lbl_real_start)
 
diff --git a/example/ida/depgraph.py b/example/ida/depgraph.py
index 65b57e89..e98d64c5 100644
--- a/example/ida/depgraph.py
+++ b/example/ida/depgraph.py
@@ -15,6 +15,7 @@ import ida_kernwin
 from miasm.core.bin_stream_ida import bin_stream_ida
 from miasm.core.asmblock import *
 from miasm.expression import expression as m2_expr
+from miasm.core.locationdb import LocationDB
 
 from miasm.expression.simplifications import expr_simp
 from miasm.analysis.depgraph import DependencyGraph
@@ -216,14 +217,16 @@ def launch_depgraph():
     mn, dis_engine, ira = machine.mn, machine.dis_engine, machine.ira
 
     bs = bin_stream_ida()
-    mdis = dis_engine(bs, dont_dis_nulstart_bloc=True)
-    ir_arch = ira(mdis.loc_db)
+    loc_db = LocationDB()
+
+    mdis = dis_engine(bs, loc_db=loc_db, dont_dis_nulstart_bloc=True)
+    ir_arch = ira(loc_db)
 
     # Populate symbols with ida names
     for ad, name in idautils.Names():
         if name is None:
             continue
-        mdis.loc_db.add_location(name, ad)
+        loc_db.add_location(name, ad)
 
     asmcfg = mdis.dis_multiblock(func.start_ea)
 
@@ -238,7 +241,7 @@ def launch_depgraph():
     # Simplify assignments
     for irb in list(viewvalues(ircfg.blocks)):
         irs = []
-        offset = ir_arch.loc_db.get_location_offset(irb.loc_key)
+        offset = loc_db.get_location_offset(irb.loc_key)
         fix_stack = offset is not None and settings.unalias_stack
         for assignblk in irb:
             if fix_stack:
@@ -259,7 +262,7 @@ def launch_depgraph():
     # Get dependency graphs
     dg = settings.depgraph
     graphs = dg.get(loc_key, elements, line_nb,
-                    set([ir_arch.loc_db.get_offset_location(func.start_ea)]))
+                    set([loc_db.get_offset_location(func.start_ea)]))
 
     # Display the result
     comments = {}
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()
diff --git a/example/ida/symbol_exec.py b/example/ida/symbol_exec.py
index d1141119..b51ef9ee 100644
--- a/example/ida/symbol_exec.py
+++ b/example/ida/symbol_exec.py
@@ -9,6 +9,7 @@ import idc
 
 from miasm.expression.expression_helper import Variables_Identifier
 from miasm.expression.expression import ExprAssign
+from miasm.core.locationdb import LocationDB
 
 from utils import expr2colorstr, translatorForm
 
@@ -136,11 +137,12 @@ def symbolic_exec():
     from utils import guess_machine
 
     start, end = idc.read_selection_start(), idc.read_selection_end()
+    loc_db = LocationDB()
 
     bs = bin_stream_ida()
     machine = guess_machine(addr=start)
 
-    mdis = machine.dis_engine(bs)
+    mdis = machine.dis_engine(bs, loc_db=loc_db)
 
     if start == idc.BADADDR and end == idc.BADADDR:
         start = idc.get_screen_ea()
@@ -148,7 +150,7 @@ def symbolic_exec():
 
     mdis.dont_dis = [end]
     asmcfg = mdis.dis_multiblock(start)
-    ira = machine.ira(loc_db=mdis.loc_db)
+    ira = machine.ira(loc_db=loc_db)
     ircfg = ira.new_ircfg_from_asmcfg(asmcfg)
 
     print("Run symbolic execution...")
@@ -161,7 +163,7 @@ def symbolic_exec():
 
     view = symbolicexec_t()
     all_views.append(view)
-    if not view.Create(modified, machine, mdis.loc_db,
+    if not view.Create(modified, machine, loc_db,
                        "Symbolic Execution - 0x%x to 0x%x"
                        % (start, idc.prev_head(end))):
         return