Защита: изменение структуры данных
Самый продвинутый способ защиты, позволяющий полностью изменить первоначальную структуру байт-кода. Шифрованный код усложняется настолько, что воссоздание исходного кода становится практически невозможным. Алгоритмов и методов этой защиты существует довольно много. Вот только некоторые из реализуемых подходов:
- усложняется наследование при помощи создания дополнительных классов (увеличивающих дерево наследования) или использования ложного дробления классов;
- массивы реструктуризируются увеличением или сокращением их размерности (путем их объединения или дробления);
- методы клонируются, а в полученные клоны одного и того же метода вносятся различные запутывающие изменения;
- переменные разделяются на две и более самостоятельные переменные;
- и т.п.
Возможные проблемы
Вроде бы все очевидно – можно выбрать самый навороченный обфускатор, выставить все настройки на максимум и обрабатываешь свое приложение. В реальности же не все так гладко, как в теории. Чем сложнее алгоритм защиты, тем больше вероятность того, что на выходе получится неработоспособное приложение.
EncryptHTML Pro – программа, позволяющая шифровать html страницы. Очень полезна, т.к. html легко просматривается даже в блокноте, и из него можно украсть куски кода для своего использования. Поставим целью усложнить анализ исходного кода тестовой страницы, при том чтобы она смогла корректно отображаться в браузере.
Запускаем Setup.exe. Нажимаем Next.
Выставляем переключатель на "I Accept to agreement", Next.
Next.
Next.
Next.
Install.
Next.
Finish. После этого запуститься программа, и необходимо будет зарегестрироваться. Запускаем keygen.exe из папки keygen и нажимаем Generate. Полученный результат необходимо будет ввести в форму регистрации программы.
Register now
User Name – MAI, Reg Key - NPKtqvAj6P0Iwd030PtWUr5jzTGJ
Работать с программой просто, т.ч. для примера зашифруем страницу Буша так, чтобы ее никто никогда не открыл.
Next
Add file и добавляем файл Welcome to the White House - WWW.WHITEHOUSE.ORG.htm из папки whitehouse.
Главное окно программы при этом будет выглядеть так:
Выставляем опции шифровании: Encrypt entire page – шифровать всю страницу целиком, Next.
Дополнительные настройки: запретить меню правой кнопки мыши, запретить перетаскивание и т.д. -> Next.
Еще дополнительные настройки, но относящиеся к браузеру: запретить кеширование страницы и т.д Next
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. Он позволяет обнаруживать отладку программы, устанавливать привязку к железу, устанавливать триальные сроки программы и т.д.
Установка:
Запускаем armadillo32.exe.
Next.
Next.
Next.
Finish.
Программа установится в c:\Program Files\ SoftwarePassport
Скопировать из папки cracked файл Armadillo.V4.54.Public.Build.CracKed.eXe в папку с программой и запустить его.