diff options
Diffstat (limited to 'example')
| -rw-r--r-- | example/disasm/full.py | 18 | ||||
| -rw-r--r-- | example/ida/ctype_propagation.py | 3 | ||||
| -rw-r--r-- | example/jitter/trace.py | 8 |
3 files changed, 16 insertions, 13 deletions
diff --git a/example/disasm/full.py b/example/disasm/full.py index cc7f9be8..42d50216 100644 --- a/example/disasm/full.py +++ b/example/disasm/full.py @@ -8,9 +8,12 @@ from miasm2.core.interval import interval from miasm2.analysis.machine import Machine from miasm2.analysis.data_flow import dead_simp, DiGraphDefUse, \ ReachingDefinitions, merge_blocks, remove_empty_assignblks, \ - PropagateExpr, replace_stack_vars, load_from_int + PropagateExpr, replace_stack_vars, load_from_int, \ + del_unused_edges from miasm2.expression.simplifications import expr_simp -from miasm2.analysis.ssa import SSADiGraph, UnSSADiGraph, DiGraphLivenessSSA +from miasm2.analysis.ssa import SSADiGraph +from miasm2.analysis.outofssa import UnSSADiGraph +from miasm2.analysis.data_flow import DiGraphLivenessSSA from miasm2.ir.ir import AssignBlock, IRBlock @@ -45,9 +48,9 @@ parser.add_argument('-l', "--dontdis-retcall", action="store_true", help="If set, disassemble only call destinations") parser.add_argument('-s', "--simplify", action="count", help="Apply simplifications rules (liveness, graph simplification, ...)") -parser.add_argument('-o', "--shiftoffset", default=0, +parser.add_argument("--base-address", default=0, type=lambda x: int(x, 0), - help="Shift input binary by an offset") + help="Base address of the input binary") parser.add_argument('-a', "--try-disasm-all", action="store_true", help="Try to disassemble the whole binary") parser.add_argument('-i', "--image", action="store_true", @@ -79,10 +82,10 @@ if args.verbose: log.info('Load binary') if args.rawbinary: cont = Container.fallback_container(open(args.filename, "rb").read(), - vm=None, addr=args.shiftoffset) + vm=None, addr=args.base_address) else: with open(args.filename, "rb") as fdesc: - cont = Container.from_stream(fdesc, addr=args.shiftoffset) + cont = Container.from_stream(fdesc, addr=args.base_address) default_addr = cont.entry_point bs = cont.bin_stream @@ -395,6 +398,9 @@ if args.propagexpr: if args.verbose > 3: open('tmp_after_%d.dot' % index, 'w').write(ircfg_a.dot()) simp_modified |= remove_empty_assignblks(ircfg_a) + simp_modified |= del_unused_edges(ircfg_a, heads) + simp_modified |= merge_blocks(ircfg_a, heads) + if args.loadint: simp_modified |= load_from_int(ircfg_a, bs, is_addr_ro_variable) modified |= simp_modified diff --git a/example/ida/ctype_propagation.py b/example/ida/ctype_propagation.py index 1c883214..61bc747f 100644 --- a/example/ida/ctype_propagation.py +++ b/example/ida/ctype_propagation.py @@ -156,13 +156,10 @@ class SymbExecCTypeFix(SymbExecCType): def __init__(self, ir_arch, symbols, chandler, cst_propag_link, - func_read=None, func_write=None, sb_expr_simp=expr_simp): super(SymbExecCTypeFix, self).__init__(ir_arch, symbols, chandler, - func_read=func_read, - func_write=func_write, sb_expr_simp=expr_simp) self.cst_propag_link = cst_propag_link diff --git a/example/jitter/trace.py b/example/jitter/trace.py index aeb4c775..e1683450 100644 --- a/example/jitter/trace.py +++ b/example/jitter/trace.py @@ -24,14 +24,14 @@ def instr_hook(jitter): class ESETrackMemory(EmulatedSymbExec): """Emulated symb exec with memory access tracking""" - def _func_read(self, expr_mem): - value = super(ESETrackMemory, self)._func_read(expr_mem) + def mem_read(self, expr_mem): + value = super(ESETrackMemory, self).mem_read(expr_mem) print "Read %s: %s" % (expr_mem, value) return value - def _func_write(self, symb_exec, dest, data): + def mem_write(self, dest, data): print "Write %s: %s" % (dest, data) - return super(ESETrackMemory, self)._func_write(symb_exec, dest, data) + return super(ESETrackMemory, self).mem_write(dest, data) # Parse arguments parser = Sandbox_Linux_arml.parser(description="Tracer") |