Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

Подписываем
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Предоплата всего
Подписываем
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ УКРАИНЫ
ДОНЕЦКИЙ НАЦИОНАЛЬНЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
КАФЕДРА ПРИКЛАДНОЙ МАТЕМАТИКИ И ИНФОРМАТИКИ
ЛАБОРАТОРНАЯ РАБОТА №3
по дисциплине: “Безопасность программ и данных”
на тему: “абфускация програмного кода”
Выполнил:
студент гр.ПСД-11оз
Королев. Е.В.
Донецк 2013
Цель работы: Изучение возможностей существующих обфускаторов
для защиты программных продуктов.
Обфускация (от лат. obfuscare затенять, затемнять; и англ. obfuscate
делать неочевидным, запутанным, сбивать с толку) или запутывание кода
приведение исходного текста или исполняемого кода программы к виду,
сохраняющему ее функциональность, но затрудняющему анализ, понимание
алгоритмов работы и модификацию при декомпиляции.
Существует несколько онлайн-обфускаторов для javascript:
http://discogscounter.getfreehosting.co.uk/js-noalnum_com.php
http://utf-8.jp/public/aaencode.html
http://utf-8.jp/public/jjencode.html
http://www.freedomscripts.org/js-invis.html
Php онлайн-обфускаторы:
http://wb0.ru/phpobf.php
Код:
<? phpinfo();
Результат:
<? $GLOBALS['_863673181_']=Array(base64_decode('cGhwaW5m' .'b' .'w==')); ?><? function _750194230($i){$a=Array();return base64_decode($a[$i]);} ?><? $GLOBALS['_863673181_'][0]();
Виды абфускации:
Лексическая обфускация
Наиболее простая, заключается в форматировании кода программы, изменении его структуры, таким образом, чтобы он стал нечитабельным, менее информативным, и трудным для изучения.
Обфускация данных
Такая обфускация связана с трансформацией структур данных. Она считается более сложной, и является наиболее продвинутой и часто используемой. Ее принято делить на три основные группы, которые описаны ниже.
Обфускация хранения. Заключается в трансформации хранилищ данных, а также самих типов данных (например, создание и использование необычных типов данных, изменение представления существующих и т.д.). Ниже приведены основные методы, позволяющие осуществить такую обфускацию:
Обфускация соединения. Один из важных этапов, в процессе реверсивной инженерии программ, основан на изучении структур данных. Поэтому важно постараться, в процессе обфускации, усложнить представление используемых программой структур данных. Например, при использовании обфускации соединения это достигается благодаря соединению независимых данных, или разделению зависимых.
Обфускация переупорядочивания. Заключается в изменении последовательности объявления переменных, внутреннего расположения хранилищ данных, а также переупорядочивании методов, массивов (использование нетривиального представления многомерных массивов), определенных полей в структурах и т.д.
Обфускация управления
Обфускация такого вида осуществляет запутывание потока управления, то есть последовательности выполнения программного кода.
Большинство ее реализаций основывается на использовании непрозрачных предикат, в качестве, которых выступают, последовательности операций, результат работы которых сложно определить (само понятие "предикат" выражает свойство одного объекта (аргумента), или отношения между несколькими объектами).
Обфускация вычислительная. Изменение касающиеся главной структуры
Обфускация соединения. Объединение или разделение определенных фрагментов кода программы, для того чтобы убрать логические связи между ними
Обфускация последовательности. Заключается в переупорядочивании блоков (инструкций переходов), циклов, выражений.