diff options
| author | Camille Mougey <camille.mougey@cea.fr> | 2015-01-09 17:56:54 +0100 |
|---|---|---|
| committer | Camille Mougey <camille.mougey@cea.fr> | 2015-01-23 17:24:42 +0100 |
| commit | d4606461786632e4771c7b16dcab2dbb01132ee1 (patch) | |
| tree | c4bbab118013bcbab751645615715286efd52a1e /example/symbol_exec/single_instr.py | |
| parent | 2694784814818ab61efcb5711a8bd2649532f014 (diff) | |
| download | miasm-d4606461786632e4771c7b16dcab2dbb01132ee1.tar.gz miasm-d4606461786632e4771c7b16dcab2dbb01132ee1.zip | |
Example: Rename symbol_exec to single_instr in a specific symbol_exec directory
Diffstat (limited to 'example/symbol_exec/single_instr.py')
| -rw-r--r-- | example/symbol_exec/single_instr.py | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/example/symbol_exec/single_instr.py b/example/symbol_exec/single_instr.py new file mode 100644 index 00000000..416909f2 --- /dev/null +++ b/example/symbol_exec/single_instr.py @@ -0,0 +1,31 @@ +# Minimalist Symbol Exec example +from miasm2.core.bin_stream import bin_stream_str +from miasm2.arch.x86.arch import mn_x86 +from miasm2.arch.x86.ira import ir_a_x86_32 +from miasm2.arch.x86.regs import all_regs_ids, all_regs_ids_init +from miasm2.ir.symbexec import symbexec +from miasm2.arch.x86.disasm import dis_x86_32 as dis_engine +import miasm2.expression.expression as m2_expr + +l = mn_x86.fromstring("MOV EAX, EBX", 32) +asm = mn_x86.asm(l)[0] + +bin_stream = bin_stream_str(asm) + +mdis = dis_engine(bin_stream) +disasm = mdis.dis_multibloc(0) + +ir = ir_a_x86_32(mdis.symbol_pool) +for bbl in disasm: ir.add_bloc(bbl) + +symbols_init = {} +for i, r in enumerate(all_regs_ids): + symbols_init[r] = all_regs_ids_init[i] +symb = symbexec(ir, symbols_init) + +block = ir.get_bloc(0) + +cur_addr = symb.emulbloc(block) +assert(symb.symbols[m2_expr.ExprId("EAX")] == symbols_init[m2_expr.ExprId("EBX")]) +print 'modified registers:' +symb.dump_id() |