def trace_mem(self, uci, access, address, size, value, user_data): """ Hook that shows a visual trace of memory accesses in the form '[address written to] <- value written' or 'value read <- [address read]' """ if self.mem_trace: if address in self.OTHER_REGS_NAMES.keys(): addr = self.OTHER_REGS_NAMES[address] else: addr = color("BLUE", f"0x{address:08x}") if access == uc.UC_MEM_WRITE: val = color("CYAN", f"{value:x}") print(f" [{addr}] <- {val} ", end=" ") else: val = int.from_bytes(uci.mem_read(address, size), self.endianness) val = color("CYAN", f"{val:8x}") print(f" {val} <- [{addr}]", end=" ")
def print_asmline(self, adr, ins, op_str): """ Pretty-print assembly using pygments syntax highlighting """ line = ( highlight(f"{ins:<6} {op_str:<20}", self.asm_hl, self.asm_fmt) .decode() .strip("\n") ) print("\n" + color("YELLOW", f"{adr:8X} ") + line, end=";")