УДК 004.056.55

Приложение А. Статья на тему:

«АНАЛИЗ МЕТОДОВ ЗАЩИТЫ ПРОГРАММНЫХ КОДОВ С ПОМОЩЬЮ ОБФУСКАЦИИ»

Носов А.С., Губенко Н.Е.

Донецкий национальный технический университет, Украина

 

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

 

1.Актуальность проблемы

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

 

2. Уровни процесса обфускации

Программный код может быть представлен в двоичном виде (машинный код) или исходном виде (текст программы).

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

- низший уровень, когда процесс обфускации осуществляется над ассемблерным кодом программы, или даже непосредственно над двоичным файлом программы хранящим машинный код;

- высший уровень, когда процесс обфускации осуществляется над исходным кодом программы написанном на языке высокого уровня.

 

3. Основные методы обфускации

 

К основным методам обфускации относят следующие:

 

3.1. Лексическая обфускация

Обфускация такого вида включает в себя:

- удаление всех комментариев в коде программы, или изменение их на дезинформирующие;

- удаление различных пробелов, отступов которые обычно используют для лучшего визуального восприятия кода программы;

- замену имен идентификаторов (имен переменных, массивов, структур, хешей, функций, процедур и т.д.), на произвольные длинные наборы символов, которые трудно воспринимать человеку;

- добавление различных лишних (мусорных) операций;

- изменение расположения блоков (функций, процедур) программы, таким образом, чтобы это не коим образом не повлияло на ее работоспособность.

 

3.2. Обфускация данных

Обфускация такого вида включает в себя:

- обфускация хранения - трансформации хранилищ данных, а также самих типов данных;

- обфускация соединения- усложнение представления используемых программой структур данных;

- обфускация переупорядочивания - изменение последовательности объявления переменных, внутреннего расположения хранилищ данных, переупорядочивание методов, массивов.

 

3.3 Обфускация управления

Обфускация такого вида осуществляет запутывание потока управления, то есть последовательности выполнения программного кода.

- обфускация вычислительная.-изменение касающиеся главной структуры потока управления;

- обфускация соединения - объединение или разделение определенных фрагментов кода программы, для того чтобы убрать логические связи между ними;

- обфускация последовательности - переупорядочивание блоков (инструкций переходов), циклов, выражений.

3.4 Превентивная обфускация

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

 

4. Процесс деобфускации

Приведём простой образец классификации методов процесса деобфускации:

- нахождение и оценка непрозрачных конструкций (предикатов), статический анализ, которых очень сложен;

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

- выделение в программе фрагментов кода, которые никоим образом не связанны с основными задачами;

- статистический анализ, заключается в динамическом анализе кода программы;

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

 

Выводы

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

 

Литература

1. Определение, основные цели и недостатки обфускации / Интернет ресурс. – Режим доступа: http://ru.wikipedia.org/wiki/Обфускация

2. Анализ запутывающих преобразований / Интернет ресурс. – Режим доступа: http://citforum.ru/security/articles/obfus/

3. Особенности низкоуровневой обфускации / Интернет ресурс. – Режим доступа: http://www.xakep.ru/magazine/xs/066/008/1.asp