def disassemble(self, info): result = gdb.disassembler.builtin_disassemble(info) arch = info.architecture addr = info.address program_space = info.progspace str = gdb.format_address(addr, program_space, arch) text = result.string + "\t## addr = %s" % str return DisassemblerResult(result.length, text)
def disassemble(self, info): """Disassemble the instruction, add a CACHED comment to the output, and cache the DisassembleInfo so that it is not garbage collected.""" GlobalCachingDisassembler.cached_insn_disas.append(info) GlobalCachingDisassembler.cached_insn_disas.append(self.MyInfo(info)) result = gdb.disassembler.builtin_disassemble(info) text = result.string + "\t## CACHED" return DisassemblerResult(result.length, text)
def disassemble(self, info): tag = "## FAIL" try: info.read_memory(1, -info.address + 2) except gdb.MemoryError: tag = "## AFTER ERROR" result = gdb.disassembler.builtin_disassemble(info) text = result.string + "\t" + tag return DisassemblerResult(result.length, text)
def disassemble(self, info): result = gdb.disassembler.builtin_disassemble(info) len = result.length str = "" for o in range(len): if str != "": str += " " v = bytes(info.read_memory(1, o))[0] if sys.version_info[0] < 3: v = struct.unpack("<B", v) str += "0x%02x" % v text = result.string + "\t## bytes = %s" % str return DisassemblerResult(result.length, text)
def disassemble(self, info): result = gdb.disassembler.builtin_disassemble(info) ad = info.address ar = info.architecture if ad != current_pc: raise gdb.GdbError("invalid address") if not isinstance(ar, gdb.Architecture): raise gdb.GdbError("invalid architecture type") text = result.string + "\t## ad = 0x%x, ar = %s" % (ad, ar.name()) return DisassemblerResult(result.length, text)
def disassemble(self, info): result = gdb.disassembler.builtin_disassemble(info) text = result.string + "\t## tag = %s" % self._tag return DisassemblerResult(result.length, text)
def disassemble(self, info): try: info.read_memory(1, -info.address + 2) except gdb.MemoryError as e: raise gdb.MemoryError("cannot read code at address 0x2") return DisassemblerResult(1, "BAD")
def disassemble(self, info): result = gdb.disassembler.builtin_disassemble(info) # The following read will throw an error. info.read_memory(1, -info.address + 2) return DisassemblerResult(1, "BAD")