about summary refs log tree commit diff stats
path: root/example
diff options
context:
space:
mode:
Diffstat (limited to 'example')
-rw-r--r--example/disasm/full.py10
-rw-r--r--example/expression/asm_to_ir.py4
-rw-r--r--example/expression/graph_dataflow.py3
-rw-r--r--example/ida/graph_ir.py6
4 files changed, 16 insertions, 7 deletions
diff --git a/example/disasm/full.py b/example/disasm/full.py
index 79db46d4..b919310a 100644
--- a/example/disasm/full.py
+++ b/example/disasm/full.py
@@ -8,6 +8,7 @@ from miasm2.core.asmblock import log_asmblock, AsmLabel, AsmCFG
 from miasm2.expression.expression import ExprId
 from miasm2.core.interval import interval
 from miasm2.analysis.machine import Machine
+from miasm2.analysis.data_flow import dead_simp, DiGraphDefUse, ReachingDefinitions
 
 log = logging.getLogger("dis")
 console_handler = logging.StreamHandler()
@@ -52,6 +53,9 @@ parser.add_argument('-i', "--image", action="store_true",
                     help="Display image representation of disasm")
 parser.add_argument('-c', "--rawbinary", default=False, action="store_true",
                     help="Don't interpret input as ELF/PE/...")
+parser.add_argument('-d', "--defuse", action="store_true",
+                    help="Dump the def-use graph in file 'defuse.dot'."
+                    "The defuse is dumped after simplifications if -s option is specified")
 
 args = parser.parse_args()
 
@@ -207,7 +211,11 @@ if args.gen_ir:
         print block
 
     if args.simplify:
-        ir_arch_a.dead_simp()
+        dead_simp(ir_arch_a)
+
+    if args.defuse:
+        reachings = ReachingDefinitions(ir_arch_a)
+        open('graph_defuse.dot', 'w').write(DiGraphDefUse(reachings).dot())
 
     out = ir_arch_a.graph.dot()
     open('graph_irflow.dot', 'w').write(out)
diff --git a/example/expression/asm_to_ir.py b/example/expression/asm_to_ir.py
index b28f8a81..058910e3 100644
--- a/example/expression/asm_to_ir.py
+++ b/example/expression/asm_to_ir.py
@@ -5,7 +5,7 @@ from miasm2.core import parse_asm
 from miasm2.expression.expression import *
 from miasm2.core import asmblock
 from miasm2.arch.x86.ira import ir_a_x86_32
-
+from miasm2.analysis.data_flow import dead_simp
 
 # First, asm code
 blocks, symbol_pool = parse_asm.parse_txt(mn_x86, 32, '''
@@ -47,7 +47,7 @@ for lbl, irblock in ir_arch.blocks.items():
 # Dead propagation
 open('graph.dot', 'w').write(ir_arch.graph.dot())
 print '*' * 80
-ir_arch.dead_simp()
+dead_simp(ir_arch)
 open('graph2.dot', 'w').write(ir_arch.graph.dot())
 
 # Display new IR
diff --git a/example/expression/graph_dataflow.py b/example/expression/graph_dataflow.py
index bd767165..c79cd7d4 100644
--- a/example/expression/graph_dataflow.py
+++ b/example/expression/graph_dataflow.py
@@ -8,6 +8,7 @@ from miasm2.arch.x86.disasm import dis_x86_32
 from miasm2.analysis.data_analysis import intra_bloc_flow_raw, inter_bloc_flow
 from miasm2.core.graph import DiGraph
 from miasm2.ir.symbexec import SymbolicExecutionEngine
+from miasm2.analysis.data_flow import dead_simp
 
 
 parser = ArgumentParser("Simple expression use for generating dataflow graph")
@@ -114,7 +115,7 @@ def gen_block_data_flow_graph(ir_arch, ad, block_flow_cb):
     for irblock in ir_arch.blocks.values():
         print irblock
 
-    ir_arch.dead_simp()
+    dead_simp(ir_arch)
 
     irblock_0 = None
     for irblock in ir_arch.blocks.values():
diff --git a/example/ida/graph_ir.py b/example/ida/graph_ir.py
index 3aac0281..d2552c82 100644
--- a/example/ida/graph_ir.py
+++ b/example/ida/graph_ir.py
@@ -10,7 +10,7 @@ from miasm2.expression.simplifications import expr_simp
 from miasm2.expression.expression import *
 from miasm2.analysis.data_analysis import inter_bloc_flow, \
     intra_bloc_flow_symbexec
-
+from miasm2.analysis.data_flow import dead_simp
 from utils import guess_machine, expr2colorstr
 
 
@@ -144,7 +144,7 @@ out = ir_arch.graph.dot()
 open(os.path.join(tempfile.gettempdir(), 'graph.dot'), 'wb').write(out)
 
 
-# ir_arch.dead_simp()
+# dead_simp(ir_arch)
 
 g = GraphMiasmIR(ir_arch, "Miasm IR graph", None)
 
@@ -198,7 +198,7 @@ def get_modified_symbols(sb):
 def gen_bloc_data_flow_graph(ir_arch, in_str, ad):  # arch, attrib, pool_bin, bloc, symbol_pool):
     out_str = ""
 
-    # ir_arch.dead_simp()
+    # dead_simp(ir_arch)
 
     irbloc_0 = None
     for irbloc in ir_arch.blocks.values():