diff options
Diffstat (limited to 'example')
| -rw-r--r-- | example/disasm/full.py | 10 | ||||
| -rw-r--r-- | example/expression/asm_to_ir.py | 4 | ||||
| -rw-r--r-- | example/expression/graph_dataflow.py | 3 | ||||
| -rw-r--r-- | example/ida/graph_ir.py | 6 |
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(): |