diff options
| author | Camille Mougey <commial@gmail.com> | 2019-03-07 14:37:07 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-03-07 14:37:07 +0100 |
| commit | 4c2320b46250a8d6f8774e1218544b72a154cd8e (patch) | |
| tree | b67e7b072439f84109bd39dad8ed7f3f135224f8 /example/symbol_exec/dse_strategies.py | |
| parent | eab809932871f91d6f4aa770fc321af9e156e0f5 (diff) | |
| parent | 26c1075723a02984da6d3bc7423c5c0c43082dc3 (diff) | |
| download | miasm-4c2320b46250a8d6f8774e1218544b72a154cd8e.tar.gz miasm-4c2320b46250a8d6f8774e1218544b72a154cd8e.zip | |
Merge pull request #990 from serpilliere/support_python2_python3
Support python2 python3
Diffstat (limited to 'example/symbol_exec/dse_strategies.py')
| -rw-r--r-- | example/symbol_exec/dse_strategies.py | 37 |
1 files changed, 24 insertions, 13 deletions
diff --git a/example/symbol_exec/dse_strategies.py b/example/symbol_exec/dse_strategies.py index b38c797a..3f968215 100644 --- a/example/symbol_exec/dse_strategies.py +++ b/example/symbol_exec/dse_strategies.py @@ -17,12 +17,15 @@ Global overview: - Ask the DSE for new candidates, according to its strategy, ie. finding new block / branch / path """ +from __future__ import print_function from argparse import ArgumentParser -from miasm2.analysis.machine import Machine -from miasm2.jitter.csts import PAGE_READ, PAGE_WRITE -from miasm2.analysis.dse import DSEPathConstraint -from miasm2.expression.expression import ExprMem, ExprId, ExprInt, ExprAssign +from future.utils import viewitems + +from miasm.analysis.machine import Machine +from miasm.jitter.csts import PAGE_READ, PAGE_WRITE +from miasm.analysis.dse import DSEPathConstraint +from miasm.expression.expression import ExprMem, ExprId, ExprInt, ExprAssign # Argument handling parser = ArgumentParser("DSE Example") @@ -42,9 +45,13 @@ strategy = { run_addr = 0x40000 machine = Machine("x86_32") jitter = machine.jitter("python") -with open(args.filename) as fdesc: - jitter.vm.add_memory_page(run_addr, PAGE_READ | PAGE_WRITE, fdesc.read(), - "Binary") +with open(args.filename, "rb") as fdesc: + jitter.vm.add_memory_page( + run_addr, + PAGE_READ | PAGE_WRITE, + fdesc.read(), + "Binary" + ) # Expect a binary with one argument on the stack jitter.init_stack() @@ -94,7 +101,7 @@ while todo: continue done.add(arg_value) - print "Run with ARG = %s" % arg_value + print("Run with ARG = %s" % arg_value) # Restore state, while keeping already found solutions dse.restore_snapshot(snapshot, keep_known_solutions=True) @@ -113,17 +120,21 @@ while todo: # - last edge for branch coverage # - execution path for path coverage - for sol_ident, model in dse.new_solutions.iteritems(): - print "Found a solution to reach: %s" % str(sol_ident) + for sol_ident, model in viewitems(dse.new_solutions): + print("Found a solution to reach: %s" % str(sol_ident)) # Get the argument to use as a Miasm Expr sol_value = model.eval(dse.z3_trans.from_expr(arg)).as_long() sol_expr = ExprInt(sol_value, arg.size) # Display info and update storages - print "\tARG = %s" % sol_expr + print("\tARG = %s" % sol_expr) todo.add(sol_expr) reaches.add(sol_ident) -print "Found %d input, to reach %d element of coverage" % (len(done), - len(reaches)) +print( + "Found %d input, to reach %d element of coverage" % ( + len(done), + len(reaches) + ) +) |