Научная статья на тему 'Методика автоматической модификации программного кода с сохранением алгоритма работы'

Методика автоматической модификации программного кода с сохранением алгоритма работы Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
85
7
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ВСТАВКА КОДА / ЭКВИВАЛЕНТНОСТЬ ПРОГРАММ / МОДИФИКАЦИЯ ПРОГРАММ / CODE INSERTION / PROGRAM EQUIVALENCE / PROGRAM MODIFICATION

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Субботин Н.А., Лубкин И.А.

Предложена методика встраивания кода в скомпилированную программу с сохранением алгоритма её работы. Данная методика может быть применена для защиты систем управления ракетно-космическими аппаратами.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

TECHNIQUE OF AUTOMATIC CODE MODIFICATION WITH ALGORITHM PRESERVATION

This research proposes a technique of an automatic code insertion in a compiled program preserving its algorithm. Described technique may be implemented to protect management systems of rocket-space devices.

Текст научной работы на тему «Методика автоматической модификации программного кода с сохранением алгоритма работы»

Методы и средства защиты информации

УДК 004.056.53

МЕТОДИКА АВТОМАТИЧЕСКОЙ МОДИФИКАЦИИ ПРОГРАММНОГО КОДА С СОХРАНЕНИЕМ АЛГОРИТМА РАБОТЫ

Н. А. Субботин*, И. А. Лубкин

Сибирский государственный аэрокосмический университет имени академика М. Ф. Решетнева Российская Федерация, 660037, г. Красноярск, просп. им. газ. «Красноярский рабочий», 31

E-mail: sub.nik.and@gmail.com

Предложена методика встраивания кода в скомпилированную программу с сохранением алгоритма её работы. Данная методика может быть применена для защиты систем управления ракетно-космическими аппаратами.

Ключевые слова: вставка кода, эквивалентность программ, модификация программ.

TECHNIQUE OF AUTOMATIC CODE MODIFICATION WITH ALGORITHM PRESERVATION

N. A. Subbotin*, I. A. Lubkin

Reshetnev Siberian State Aerospace University 31, Krasnoyarsky Rabochy Av., Krasnoyarsk, 660037, Russian Federation E-mail: sub.nik.and@gmail.com

This research proposes a technique of an automatic code insertion in a compiled program preserving its algorithm. Described technique may be implemented to protect management systems of rocket-space devices.

Keywords: code insertion, program equivalence, program modification.

Современные языки программирования можно разделить на три класса: компилируемые, интерпретируемые и компилируемые в промежуточный код [1]. Несмотря на рост числа программ, написанных на интерпретируемых и компилируемых в промежуточный код языках [2], их функционирование все равно основывается на исполнении машинного кода. Таким образом, вышеперечисленные классы языков программирования сводятся к классу компилируемых.

На данный момент существует множество систем защиты, применяемых к скомпилированному программному продукту: ASProtect, EXECryptor, Themida и др. Такие системы защиты позволяют защитить программу от несанкционированного использования и предотвратить вредоносные модификации программы. Последнее актуально в высоконадежных системах, к которым относятся системы управления ракетно-космическими аппаратами [3].

Анализ приведенных выше программ показал, что ни одно из таких средств защиты детально не раскрывает своего принципа работы и что их авторы не публикуют в научной литературе доказательств корректной работы этих средств. При раскрытии принципа работы обычно появляется возможность автоматизированного обхода систем защиты, что подтверждается наличием программных средств, которые противодействуют такой защите: ASPack unpacker, Themida unpacker, Unpacker EXECryptor и др. Это означает, что безопасность программ основывается на незнании механизмов защиты.

Предложенный в [4] метод защиты программы -встраивание системы защиты в скомпилированную

программу - также встречается в упомянутых выше средствах, но способ его реализации не описан. Также техника встраивания стороннего программного кода давно используется во вредоносном программном обеспечении [5].

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

Цель работы заключается в создании методики автоматической вставки кода в скомпилированную программу с сохранением алгоритма работы.

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

Для сохранения алгоритма работы программы необходимо, чтобы после вставки инструкций в функцию она при одинаковых аргументах возвращала

<Тешетневс^ие чтения. 2016

те же значения, что и до модификации. При вставке холостых инструкций это требование выполняется, поэтому апробация методики вставки происходит на них.

Более того, при вставке инструкций происходит сдвиг всего кода, всех данных и метаданных программы, которые располагаются после них. Это приводит к тому, что инструкции, обращающиеся к данным (коду), по факту теперь указывают на некие другие данные (код). При попытке такого обращения алгоритм работы программы будет отличаться от исходного.

Также современные форматы программ [6] содержат метаданные, необходимые для исполнения программы в операционной системе. При вставке инструкций метаданные могут перестать соответствовать программе, что приведет к ошибке в момент запуска программы.

Для решения последних двух проблем в рамках работы была создана схема корректировок. Она представляет собой алгоритм корректировки кода и метаданных в соответствии с адресом и объемом вставки.

В работе была разработана методика модификации программного кода с сохранением алгоритма работы. На данном этапе её можно представить в виде последовательности из трех шагов:

- вставка холостых инструкций в секции кода программы;

- корректировка обращений к данным и коду в соответствии с созданной в рамках работы схемой корректировок;

- генерация метаданных в соответствии с исходными метаданными и схемой корректировок.

Результаты работы представляют собой методику без привязки к конкретным форматам исполняемых файлов и вычислительных архитектур. Полученная методика будет использоваться в дальнейшем развитии направления: разработка программного обеспечения для анализа, модификации, сборки и верификации модифицированных программ. Также планируется наработка экспериментальной базы и рассмотрение вставок иных инструкций, отличных от холостых.

Библиографические ссылки

1. Krauss A. Programming Concepts: Compiled and Interpreted Languages [Электронный ресурс]. URL: https://thesocietea.org/2015/07/programming-concepts-compiled-and-interpreted-languages/ (дата обращения: 06.09.2016).

2. TIOBE Index [Электронный ресурс]. URL: http://www.tiobe.com/tiobe-index/ (дата обращения: 06.09.2016).

3. Тюгашев А. А., Ильин И. А., Ермаков И. Е. Пути повышения надежности и качества программного обеспечения в космической отрасли

[Электронный ресурс] // Управление большими системами. Вып. 39. URL: http://ubs.mtas.ru/archive/ search_results_new.php?publication_id=18862 (дата обращения: 06.09.2016).

4. Кукарцев А. М., Лубкин И. А. Методика защиты программного кода от несанкционированной модификации и исследования посредством его хеширования [Электронный ресурс] // Вестник СибГАУ. 2008. Вып. 1. URL: http://cyberleninka.ru/ article/n/metodika-zaschity-programmnogo-koda-ot-nesanktsionirovannoy-modifikatsii-i-issledovaniya-posredstvom-ego-heshirovaniya (дата обращения: 22.03.2016).

5. Szor P., Ferrie P. Hunting for metamorphic [Электронный ресурс] // Symantec Security Response. 2003. URL: http://www.symantec.com/avcenter/reference/ hunting.for.metamorphic.pdf (дата обращения: 22.03.2016).

6. Microsoft Portable Executable and Common Object File Format Specification [Электронный ресурс] // MSDN, 2013. URL: https://msdn.microsoft.com/en-us/windows/hardware/gg463119.aspx (дата обращения: 23.03.2016).

References

1. Aaron Krauss. Programming Concepts: Compiled and Interpreted Languages. Available at: https:// thesocietea.org/2015/07/programming-concepts-compiled-and-interpreted-languages/ (accessed 06.09.2016).

2. TIOBE Index. Available at: http://www.tiobe.com/ tiobe-index/ (accesed 06.09.2016).

3. Tyugashev A. A., Il'in I. A., Ermakov I. E [Ways to improve quality and reliability of software in aerospace industry]. Upravlenie bol'shimi sistemami, 2012, no. 39, pр. 288-299. Available at: http://ubs.mtas.ru/archive/ search_results_new.php?publication_id= 18862 (accessed: 06.09.2016). (In Russ.)

4. Kukartsev A. M., Lubkin I. A. [Method of protection computer program's code against unauthorized modification and analysis using hashing] Vestnik SibGAU, 2008, no. 1. Available at: http://cyberleninka.ru/ article/n/metodika-zaschity-programmnogo-koda-ot-nesa-nktsionirovannoy-modifikatsii-i-issledovaniya-posredstv-om-ego-heshirovaniya (accessed: 22.03.2016). (In Russ.)

5. Peter Szor, Peter Ferrie. Hunting for metamorphic. Symantec Security Response. 2003 Available at: http://www.symantec.com/avcenter/reference/hunting.for. metamorphic.pdf (accessed: 22.03.2016).

6. Microsoft Portable Executable and Common Object File Format Specification. MSDN. Available at: https://msdn.microsoft.com/en-us/windows/hardware/ gg463119.aspx (accessed: 23.03.2016).

© Субботин Н. А., Лубкин И. А., 2016

i Надоели баннеры? Вы всегда можете отключить рекламу.