Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПЗ1 Обфускация.doc
Скачиваний:
3
Добавлен:
21.09.2019
Размер:
699.9 Кб
Скачать

Защита: изменение структуры данных

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

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

- массивы реструктуризируются увеличением или сокращением их размерности (путем их объединения или дробления);

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

- переменные разделяются на две и более самостоятельные переменные;

- и т.п.

Возможные проблемы

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

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

  1. Запускаем Setup.exe. Нажимаем Next.

  2. Выставляем переключатель на "I Accept to agreement", Next.

  3. Next.

  4. Next.

  5. Next.

  6. Install.

  7. Next.

  8. Finish. После этого запуститься программа, и необходимо будет зарегестрироваться. Запускаем keygen.exe из папки keygen и нажимаем Generate. Полученный результат необходимо будет ввести в форму регистрации программы.

  9. Register now

  10. User Name – MAI, Reg Key - NPKtqvAj6P0Iwd030PtWUr5jzTGJ

Работать с программой просто, т.ч. для примера зашифруем страницу Буша так, чтобы ее никто никогда не открыл.

  1. Next

  2. Add file и добавляем файл Welcome to the White House - WWW.WHITEHOUSE.ORG.htm из папки whitehouse.

Главное окно программы при этом будет выглядеть так:

  1. Выставляем опции шифровании: Encrypt entire page – шифровать всю страницу целиком, Next.

  2. Дополнительные настройки: запретить меню правой кнопки мыши, запретить перетаскивание и т.д. -> Next.

  3. Еще дополнительные настройки, но относящиеся к браузеру: запретить кеширование страницы и т.д Next

  4. Exit

Появятся 2 файла. .html и .PreEnc. Первый – это уже измененная страница, которую можно открыть в браузере. Второй – сохнаренная копия оригинала. Сравним их содержимое

Файл до его обфускации:

<!doctype html public "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<html>

<head>

<title>Welcome to the White House - WWW.WHITEHOUSE.ORG</title>

<!doctype html public "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

Файл после обфускации:

<html>

<head><META HTTP-EQUIV="ImageToolbar" CONTENT="No"><META NAME="MSSmartTagsPreventParsing" CONTENT="True"><META HTTP-EQUIV="Expires" CONTENT="0"><META HTTP-EQUIV="Pragma" CONTENT="No-Cache"><META HTTP-EQUIV="Cache-Control" CONTENT="No-Cache,Must-Revalidate,No-Store"><SCRIPT LANGUAGE="JavaScript">eval(unescape("%66%

Выводы:

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

Но разберем более сложные случай – обфускацию реально программы.

Сейчас самыми распространенными языками являются Delphi и C++. Но исходники программ никто не распространяет, распространяются лишь уже переведенные в двоичный код программы. Однако существует возможность из декомпилировать (хоть и с потерей данных). Поэтому для усложнения скомпилированных программ так же имеются обфускаторы.

Одним из самых удачных является Armadillo. Он позволяет обнаруживать отладку программы, устанавливать привязку к железу, устанавливать триальные сроки программы и т.д.

Установка:

  1. Запускаем armadillo32.exe.

  2. Next.

  3. Next.

  4. Next.

  5. Finish.

Программа установится в c:\Program Files\ SoftwarePassport

  1. Скопировать из папки cracked файл Armadillo.V4.54.Public.Build.CracKed.eXe в папку с программой и запустить его.