def jit_msp430_binary(args): filepath, entryp = args.binary, int(args.addr, 0) myjit = machine.jitter(jit_type=args.jitter) myjit.init_stack() # Log level (if available with jitter engine) myjit.jit.log_regs = args.log_regs myjit.jit.log_mn = args.log_mn myjit.jit.log_newbloc = args.log_newbloc myjit.vm.add_memory_page(0, PAGE_READ | PAGE_WRITE, open(filepath).read()) myjit.add_breakpoint(0x1337, lambda _: exit(0)) # for stack myjit.vm.add_memory_page(0xF000, PAGE_READ | PAGE_WRITE, "\x00" * 0x1000) myjit.cpu.SP = 0xF800 myjit.push_uint16_t(0x1337) myjit.init_run(entryp) # Handle debugging if args.debugging is True: dbg = debugging.Debugguer(myjit) cmd = debugging.DebugCmd(dbg) cmd.cmdloop() else: print(myjit.continue_run())
def run(self, addr=None): """ Launch emulation (gdbserver, debugging, basic JIT). @addr: (int) start address """ if addr is None and self.options.address is not None: addr = int(self.options.address, 0) if any([self.options.debugging, self.options.gdbserver]): dbg = debugging.Debugguer(self.jitter) self.dbg = dbg dbg.init_run(addr) if self.options.gdbserver: port = self.options.gdbserver print "Listen on port %d" % port gdb = self.machine.gdbserver(dbg, port) self.gdb = gdb gdb.run() else: cmd = debugging.DebugCmd(dbg) self.cmd = cmd cmd.cmdloop() else: self.jitter.init_run(addr) self.jitter.continue_run()
def jit_mips32_binary(args): filepath, entryp = args.binary, int(args.addr, 0) myjit = machine.jitter(jit_type=args.jitter) myjit.init_stack() # Log level (if available with jitter engine) myjit.set_trace_log(trace_instr=args.trace, trace_regs=args.trace, trace_new_blocks=args.log_newbloc) myjit.vm.add_memory_page(0, PAGE_READ | PAGE_WRITE, open(filepath).read()) myjit.add_breakpoint(0x1337BEEF, code_sentinelle) # for stack myjit.vm.add_memory_page(0xF000, PAGE_READ | PAGE_WRITE, "\x00" * 0x1000) myjit.cpu.SP = 0xF800 myjit.cpu.RA = 0x1337BEEF myjit.init_run(entryp) # Handle debugging if args.debugging is True: dbg = debugging.Debugguer(myjit) cmd = debugging.DebugCmd(dbg) cmd.cmdloop() else: print(myjit.continue_run()) return myjit