Beispiel #1
0
    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)
Beispiel #2
0
    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)
Beispiel #3
0
 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)
Beispiel #4
0
 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
Beispiel #6
0
    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
Beispiel #8
0
 def color(cls):
     """Current color"""
     ea = cls.address()
     return idaapi.get_item_color(ea)
Beispiel #9
0
 def color(cls):
     '''Return the color of the current item.'''
     ea = cls.address()
     return idaapi.get_item_color(ea)
Beispiel #10
0
 def color(cls):
     """Current color"""
     ea = cls.address()
     return idaapi.get_item_color(ea)
Beispiel #11
0
 def color(cls):
     '''Return the color of the current item.'''
     ea = cls.address()
     return idaapi.get_item_color(ea)
Beispiel #12
0
def color_read(ea=None):
    return idaapi.get_item_color(ui.current.address() if ea is None else ea)
Beispiel #13
-1
 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)