УДК 004.056.53
МЕТОДИКА ВЕРИФИКАЦИИ АЛГОРИТМА РАБОТЫ МОДИФИЦИРОВАННОГО
ПРОГРАММНОГО МОДУЛЯ
Н. А. Субботин Научный руководитель - И. А. Лубкин
Сибирский государственный аэрокосмический университет имени академика М. Ф. Решетнева Российская Федерация, 660037, г. Красноярск, просп. им. газ. «Красноярский рабочий», 31
Е-mail: sub.nik.and@gmail.com
Предложена методика верификации алгоритма работы модифицированного программного модуля. Данная методика может быть применена для верификации программных комплексов систем управления ракетно-космическими аппаратами в случае их модификации.
Ключевые слова: эквивалентность программ, модификация кода, верификация кода.
TECHNIQUE OF PROGRAM MODULE'S ALGORITHM VERIFICATION
AFTER ITS MODIFICATION
N. A. Subbotin Scientific Supervisor - I. A. Lubkin
Reshetnev Siberian State Aerospace University 31, Krasnoyarsky Rabochy Av., Krasnoyarsk, 660037, Russian Federation Е-mail: sub.nik.and@gmail.com
This article suggests the technique of program module's algorithm verification after its modification. Described technique may be implemented to verify management software of rocket-space devices in case of its modification.
Keywords: program equivalence, code modification, code verification.
На данный момент существует множество систем защиты, применяемых к скомпилированному программному продукту: ASProtect [0], EXECryptor [2], Themida [3], Private exe Protector [4] и др. Данные средства позволяют защитить программу от несанкционированного использования и предотвратить ее вредоносные модификации. Последнее особенно актуально в высоконадежных системах, к которым относятся системы управления ракетно-космическими аппаратами [5].
Авторы таких средств защиты не раскрывают алгоритмов их работы и, следовательно, не публикуют в рецензируемой литературе доказательств их корректной работы. В проведенном обзоре литературы нет достоверных сведений, выполняется ли проверка корректности работы программы, модифицированной с помощью приведенных средств защиты. Пользователям остается только доверять опыту и квалификации авторов средств защиты.
Также, техника модификации скомпилированного программного модуля используется во вредоносном программном обеспечении [6]. Авторы данных средств описывают алгоритм работы своих средств и предоставляют исходные коды в открытом доступе, но не гарантируют корректную их работу.
В качестве еще одного примера можно привести предложенный в [7] подход к защите программы - встраивание системы защиты в скомпилированную программу. Развитие данного подхода со стороны корректности преобразований программного кода представлено в [8]. В данной работе в качестве поставщика информации о структуре программного кода используются дизассемблеры. На момент выполнения работы не найдены дизассемблеры, которые имели бы математически доказанную корректность работы для произвольных входных данных, а, следователь-
Актуальные проблемы авиации и космонавтики - 2017. Том 2
но, методика не может гарантировать неизменность алгоритма работы модифицированного программного модуля.
Исходя из описанных выше проблем была сформулирована цель работы - создание методики верификации алгоритма работы модифицированного программного модуля и системы верификации на её основе.
Недоверие к источнику информации о структуре программного модуля приводит к тому, что используемые в работе методики верификации программного модуля имеют вероятностный характер, и, предположительно, неустранимый. Из существующих методов верификации программ [10] с учетом требования автоматизации и, как следствие, отсутствия необходимости непосредственного участия человека были выбраны два метода анализа: статический, имеющий некоторую вероятность корректной работы ps, и динамический, имеющий вероятность корректной работы pd. Данные методы последовательно применяются к каждому базовому блоку (Basic Block, далее - BB) - последовательности инструкций, каждая из которых исполняется тогда и только тогда, когда исполняется первая инструкция из последовательности [11] - программного модуля.
При проведении проверки каждого BB с заданными вероятностями статического и динамического анализов, получим вероятность корректности программного модуля pP = n / m, где n -число проверенных BB, m - число всех BB. В рамках данной работы методом верификации выбран динамический анализ множества BB программного модуля. Это связано с тем, что динамический анализ позволяет определить равенство алгоритмов двух BB.
Для проведения верификации посредством динамического анализа была разработана методика экспериментальной проверки BB путем сравнения состояния программы до и после модификации. Одной из задач разработанной методики является получение состояния процесса при достижении им определенной инструкции во время выполнения. Предварительный анализ открытых источников показал, что в свободном доступе отсутствует автоматизированное средство, выполняющее эту задачу. В связи с этим был разработан проект этого средства, данный проект был реализован в виде программы, был сформирован список тестов в соответствии с алгоритмом работы программы, разработанное средство было протестировано и доработано на основании полученных результатов тестов.
Помимо разработанного средства, система верификации использует утилиты xxd [12] - для перевода из бинарного вида в текстовый - и diff [13] - для непосредственного сравнения. Для автоматизации процесса сравнения были разработаны bash-скрипты, запускающие программы в необходимом порядке.
По разработанной методике верификации были проведены эксперименты по вставке последовательностей NOP-инструкций с использованием алгоритма, представленного в [8]. В рамках каждого эксперимента участок исследуемого кода был сформирован, модифицирован посредством вставки нескольких NOP-инструкций и исследован на равенство по разработанной методике верификации. Результатом каждого эксперимента было изменение одного лишь регистра следующей инструкции, что и ожидалось до проведения экспериментов.
Результатом работы является методика верификации алгоритма работы модифицированного программного модуля и система верификации, работающая на её основе.
Библиографические ссылки
1. ASPack Software [Электронный ресурс]. URL: http://www.asprotect.ru/ (дата обращения: 11.04.2017).
2. EXECryptor [Электронный ресурс]. URL: http://www.strongbit.com/execryptor.asp (дата обращения: 11.04.2017).
3. Oreans Technology [Электронный ресурс]. URL: http://www.oreans.com/themida.php (дата обращения: 11.04.2017).
4. Private exe Protector [Электронный ресурс]. URL: https://private-exe-protector.com/ (дата обращения: 11.04.2017).
5. Тюгашев А. А., Ильин И. А., Ермаков И. Е. Пути повышения надежности и качества программного обеспечения в космической отрасли [Электронный ресурс] // Управление большими
системами. Выпуск 39. URL: http://ubs.mtas.ru/archive/search_results_new.php?publication_id= 18862 (дата обращения: 06.09.2016).
6. Peter Ször, Peter Ferrie. Hunting for metamorphic [Электронный ресурс] // Symantec Security Response, 2003 URL: http://www.symantec.com/avcenter/reference/hunting.for. metamorphic.pdf (дата обращения: 22.03.2016).
7. Кукарцев А. М., Лубкин И. А. Методика защиты программного кода от несанкционированной модификации и исследования посредством его хеширования [Электронный ресурс] // Вестник СибГАУ. 2008. № 1. URL: http://cyberleninka.ru/article/n/metodika-zaschity-programmnogo-koda-ot-nesanktsionirovannoy-modifikatsii-i-issledovaniya-posredstvom-ego-heshirovaniya (дата обращения: 22.03.2016).
8. Субботин Н. А., Лубкин И. А. Методика автоматической модификации программного кода с сохранением алгоритма работы [Электронный ресурс] // Решетневские чтения : материалы XX Юбилейной междунар. науч. конф. (09-12 ноября 2016, г. Красноярск) : в 2 ч. / под общ. ред. Ю. Ю. Логинова ; Сиб. гос. аэрокосмич. ун-т. Красноясрк, 2016. Часть 2. С. 277-278. URL: https://disk.sibsau.ru/index.php/s/UGP7UcMvdmtYV7o (дата обращения: 11.04.2017).
9. Peter Ször, Peter Ferrie. Hunting for metamorphic [электронный ресурс] // Symantec Security Response, 2003 URL: http://www.symantec.com/avcenter/reference/hunting.for.metamorphic.pdf (дата обращения: 22.03.2016).
10. Кулямин В. В. Методы верификации программного обеспечения [Электронный ресурс] // Институт системного программирования РАН - Москва, 2003. URL: http://www.ict.edu.ru/ft/ 005645/62322e1-st09.pdf (дата обращения: 01.03.2016).
11. John L. Hennessy, David A. Patterson. Computer Architecture: A Quantitative Approach. Fourth Edition [Электронный ресурс] // Morgan Kaufmann Publishers is an Imprint of Elsevier - San Francisco, 2007. URL: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.115.1881&rep=rep1 &type=pdf (дата обращения: 28.02.2017).
12. xxd [Электронный ресурс] // LinuxCommand.org, 1996. URL: http://linuxcommand.org/ man_pages/xxd1.html (дата обращения: 11.04.2017).
13. diff [Электронный ресурс] // LinuxCommand.org, 1993. URL: http://linuxcommand.org/ man_pages/diff1.html (дата обращения: 11.04.2017).
© Субботин Н. А., 2017