IDA Pro меняет цвет переменных в псевдокодеPython

Программы на Python
Anonymous
IDA Pro меняет цвет переменных в псевдокоде

Сообщение Anonymous »

Очень простой плагин Ida Pro, который меняет цвет MyVar123 внутри окна псевдокода.
Проблема в том, что этот подход ограничен использованием констант ida_lines.SCOLOR_... для цвета. Как определить свой собственный цвет текста, например. #00FF00 или каким-либо другим способом?
Я прочитал SDK и не нашел функции, отвечающей за пользовательские цветовые коды.
import idaapi, ida_kernwin, ida_lines

class ColorizeVariable(ida_kernwin.action_handler_t):

def __init__(self):
ida_kernwin.action_handler_t.__init__(self)

def activate(self, ctx):

if ida_kernwin.get_widget_type(ctx.widget) == ida_kernwin.BWN_PSEUDOCODE:
vu = idaapi.get_widget_vdui(ctx.widget)
pc = vu.cfunc.get_pseudocode()

find = "MyVar"

vu.refresh_view(False)

for sl in pc:
sl.line = sl.line.replace(find, ida_lines.COLSTR(find, ida_lines.SCOLOR_DNAME))
#sl.line = sl.line.replace(find, f'{ida_lines.COLOR_ON}{ida_lines.COLOR_CHAR}{find}{ida_lines.COLOR_OFF}{ida_lines.COLOR_CHAR}') # broken
#sl.line = sl.line.replace(find, f'{ida_lines.COLOR_ON}\x0A{find}{ida_lines.COLOR_OFF}\x0A') #working
#sl.line = sl.line.replace(find, f'\1\x0A{find}\2\x0A') #short version

return 0

def update(self, ctx):
return ida_kernwin.AST_ENABLE_ALWAYS

class ida_plugin_container(idaapi.plugin_t):

flags = idaapi.PLUGIN_UNL
comment = 'plugin comment'
help = 'help message'
wanted_name = "myPlugin"
wanted_hotkey = 'Shift-Q'

def init(self):

action_desc = idaapi.action_desc_t(
'myAction',
'Colorize Variable',
ColorizeVariable(),
'Ctrl+R',
'Colorize Variable in Pseudocode',
10)

ida_kernwin.unregister_action('myAction')
ida_kernwin.register_action(action_desc)

ida_kernwin.attach_action_to_toolbar("SearchToolBar", 'myAction')
print('loaded')
return idaapi.PLUGIN_OK

def run(self, arg):
pass

def term(self):
pass

def PLUGIN_ENTRY():
return ida_plugin_container()


Подробнее здесь: https://stackoverflow.com/questions/786 ... pseudocode

Вернуться в «Python»