diff options
Diffstat (limited to 'example/expression')
| -rw-r--r-- | example/expression/access_c.py | 2 | ||||
| -rw-r--r-- | example/expression/asm_to_ir.py | 28 | ||||
| -rw-r--r-- | example/expression/get_read_write.py | 2 | ||||
| -rw-r--r-- | example/expression/graph_dataflow.py | 70 | ||||
| -rw-r--r-- | example/expression/solve_condition_stp.py | 46 |
5 files changed, 74 insertions, 74 deletions
diff --git a/example/expression/access_c.py b/example/expression/access_c.py index 1df51b00..eabc3770 100644 --- a/example/expression/access_c.py +++ b/example/expression/access_c.py @@ -58,7 +58,7 @@ ExprCompose(var1, 0) => var1 def find_call(ira): """Returns (irb, index) which call""" - for irb in ira.blocs.values(): + for irb in ira.blocks.values(): out = set() if len(irb.irs) < 2: continue diff --git a/example/expression/asm_to_ir.py b/example/expression/asm_to_ir.py index 2f8999a4..b28f8a81 100644 --- a/example/expression/asm_to_ir.py +++ b/example/expression/asm_to_ir.py @@ -3,12 +3,12 @@ from pdb import pm from miasm2.arch.x86.arch import mn_x86 from miasm2.core import parse_asm from miasm2.expression.expression import * -from miasm2.core import asmbloc +from miasm2.core import asmblock from miasm2.arch.x86.ira import ir_a_x86_32 # First, asm code -blocs, symbol_pool = parse_asm.parse_txt(mn_x86, 32, ''' +blocks, symbol_pool = parse_asm.parse_txt(mn_x86, 32, ''' main: MOV EAX, 1 MOV EBX, 2 @@ -25,24 +25,24 @@ loop: symbol_pool.set_offset(symbol_pool.getby_name("main"), 0x0) -for b in blocs: - print b +for block in blocks: + print block print "symbols:" print symbol_pool -patches = asmbloc.asm_resolve_final(mn_x86, blocs, symbol_pool) +patches = asmblock.asm_resolve_final(mn_x86, blocks, symbol_pool) # Translate to IR ir_arch = ir_a_x86_32(symbol_pool) -for b in blocs: - print 'add bloc' - print b - ir_arch.add_bloc(b) +for block in blocks: + print 'add block' + print block + ir_arch.add_bloc(block) # Display IR -for lbl, b in ir_arch.blocs.items(): - print b +for lbl, irblock in ir_arch.blocks.items(): + print irblock # Dead propagation open('graph.dot', 'w').write(ir_arch.graph.dot()) @@ -51,6 +51,6 @@ ir_arch.dead_simp() open('graph2.dot', 'w').write(ir_arch.graph.dot()) # Display new IR -print 'new ir blocs' -for lbl, b in ir_arch.blocs.items(): - print b +print 'new ir blocks' +for lbl, irblock in ir_arch.blocks.items(): + print irblock diff --git a/example/expression/get_read_write.py b/example/expression/get_read_write.py index cb9e0900..f4dde4b5 100644 --- a/example/expression/get_read_write.py +++ b/example/expression/get_read_write.py @@ -16,7 +16,7 @@ l.offset, l.l = 0, 15 ir_arch.add_instr(l) print '*' * 80 -for lbl, b in ir_arch.blocs.items(): +for lbl, b in ir_arch.blocks.items(): print b for irs in b.irs: o_r, o_w = get_rw(irs) diff --git a/example/expression/graph_dataflow.py b/example/expression/graph_dataflow.py index 64801e52..bd767165 100644 --- a/example/expression/graph_dataflow.py +++ b/example/expression/graph_dataflow.py @@ -7,7 +7,7 @@ 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_bloc_flow_raw, inter_bloc_flow from miasm2.core.graph import DiGraph -from miasm2.ir.symbexec import symbexec +from miasm2.ir.symbexec import SymbolicExecutionEngine parser = ArgumentParser("Simple expression use for generating dataflow graph") @@ -49,12 +49,12 @@ def get_modified_symbols(sb): return out -def intra_bloc_flow_symb(ir_arch, flow_graph, irbloc): +def intra_bloc_flow_symb(ir_arch, flow_graph, irblock): symbols_init = ir_arch.arch.regs.regs_init.copy() - sb = symbexec(ir_arch, symbols_init) - sb.emulbloc(irbloc) + sb = SymbolicExecutionEngine(ir_arch, symbols_init) + sb.emulbloc(irblock) print '*' * 40 - print irbloc + print irblock in_nodes = {} out_nodes = {} @@ -68,7 +68,7 @@ def intra_bloc_flow_symb(ir_arch, flow_graph, irbloc): all_mems.update(get_expr_mem(n)) for n in all_mems: - node_n_w = get_node_name(irbloc.label, 0, n) + node_n_w = get_node_name(irblock.label, 0, n) if not n == src: continue o_r = n.arg.get_r(mem_read=False, cst_read=True) @@ -76,7 +76,7 @@ def intra_bloc_flow_symb(ir_arch, flow_graph, irbloc): if n_r in current_nodes: node_n_r = current_nodes[n_r] else: - node_n_r = get_node_name(irbloc.label, i, n_r) + node_n_r = get_node_name(irblock.label, i, n_r) if not n_r in in_nodes: in_nodes[n_r] = node_n_r flow_graph.add_uniq_edge(node_n_r, node_n_w) @@ -89,20 +89,20 @@ def intra_bloc_flow_symb(ir_arch, flow_graph, irbloc): if n_r in current_nodes: node_n_r = current_nodes[n_r] else: - node_n_r = get_node_name(irbloc.label, 0, n_r) + node_n_r = get_node_name(irblock.label, 0, n_r) if not n_r in in_nodes: in_nodes[n_r] = node_n_r flow_graph.add_node(node_n_r) for n_w in nodes_w: - node_n_w = get_node_name(irbloc.label, 1, n_w) + node_n_w = get_node_name(irblock.label, 1, n_w) out_nodes[n_w] = node_n_w flow_graph.add_node(node_n_w) flow_graph.add_uniq_edge(node_n_r, node_n_w) - irbloc.in_nodes = in_nodes - irbloc.out_nodes = out_nodes + irblock.in_nodes = in_nodes + irblock.out_nodes = out_nodes def node2str(self, node): @@ -110,31 +110,31 @@ def node2str(self, node): return out -def gen_bloc_data_flow_graph(ir_arch, ad, block_flow_cb): - for irbloc in ir_arch.blocs.values(): - print irbloc +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() - irbloc_0 = None - for irbloc in ir_arch.blocs.values(): - if irbloc.label.offset == ad: - irbloc_0 = irbloc + irblock_0 = None + for irblock in ir_arch.blocks.values(): + if irblock.label.offset == ad: + irblock_0 = irblock break - assert(irbloc_0 is not None) + assert(irblock_0 is not None) flow_graph = DiGraph() flow_graph.node2str = lambda n: node2str(flow_graph, n) - for irbloc in ir_arch.blocs.values(): - block_flow_cb(ir_arch, flow_graph, irbloc) + for irblock in ir_arch.blocks.values(): + block_flow_cb(ir_arch, flow_graph, irblock) - for irbloc in ir_arch.blocs.values(): - print irbloc - print 'IN', [str(x) for x in irbloc.in_nodes] - print 'OUT', [str(x) for x in irbloc.out_nodes] + for irblock in ir_arch.blocks.values(): + print irblock + print 'IN', [str(x) for x in irblock.in_nodes] + print 'OUT', [str(x) for x in irblock.out_nodes] - print '*' * 20, 'interbloc', '*' * 20 - inter_bloc_flow(ir_arch, flow_graph, irbloc_0.label) + print '*' * 20, 'interblock', '*' * 20 + inter_bloc_flow(ir_arch, flow_graph, irblock_0.label) # from graph_qt import graph_qt # graph_qt(flow_graph) @@ -154,13 +154,13 @@ print 'ok' print 'generating dataflow graph for:' ir_arch = ir_a_x86_32(mdis.symbol_pool) -blocs = ab -for bloc in blocs: - print bloc - ir_arch.add_bloc(bloc) -for irbloc in ir_arch.blocs.values(): - print irbloc - if irbloc.label.offset != 0: +blocks = ab +for block in blocks: + print block + ir_arch.add_bloc(block) +for irblock in ir_arch.blocks.values(): + print irblock + if irblock.label.offset != 0: continue @@ -169,7 +169,7 @@ if args.symb: else: block_flow_cb = intra_bloc_flow_raw -gen_bloc_data_flow_graph(ir_arch, ad, block_flow_cb) +gen_block_data_flow_graph(ir_arch, ad, block_flow_cb) print '*' * 40 print """ diff --git a/example/expression/solve_condition_stp.py b/example/expression/solve_condition_stp.py index 2a3b42fd..03d652cf 100644 --- a/example/expression/solve_condition_stp.py +++ b/example/expression/solve_condition_stp.py @@ -9,9 +9,9 @@ from miasm2.arch.x86.arch import * from miasm2.arch.x86.regs import * from miasm2.arch.x86.sem import * from miasm2.core.bin_stream import bin_stream_str -from miasm2.core import asmbloc +from miasm2.core import asmblock from miasm2.expression.expression import get_rw -from miasm2.ir.symbexec import symbexec +from miasm2.ir.symbexec import SymbolicExecutionEngine from miasm2.expression.simplifications import expr_simp from miasm2.expression import stp from miasm2.core import parse_asm @@ -35,18 +35,18 @@ if not args: sys.exit(0) -def get_bloc(ir_arch, mdis, ad): - if isinstance(ad, asmbloc.asm_label): +def get_block(ir_arch, mdis, ad): + if isinstance(ad, asmblock.AsmLabel): l = ad else: l = mdis.symbol_pool.getby_offset_create(ad) - if not l in ir_arch.blocs: + if not l in ir_arch.blocks: ad = l.offset b = mdis.dis_bloc(ad) ir_arch.add_bloc(b) b = ir_arch.get_bloc(l) if b is None: - raise LookupError('no bloc found at that address: %s' % l) + raise LookupError('no block found at that address: %s' % l) return b @@ -58,15 +58,15 @@ def emul_symb(ir_arch, mdis, states_todo, states_done): print 'skip', ad continue states_done.add((ad, symbols, conds)) - sb = symbexec(ir_arch, {}) + sb = SymbolicExecutionEngine(ir_arch, {}) sb.symbols = symbols.copy() if ir_arch.pc in sb.symbols: del(sb.symbols[ir_arch.pc]) - b = get_bloc(ir_arch, mdis, ad) + b = get_block(ir_arch, mdis, ad) - print 'run bloc' + print 'run block' print b - # print blocs[ad] + # print blocks[ad] ad = sb.emulbloc(b) print 'final state' sb.dump_id() @@ -87,8 +87,8 @@ def emul_symb(ir_arch, mdis, states_todo, states_done): p2[ad.cond] = ExprInt(1, ad.cond.size) ad1 = expr_simp(sb.eval_expr(ad.replace_expr(c1), {})) ad2 = expr_simp(sb.eval_expr(ad.replace_expr(c2), {})) - if not (isinstance(ad1, ExprInt) or (isinstance(ad1, ExprId) and isinstance(ad1.name, asmbloc.asm_label)) and - isinstance(ad2, ExprInt) or (isinstance(ad2, ExprId) and isinstance(ad2.name, asmbloc.asm_label))): + if not (isinstance(ad1, ExprInt) or (isinstance(ad1, ExprId) and isinstance(ad1.name, asmblock.AsmLabel)) and + isinstance(ad2, ExprInt) or (isinstance(ad2, ExprId) and isinstance(ad2.name, asmblock.AsmLabel))): print str(ad1), str(ad2) raise ValueError("zarb condition") conds1 = list(conds) + c1.items() @@ -106,7 +106,7 @@ def emul_symb(ir_arch, mdis, states_todo, states_done): elif isinstance(ad, ExprInt): ad = int(ad.arg) states_todo.add((ad, sb.symbols.copy(), tuple(conds))) - elif isinstance(ad, ExprId) and isinstance(ad.name, asmbloc.asm_label): + elif isinstance(ad, ExprId) and isinstance(ad.name, asmblock.AsmLabel): if isinstance(ad, ExprId): ad = ad.name states_todo.add((ad, sb.symbols.copy(), tuple(conds))) @@ -159,33 +159,33 @@ if __name__ == '__main__': ir_arch = ir_x86_32(mdis.symbol_pool) - sb = symbexec(ir_arch, symbols_init) + sb = SymbolicExecutionEngine(ir_arch, symbols_init) - blocs, symbol_pool = parse_asm.parse_txt(mn_x86, 32, ''' + blocks, symbol_pool = parse_asm.parse_txt(mn_x86, 32, ''' PUSH argv PUSH argc PUSH ret_addr ''') - b = list(blocs)[0] + b = list(blocks)[0] print b # add fake address and len to parsed instructions - for i, l in enumerate(b.lines): - l.offset, l.l = i, 1 + for i, line in enumerate(b.lines): + line.offset, line.l = i, 1 ir_arch.add_bloc(b) - irb = get_bloc(ir_arch, mdis, 0) + irb = get_block(ir_arch, mdis, 0) sb.emulbloc(irb) sb.dump_mem() - # reset ir_arch blocs - ir_arch.blocs = {} + # reset ir_arch blocks + ir_arch.blocks = {} states_todo = set() states_done = set() states_todo.add((uint32(ad), sb.symbols, ())) - # emul blocs, propagate states + # emul blocks, propagate states emul_symb(ir_arch, mdis, states_todo, states_done) all_info = [] @@ -201,7 +201,7 @@ if __name__ == '__main__': all_cases = set() - sb = symbexec(ir_arch, symbols_init) + sb = SymbolicExecutionEngine(ir_arch, symbols_init) for ad, reqs_cond in all_info: all_ids = set() for k, v in reqs_cond: |