IDA не идентифицирует статически скомпилированные функции

В настоящее время я реконструирую файл, который кажется статически скомпилированным, однако IDA Pro не обнаруживает ни одной из подписей! Мне кажется, что я трачу много времени на пошаговое выполнение функций, которые должны быть распознаны IDA, но это не так.

В любом случае, может быть, я ошибаюсь... у кого-нибудь есть идеи? Кто-нибудь сталкивался с этим раньше?


person Fran Fitzpatrick    schedule 05.05.2012    source источник
comment
Очень трудно догадаться, почему IDA не хочет дизассемблировать ваш файл (без этого файла мы можем только догадываться). Может быть, он не может решить двоичное шифрование, если оно есть, трудно сказать. Я бы посоветовал вам попробовать другой инструмент или просто contact vendor.   -  person TLama    schedule 05.05.2012
comment
Кажется, нет никакого шифрования, упаковки или обфускации. Некоторые ключевые строки запутаны, но я уже определил алгоритм и разобрался, что это было.   -  person Fran Fitzpatrick    schedule 05.05.2012


Ответы (3)


IDA — отличный дизассемблер, но он не идеален. Некоторый код, особенно нелинейный/оптимизированный код, просто невозможно разобрать на согласованные функции автоматизированным способом. Вот что происходит во время компиляции: связный код преобразуется в инструкции, которые понимает машина, а не люди. IDA может делать предположения и оценки, но не все. Обратный инжиниринг всегда будет включать некоторую ручную интерпретацию, чтобы заполнить пробелы.

person Remy Lebeau    schedule 05.05.2012

Если компилятор не распознан IDA (например, были какие-то изменения в коде запуска), сигнатуры не будут применяться автоматически. А если IDA вообще не знает этого компилятора, то и сигнатур у него не будет. Так:

  1. если у него есть сигнатуры, но компилятор не распознался автоматически, примените их вручную. Для Delphi/C++ Builder попробуйте b32vcl или bds.

  2. если у него нет сигнатур для этого компилятора/библиотеки, вы можете создать их самостоятельно с помощью инструментов FLAIR (при условии, что у вас есть доступ к исходным библиотекам)

person Igor Skochinsky    schedule 07.05.2012

Этот вопрос очень широк, но я постараюсь высказать свое мнение.

Если проблема в том, что IDA неправильно идентифицирует Delphi, вам следует попробовать другое программное обеспечение. Существует хороший инструмент под названием IDR (Interactive Delphi Reconstructor), однако имейте в виду, что он запускает программное обеспечение перед его дизассемблированием, и вам не следует запускать какие-либо ненадежные программы на вашем ПК (попробуйте использовать виртуальную машину)

В противном случае, если вопрос касается самой IDA, то... IDA совсем не идеальна, поэтому для ее хорошей работы требуется реверс-инженер, это будет означать, что вам придется статически идентифицировать некоторый код, указатели стека, переменные и т. д. Если дело доходит до декомпилятора Hex-Rays, есть еще много вещей, на которые стоит обратить внимание. Например, он может указать на неправильное соглашение для функции, и вам придется его исправить, или он может создать слишком много переменных, которые должны быть сопоставлены вручную.

Также есть несколько баз данных для функций IDA Flirt, которые могут быть вам полезны. https://github.com/Maktm/FLIRTDB

person Matthew Darens    schedule 17.03.2021