ДонНТУ > Портал магистров ДонНТУ |
||
Заглавная страница |
Библиотека |
Ссылки |
Отчет о поиске |
Индивид. задание |
Противенский Денис Михайлович |
|
Исследование и разработка методов защиты программных продуктов и обфускации кода |
|
АВТОРЕФЕРАТ |
|
Введение |
|
Одним из самых действенных способов защиты программы от компьютерных нарушений (промышленного шпионажа, обратной инженерии и прочего) на сегодняшний день является процесс обфускации. Обфускация - выполнение запутывающих преобразований исходного кода программы с сохранением ее семантики с целью защиты от обратной инженерии. Задача обфускации заключается не в создании полной и/или долгосрочной защиты, а в обеспечении такого уровня сложности программы, чтобы ее анализ и исследование стали экономически невыгодными в сравнении с затратами на разработку аналогичной продукции "с нуля". |
|
Существует четыре основных класса запутывающих преобразований:
|
|
Рис. 1. Классификация запутывающих преобразований (5 кадров, размер 36,8 Кб). |
|
Под лексической обфускацией понимается удаление всех комментариев в коде программы или изменение их на дезинформирующие; удаление различных пробелов, отступов, которые обычно используют для лучшего визуального восприятия кода программы; замена имен идентификаторов (имен переменных, массивов, структур, хешей, функций, процедур и т.д.) на произвольные длинные наборы символов, которые трудно воспринимать человеку. |
|
Обфускация структур данных - изменение структуры данных, с которыми работает программа. В нее входят:
|
|
Обфускация графа потока управления изменяет граф потока управления одной функции или программы в целом. Она может приводить к созданию в программе новых функций. Это самый обширный класс запутывающих преобразований. Некоторые методы обфускации графа потока управления:
|
|
Превентивная обфускация - предназначена для предотвращения применения злоумышленником деобфускаторов, декомпиляторов и остальных программных средств деобфускации. |
|
Актуальность темы |
|
Запутывание исходного кода является относительно новым направлением в современной вычислительной технике. Оно появилось с развитием глобальной сети Интернет как защита от "компьютерного пиратства". Первые статьи об обфускации были опубликованы в 1996-1997 г.г. в США, где и поныне уровень развития этой области знаний является ведущим в мире. |
|
В странах СНГ и на Украине вопросам запутывания исходных кодов посвящено ограниченное число статей (в чем можно убедиться при просмотре приведенного ниже списка литературы). Возможно, такая ситуация связана с отсутствием достаточного числа серьезных фирм с мировыми именами, специализирующихся на разработке программного обеспечения. Ведь необходимость в создании средств защиты возникает тогда, когда есть то, что этой защите должно подлежать. |
|
Однако мне кажется, что развитие такой важной области информатики, как обфускация, должно осуществляться на Украине даже по той причине, что в основе запутывающих преобразований лежит обширная теоретическая база (пересекающаяся с теорией разработки компиляторов, дискретной математикой, теорией алгоритмов). Зная теоретические основы, всегда можно найти им применение, и если не в этой сфере, то в какой-либо смежной, что немаловажно. |
|
Цели и задачи |
|
Целью данной работы является разработка запутывающего метода, трансформирующего граф потока управления и/или граф потока данных программы. Этот метод должен быть оптимальнее в сравнении с известными методами данного класса обфускации по параметрам действенности и/или устойчивости. В связи со стремительным ростом вычислительных мощностей стоимостный параметр преобразования будет рассматриваться как наименее существенный в процессе разработки (однако, он все равно важен как один из критериев оценки пригодности использования разрабатываемого метода). Для реализации поставленной цели решаются следующие задачи:
|
|
Предполагаемая научная новизна |
|
Научная новизна проекта заключается в создании нового метода, с помощью которого можно будет еще более разнообразить и усложнять процесс обфускации программных продуктов. |
|
Экспериментальные исследования |
|
Разработанный метод должен быть реализован на языке программирования C++ и опробован на тестовых исходных файлах программ. Полученные результаты работы будут подвергнуты анализу с целью получения эмпирических значений основных показателей эффективности данного метода. |
|
Планируется проведение ряда тестов с целью выявления возможности успешного взаимодействия разработанного метода с известными методами, используемыми в коммерческих обфускаторах (при наличии такого обфускатора). При неуспешности взаимодействия - анализ причин подобного поведения, указание рекомендаций по их устранению. |
|
Обзор результатов и выводы |
|
На данном этапе изучены и систематизированы основные теоретические сведения о методах обфускации, исследованы области разработки новых методов. |
|
Рассмотрены вопросы запутывания для процедурных и объектно-ориентированных языков программирования (типа C/C++, Java), причем подобных методов наибольшее количество и они связаны с заменой стандартных конструкций языка эквивалентными, но более сложными для понимания и разбора. |
|
Изучены методы запутывания данных в программах (массивов, классов, абстрактных типов данных). |
|
Также уделено внимание работам по созданию алгоритмов запутывания для языков программирования низкого уровня (типа Assembler и других). |
|
Проведенные исследования создали необходимую теоретическую базу для качественного выполнения магистерской работы. |
|
Список литературы
|
Заглавная страница |
Библиотека |
Ссылки |
Отчет о поиске |
Индивид. задание |
ДонНТУ > Портал магистров ДонНТУ |