Актуальные проблемы авиации и космонавтики - 2018. Том 3
УДК 004.056
РЕВЕРС-ИНЖИНИРИНГ ПРОГРАММНОГО ПРОДУКТА С ИСПОЛЬЗОВАНИЕМ IDA PRO
И. Т. Аёшин
Сибирский государственный университет науки и технологий имени академика М. Ф. Решетнева Российская Федерация, 660037, г. Красноярск, просп. им. газ. «Красноярский рабочий», 31
Е-mail: [email protected]
Представлены методы анализа программного продукта. Изложен принцип реверс-инжиниринга на основе дизассемблера Ida pro. Рассмотрены причины для изучения и использования метода обратного инжиниринга.
Ключевые слова: реверс-инжиниринг, дизассемблер, программа, ассемблер, исполняемый
файл.
REVERSE ENGINEERING OF SOFTWARE BY IDA PRO
I. T. Ayoshin
Reshetnev Siberian State University of Science and Technology 31, Krasnoyarsky Rabochy Av., Krasnoyarsk, 660037, Russian Federation Е-mail: [email protected]
The methods of software analysis are presented. The principle of software reverse engineering by IDA Pro is described. Also there are causes of a such researching and using reverse engineering.
Keywords: reverse engineering, disassembler, software, assembler, executable file.
Применение программного обеспечения позволяет упростить жизнь в самых разнообразных областях, в том числе в аэрокосмической области. При этом бывает ряд проблем, связанных с программным обеспечением. К примеру, необходимость анализа программного кода в случае наличие подозрений об аномальном поведении программ (наличии троянских вирусов и пр.). Решением проблем в таком случае будет применение дисассемблеров или реверс инжиниринг. В рамках данной работы была поставлена задача изучения возможностей реверс инжиниринга для изучения программ.
Реверс-инжиниринг или обратная разработка используется в настоящее время для таких задач [1]:
1. Оптимизации функциональности приложений в случаях, когда компания-производитель перестала существовать и поддерживать продукт.
2. Анализа вирусов, троянских программ, а также выделения их сигнатур и создания средств защиты.
3. Расшифровка форматов файлов для улучшения совместимости.
4. Обучение.
Обратная разработка программного обеспечения производится с помощью следующих методик:
1. Анализ обмена данными, наиболее распространённый в обратной разработке протоколов обмена данными, который производится с помощью анализатора шины и пакетного сниффе-ра для прослушивания шины компьютера и компьютерной сети соответственно.
2. Дизассемблирование машинного кода программы для получения её листинга на языке ассемблера. Этот способ работает на любой компьютерной программе, но требует достаточно много времени, особенно для неспециалиста.
Секция «Молодежь, наука, творчество (направленияСПО)»
3. Декомпиляция машинного или байт-кода программы для создания исходного кода на некотором языке программирования высокого уровня.
В данной работе рассматривается метод дизассемблирования, осуществляемый при помощи специальных программ-дизассемблеров. Дизассемблер - транслятор, преобразующий машинный код, объектный файл или библиотечные модули в текст программы на языке ассемблера. Выделяют два вида дизассемблеров [2]:
1. Автоматические.
2. Интерактивные.
Дизассемблеры бывают однопроходные и многопроходные. Основная трудность при работе дизассемблера - отличить данные от машинного кода, поэтому на первых проходах автоматически или интерактивно собирается информация о границах процедур и функций, а на последнем проходе формируется итоговый листинг [3]. Интерактивность позволяет улучшить этот процесс, так как просматривая дамп дизассемблируемой области памяти, программист может сразу выделить строковые константы, дать содержательные имена известным точкам входа, прокомментировать разобранные им фрагменты программы. В основном дизассемблер используется для анализа программного продукта, исходный код которого неизвестен, а также для анализа и оптимизации создаваемого машинного кода [4]. Для анализа программного кода в данной работе используется IDA Pro Disassembler, так как эта программа отличается исключительной гибкостью, наличием встроенного командного языка, поддерживает множество форматов исполняемых файлов для большого числа процессоров и операционных систем. Позволяет строить блок-схемы, изменять названия меток, просматривать локальные процедуры в стеке и многое другое. В последних версиях имеет встроенный отладчик x86 и ARM. В начале исследования дизассемблер выполняет автоматический анализ программы, а затем пользователь с помощью интерактивных средств IDA начинает давать осмысленные имена, комментировать, создавать сложные структуры данных и другим образом добавлять информацию в листинг, генерируемый дизассемблером пока не станет ясно, что именно и как делает исследуемая программа. Дизассемблер имеет консольную и графическую версии. Поддерживает большое количество форматов исполняемых файлов. Одной из отличительных особенностей IDA Pro является возможность дизассемблиро-вания байт-кода виртуальных машин Java и .NET. Также поддерживает макросы, плагины и скрипты, а последние версии содержат интегрированный отладчик [5].
По итогам работы, были получены навыки работы в IDA Pro и изучена одна из программ, написанных собственноручно.
Библиографические ссылки
1. Крис Касперски, Ева Рокко. Искусство дизассемблирования. 2008.
2. Bruce Dang, Alexandre Gazet, Elias Bachaalany, Sebastien Josse. Practical Reverse Engineering: x86, x64, ARM, Windows Kernel, Reversing Tools, and Obfuscation. 2014.
3. Крис Касперски. Образ мышления - дизассемблер IDA. 2001.
4. Крис Касперски Техника и философия хакерских атак - записки мыщ'а. 2002.
5. Пирогов В. Ю. Ассемблер и дизассемблирование. 2006.
© Аёшин И. Т., 2017