Анализ алгоритмов исполняемых файлов внутри программнойЭВМ с изменяемой спецификацией | Прикладная дискретная математика. Приложение. 2012. № 5.

Анализ алгоритмов исполняемых файлов внутри программнойЭВМ с изменяемой спецификацией

Thereport addresses to issues related to the description of the semantics of machine instructions.This includes the analysis of expressions. It also discusses the methods for dynamic analysisof applications executed within the built-in environment, such as tracing the progress ofthe program and the construction of the graph of conditional transitions.

Analysis of algorithms of executable files in a computer emulator with a changeable specification.pdf Одним из этапов анализа программного обеспечения является низкоуровневый ана-лиз алгоритмов, скомпилированных в исполняемый файл. Несмотря на то, что даннаяпроблема является довольно популярной, для неё не существует тривиального реше-ния, а имеется набор инструментов и методов [1, с. 3]. Одним из способов решенияданной проблемы является использование дизассемблера, чего, однако, часто быва-ет недостаточно в силу того, что пользователя интересует, каким образом программавзаимодействует с внешними устройствами [2, с. 30-38].Чтобы решить эту проблему, необходимо запустить исполняемый файл внутри ис-кусственной среды, которая эмулирует работу компьютера вместе с его внешнимиустройствами и приборами. Таким образом достигается абсолютный контроль над ис-полняемым приложением. Пользователь может наблюдать за работой не только самойпрограммы, но и среды (внешних устройств), внутри которой она исполняется [3].В силу того, что программы могут быть скомпилированы для разных типов процес-соров и при помощи разных компиляторов, дизассемблеры могут некорректно разби-рать скомпилированный файл. Например, выравнивание в файле приложения можетбыть интерпретировано дизассемблером как операция сложения (в процессорах x86 ко-ду 0x00 соответствует команда add). Глядя на дизассемблированный код, однозначнопонять, что это действительно сложение или выравнивание, часто бывает проблема-тично. Чтобы сказать однозначно, необходимо выполнить программу в эмуляторе ипроследить за состоянием регистров на проблемном участке [1, с. 4].Автором разработана система, представляющая собой набор программных средствдля динамического анализа кода. В качестве тестового примера выбран компьютер Ра-дио 86РК на базе процессора 18080. Система эмулирует оперативную память и устрой-ства ввода и вывода. Особенностью данной системы является то, что описание машин-ных команд может меняться в зависимости от типа процессора, это позволяет решитьпроблему неправильной интерпретации команд при дизассемблировании исполняемогофайла программы. Семантика машинных команд описывается на искусственном язы-ке, разработанном автором. При запуске эмулятор читает описание семантики, послечего инициализирует среду для работы с данным типом процессора. Таким образомдостигается абстрагирование от аппаратной части, что позволяет эмулятору опериро-вать более высокоуровневыми структурами.Язык описания машинных команд напоминает языки ассемблера и С. Чтение се-мантики происходит в два этапа. На первом этапе участки кода, написанные на язы-ке С, переводятся на язык ассемблера путём разбора выражений. На втором этапепроисходит разбор ассемблерного кода в определённые структуры, которые, в своюочередь, используются в ещё более сложных структурах и далее - в эмуляторе.Кроме функции чтения семантики и эмуляции процессора, система выполняетфункцию дизассемблера и анализатора программы. Основываясь на описании машин-ных команд, система может дизассемблировать исполняемый файл и выполнять по-шаговую отладку.Последняя из них, функция анализа, является первой по значению и самой сложнойи интересной из всех представленных (на данный момент находится на этапе разработ-ки). Результатом анализа должно быть представление программы (кода) в наиболеепростом для понимания виде. Для этого разработан инструмент, позволяющий строитьграф условных переходов.В докладе излагаются также вопросы, связанные с описанием семантики машин-ных команд, что включает в себя разбор выражений, и методы динамического анализаприложений, исполняемых внутри искусственной среды - трассировка состояний ре-гистров и построение графа условных переходов.

Ключевые слова

Авторы

ФИООрганизацияДополнительноE-mail
Бурлаков Алексей СергеевичИркутского государственного университетаспирантalex_burlakov@bk.ru
Всего: 1

Ссылки

Касперски К. Образ мышления - дизассемблер IDA. Т. I. М.: СОЛОН-Р, 2001.
Юров В. И. Ассемблер. Учебник для вузов. 2-е изд. СПб.: Питер, 2010.
Демин А. Эмулятор Радио 86РК на JavaScript. http://radio86.googlecode.com/hg/ online/radio86.html, 2009.
 Анализ алгоритмов исполняемых файлов внутри программнойЭВМ с изменяемой спецификацией | Прикладная дискретная математика. Приложение. 2012. № 5.

Анализ алгоритмов исполняемых файлов внутри программнойЭВМ с изменяемой спецификацией | Прикладная дискретная математика. Приложение. 2012. № 5.