def cb_curline(self, ea): if self.prev_loc: prev_ea, prev_color = self.prev_loc cur_color = idaapi.get_item_color(prev_ea) # race condition: block/instruction's color may have been modified # after it was saved if (cur_color != prev_color) and (cur_color != COL_CURLINE): prev_color = cur_color idaapi.set_item_color(prev_ea, prev_color) self.prev_loc = [ea, idaapi.get_item_color(ea)] idaapi.set_item_color(ea, COL_CURLINE)
def highlight(self, color=COLOR): for ea in idautils.Heads(): if idaapi.isCode(idaapi.getFlags(ea)) and idaapi.is_call_insn(ea): current_color = idaapi.get_item_color(ea) if current_color == self.COLOR: idaapi.set_item_color(ea, idc.DEFCOLOR) elif current_color == idc.DEFCOLOR: idaapi.set_item_color(ea, self.COLOR)
def highlight(self): for ea in idautils.Heads(): flags = ida_shims.get_full_flags(ea) if ida_shims.is_code(flags) and idaapi.is_call_insn(ea): current_color = idaapi.get_item_color(ea) if current_color == self.COLOR: idaapi.set_item_color(ea, idc.DEFCOLOR) elif current_color == idc.DEFCOLOR: idaapi.set_item_color(ea, self.COLOR)
def next_color(current_color, ea): coloring_order = [colors[c] for c in [ 'gray', 'white', 'red', 'yellow', ]] BGR_MASK = 0xffffff ea_color = idaapi.get_item_color(ea) if ea_color & BGR_MASK not in coloring_order: return current_color assert (current_color & BGR_MASK in coloring_order) ea_idx = coloring_order.index(ea_color & BGR_MASK) current_idx = coloring_order.index(current_color & BGR_MASK) if ea_idx >= current_idx: return ea_color else: return current_color
def apply_colors(self, vd, result): self.reset_all_colors() if not result: return pseudocode, lineno, col, item_ea_list = result disasm_lines = [(ea, idaapi.get_item_color(ea)) for ea in item_ea_list] if len(item_ea_list): idaapi.jumpto(item_ea_list[0], -1, idaapi.UIJMP_IDAVIEW | idaapi.UIJMP_DONTPUSH) self.pseudocode_instances[vd.view_idx] = (pseudocode, lineno, col, disasm_lines) if pseudocode: try: pseudocode[lineno].bgcolor = HL_COLOR except Exception as err: # wtf print(err) for ea, _ in disasm_lines: idaapi.set_item_color(ea, HL_COLOR)
def next_color(current_color, ea): coloring_order = [ colors[c] for c in [ 'gray', 'white', 'red', 'yellow', ] ] BGR_MASK = 0xffffff ea_color = idaapi.get_item_color(ea) if ea_color & BGR_MASK not in coloring_order: return current_color assert(current_color & BGR_MASK in coloring_order) ea_idx = coloring_order.index(ea_color & BGR_MASK) current_idx = coloring_order.index(current_color & BGR_MASK) if ea_idx >= current_idx: return ea_color else: return current_color
def color(cls): """Current color""" ea = cls.address() return idaapi.get_item_color(ea)
def color(cls): '''Return the color of the current item.''' ea = cls.address() return idaapi.get_item_color(ea)
def color_read(ea=None): return idaapi.get_item_color(ui.current.address() if ea is None else ea)