about summary refs log tree commit diff stats
path: root/example/expression
diff options
context:
space:
mode:
Diffstat (limited to 'example/expression')
-rw-r--r--example/expression/constant_propagation.py6
-rw-r--r--example/expression/graph_dataflow.py24
-rw-r--r--example/expression/solve_condition_stp.py9
3 files changed, 17 insertions, 22 deletions
diff --git a/example/expression/constant_propagation.py b/example/expression/constant_propagation.py
index 0798c404..e70f8163 100644
--- a/example/expression/constant_propagation.py
+++ b/example/expression/constant_propagation.py
@@ -6,7 +6,6 @@ A "constant expression" is an expression based on constants or init regs.
 
 from argparse import ArgumentParser
 
-from miasm2.arch.x86.disasm import dis_x86_32 as dis_engine
 from miasm2.analysis.machine import Machine
 from miasm2.analysis.binary import Container
 from miasm2.analysis.cst_propag import propagate_cst_expr
@@ -27,9 +26,8 @@ args = parser.parse_args()
 machine = Machine("x86_32")
 
 cont = Container.from_stream(open(args.filename))
-ira, dis_engine = machine.ira, machine.dis_engine
-mdis = dis_engine(cont.bin_stream)
-ir_arch = ira(mdis.loc_db)
+mdis = machine.dis_engine(cont.bin_stream, loc_db=cont.loc_db)
+ir_arch = machine.ira(mdis.loc_db)
 addr = int(args.address, 0)
 
 asmcfg = mdis.dis_multiblock(addr)
diff --git a/example/expression/graph_dataflow.py b/example/expression/graph_dataflow.py
index 0951cc1e..92bcf249 100644
--- a/example/expression/graph_dataflow.py
+++ b/example/expression/graph_dataflow.py
@@ -1,10 +1,8 @@
 from argparse import ArgumentParser
-from pdb import pm
-from pprint import pprint
 
+from miasm2.analysis.binary import Container
+from miasm2.analysis.machine import Machine
 from miasm2.expression.expression import get_expr_mem
-from miasm2.arch.x86.ira import ir_a_x86_32
-from miasm2.arch.x86.disasm import dis_x86_32
 from miasm2.analysis.data_analysis import intra_block_flow_raw, inter_block_flow
 from miasm2.core.graph import DiGraph
 from miasm2.ir.symbexec import SymbolicExecutionEngine
@@ -82,7 +80,7 @@ def intra_block_flow_symb(ir_arch, _, flow_graph, irblock, in_nodes, out_nodes):
                 flow_graph.add_uniq_edge(node_n_r, node_n_w)
 
 
-def node2str(self, node):
+def node2str(node):
     out = "%s,%s\\l\\\n%s" % node
     return out
 
@@ -101,9 +99,9 @@ def gen_block_data_flow_graph(ir_arch, ircfg, ad, block_flow_cb):
         if offset == ad:
             irblock_0 = irblock
             break
-    assert(irblock_0 is not None)
+    assert irblock_0 is not None
     flow_graph = DiGraph()
-    flow_graph.node2str = lambda n: node2str(flow_graph, n)
+    flow_graph.node2str = node2str
 
 
     irb_in_nodes = {}
@@ -128,19 +126,21 @@ def gen_block_data_flow_graph(ir_arch, ircfg, ad, block_flow_cb):
     open('data.dot', 'w').write(flow_graph.dot())
 
 
-data = open(args.filename).read()
 ad = int(args.addr, 16)
 
 print 'disasm...'
-mdis = dis_x86_32(data)
+cont = Container.from_stream(open(args.filename))
+machine = Machine("x86_32")
+
+mdis = machine.dis_engine(cont.bin_stream, loc_db=cont.loc_db)
 mdis.follow_call = True
 asmcfg = mdis.dis_multiblock(ad)
 print 'ok'
 
 
 print 'generating dataflow graph for:'
-ir_arch = ir_a_x86_32(mdis.loc_db)
-ircfg = ir_arch.new_ircfg_from_asmcfg(asmcfg)
+ir_arch_analysis = machine.ira(mdis.loc_db)
+ircfg = ir_arch_analysis.new_ircfg_from_asmcfg(asmcfg)
 
 for irblock in ircfg.blocks.values():
     print irblock
@@ -151,7 +151,7 @@ if args.symb:
 else:
     block_flow_cb = intra_block_flow_raw
 
-gen_block_data_flow_graph(ir_arch, ircfg, ad, block_flow_cb)
+gen_block_data_flow_graph(ir_arch_analysis, ircfg, ad, block_flow_cb)
 
 print '*' * 40
 print """
diff --git a/example/expression/solve_condition_stp.py b/example/expression/solve_condition_stp.py
index 6962e2ef..c79dd0b8 100644
--- a/example/expression/solve_condition_stp.py
+++ b/example/expression/solve_condition_stp.py
@@ -4,13 +4,13 @@ from optparse import OptionParser
 from pdb import pm
 
 from miasm2.analysis.machine import Machine
+from miasm2.analysis.binary import Container
 from miasm2.expression.expression import ExprInt, ExprCond, ExprId, \
     get_expr_ids, ExprAssign, ExprLoc
 from miasm2.core.bin_stream import bin_stream_str
 from miasm2.ir.symbexec import SymbolicExecutionEngine, get_block
 from miasm2.expression.simplifications import expr_simp
 from miasm2.core import parse_asm
-from miasm2.arch.x86.disasm import dis_x86_32 as dis_engine
 from miasm2.ir.translators.translator  import Translator
 
 machine = Machine("x86_32")
@@ -78,14 +78,11 @@ def emul_symb(ir_arch, ircfg, mdis, states_todo, states_done):
 if __name__ == '__main__':
 
     translator_smt2 = Translator.to_language("smt2")
-    data = open(args[0]).read()
-    bs = bin_stream_str(data)
-
-    mdis = dis_engine(bs)
 
     addr = int(options.address, 16)
 
-
+    cont = Container.from_stream(open(args[0]))
+    mdis = machine.dis_engine(cont.bin_stream, loc_db=cont.loc_db)
     ir_arch = machine.ir(mdis.loc_db)
     ircfg = ir_arch.new_ircfg()
     symbexec = SymbolicExecutionEngine(ir_arch)