def concrete_run_get_trace(inp): consts = config.get_group("core") consts.mprocessing = consts.mprocessing.single m1 = Manticore.linux(prog, concrete_start=inp, workspace_url="mem:") t = ExtendedTracer() # r = TraceReceiver(t) set_verbosity(VERBOSITY) m1.register_plugin(t) # m1.register_plugin(r) m1.run() for st in m1.all_states: return t.get_trace(st)
def main(): parser = argparse.ArgumentParser(description='Follow a concrete trace') parser.add_argument('-f', '--explore_from', help='Value of PC from which to explore symbolically', type=str) parser.add_argument('-t', '--explore_to', type=str, default=sys.maxsize, help="Value of PC until which to explore symbolically. (Probably don't want this set)") parser.add_argument('--verbose', '-v', action='count', default=0, help='Increase verbosity') parser.add_argument('cmd', type=str, nargs='+', help='Program and arguments. Use "--" to separate script arguments from target arguments') args = parser.parse_args(sys.argv[1:]) range = None if args.explore_from: range = (args.explore_from, args.explore_to) # Create a concrete Manticore and record it m1 = Manticore.linux(args.cmd[0], args.cmd[1:]) t = ExtendedTracer() r = TraceReceiver(t) m1.verbosity(args.verbose) m1.register_plugin(t) m1.register_plugin(r) m1.run(procs=1) time.sleep(3) # Create a symbolic Manticore and follow last trace symbolic_args = ['+'*len(arg) for arg in args.cmd[1:]] m2 = Manticore.linux(args.cmd[0], symbolic_args) f = Follower(r.trace) if range: f.add_symbolic_range(*range) m2.verbosity(args.verbose) m2.register_plugin(f) m2.run()
def concrete_run_get_trace(inp): m1 = Manticore.linux(prog, concrete_start=inp, workspace_url='mem:') t = ExtendedTracer() r = TraceReceiver(t) m1.verbosity(VERBOSITY) m1.register_plugin(t) m1.register_plugin(r) m1.run(procs=1) return r.trace