Вопросы по IDA PRO SDK

iva87

Новичок
Сообщения
16
Реакции
2
Есть ряд вопросов, на которые не удается найти ответы, например, хотелось бы воспользоваться функционалом поиска библиотечных функций по сигнатурам, для чего я написал конвертор из файлов библиотек компилятора в текстовые PAT-файлы. Далее с помощью штатного конветора ИДА из них получаю упакованные файлы сигнатур SIG (далее сжимаю их штатным архиватором сигнатур ИДА) и подключаю в IDA PRO (функции распознаются, но только в режиме Автоанализа, хотя желательно бы до него).
Хотелось бы далее создать TIL файлы, но моего компилятора нет в списке ИДА. Без этого TIL файлы не обрабатываются ИДА, а как добавить мой компилятор в списки ИДА, чтобы его можно было выбрать при настройке непонятно -- как принято решить такую задачу?
Надеюсь на помощь и подсказки специалистов
 

iva87

Новичок
Сообщения
16
Реакции
2
что у вас за компмилятор (сами написали? :))
у меня кросс-компилятор, которого нет в списке ИДА https://hex-rays.com/products/ida/tech/flirt/compilers/
это все понятно и мне известно, а вопрос был не в том как создать этой утилитой TIL-файл (это работает и файл создается) -- мне нужно как-то добавить в список компиляторов, которые ИДА позволяет выбрать в меню при попытке использовать сформированный мной TIL файл. Как это сделать?
 

sendersu

Мудрец
Сообщения
206
Реакции
504
Понятно
вообще-то сомнительно, что Ида настолько развита, что умеет формировать в динамике новый описать компилятора, ей неизвестный доселе,
но все же можете попробовать, есть в ее СДК пара тройка АПИ:

1652505050332.png

и структура описания компилятора
1652505107405.png
но вот главный вопрос - можно ли расширять поле comp_t

1652505191105.png
 

iva87

Новичок
Сообщения
16
Реакции
2
Понятно
вообще-то сомнительно, что Ида настолько развита, что умеет формировать в динамике новый описать компилятора, ей неизвестный доселе,
но все же можете попробовать, есть в ее СДК пара тройка АПИ:

Посмотреть вложение 1093

и структура описания компилятора

но вот главный вопрос - можно ли расширять поле comp_t
для меня это дело новое и я не понимаю пока как можно добавить дополнительное значение comp_t = 0хА (маска позволяет), но где и как это можно сделать?

здесь https://stackoverflow.com/questions/46174522/changing-compiler-in-idapython нашел пример костыля, как можно любому из существующих компиляторов изменить его параметры
Changing compiler in IDAPython:
def print_compiler(id):
    print '-'*(80)
    abbr = ida_typeinf.get_compiler_abbr(id)
    name = ida_typeinf.get_compiler_name(id)
    print "id: %d (%s)" % (id,abbr)
    print "Compiler: '%s'" % name
    im = idc.get_inf_attr(INF_COMPILER)
    print "Calling model: %02X" % im.cm
    print "Defauil alignments: %d" % im.defalign
    print "sizeof(int): %d\tsizeof(short): %d" % (im.size_i,im.size_s)
    print "sizeof(bool): %d\tsizeof(long): %d" % (im.size_b,im.size_l)
    print "sizeof(enum): %d\tsizeof(longlong): %d" % (im.size_e,im.size_ll)
    print "sizeof(long double): %d" % (im.size_ldbl)
    print "Predefined macros: '%s'" % ida_idp.cfg_get_cc_predefined_macros(id)
    print "Included directories: '%s'" % ida_idp.cfg_get_cc_header_path(id)
    print '-'*(80)

# Print Old Compiler settings by ID
print_compiler(idc.get_inf_attr(INF_COMPILER).id)

# Set Compiler defaults for Visual C++
im = idc.get_inf_attr(INF_COMPILER) # Get current settings
im.id = ida_typeinf.COMP_MS
im.cm = 0x03 | 0x00 | 0x30
im.defalign = 0
im.size_i = 4
im.size_b = 1
im.size_e = 4
im.size_s = 2
im.size_l = 4
im.size_ll = 8
im.size_ldbl = 8
# Replace predefined macros and included directories by id
# from IDA.CFG (see 'CC_PARMS' in Built-in C parser parameters)
ida_typeinf.set_c_macros(ida_idp.cfg_get_cc_predefined_macros(im.id))
ida_typeinf.set_c_header_path(ida_idp.cfg_get_cc_header_path(im.id))
# Resetting new settings :)
idc.set_inf_attr(INF_COMPILER, im.id)

# Print New Compiler settings by ID
print_compiler(im.id)
 
Верх Низ