ЗАЩИТА JAVA-АППЛЕТОВ

Андрей Каролик

Xakep, номер #053, стр. 053-066-3


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

- и т.п.

НЕКОТОРЫЕ ТРАБЛЫ

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

ГДЕ СКАЧАТЬ ОБФУСКАТОРЫ?

В инете можно найти около двух десятков обфускаторов, но далеко не все они бесплатные. Ниже привожу адреса различных обфускаторов: как бесплатных, так и коммерческих. Поползай по всем, так как некоторые коммерческие проекты частенько выкладывают на своих сайтах демонстрашки (триалки) или бета-версии, которые полностью профпригодны.

Zelix KlassMaster - http://www.zelix.com/klassmaster/download1.html

JavaGuard - http://sourceforge.net/projects/javaguard

ProGuard - http://proguard.sourceforge.net

RetroGuard - http://www.retrologic.com/retroguard-download.html

JCloak - http://www.force5.com/download.html

DashO - http://www.preemptive.com/tools

JProof 1stBarrier - http://www.jproof.com/products.html

JZipper - http://www.vegatech.net/jzipper

Cloakware - http://www.cloakware.com

И для комплектности несколько ссылок на хорошие декомпиляторы:

DCompiler - http://sourceforge.net/projects/dcompiler

JAD - http://kpdus.tripod.com/jad.html

NMI's Java Code Viewer - http://www.javacodeviewer.tk

Mocha - http://www.brouhaha.com/~eric/computers/mocha.html

SourceTech - http://www.srctec.com

SourceAgain - http://www.ahpah.com

В ДЕЙСТВИИ

Хватит болтовни, показываю на реальном примере. В качестве подопытной крысы берем произвольный апплет из инета - http://javaboutique.internet.com/Fade. Он показывает в цикле тающие надписи, кликнув по которым, можно перейти по соответствующим ссылкам. Сам исходник здесь не привожу, так как он весит около 9 кило, утаскивай его с http://javaboutique.internet.com/Fade/Fade.java. При беглом изучении видно, что он содержит два класса (Thoughts и Fade), кучу методов, массивы, циклы, условные переходы и т.д. Одним словом, полный набор для эксперимента.

ОБФУСКАТОР И ДЕКОМПИЛЯТОР

Помучив несколько обфускаторов, я остановился на Zelix KlassMaster 4.0 (http://www.zelix.com/cgi-bin/download.pl). Помимо симпатичного и удобного интерфейса в этой программе реализованы все три рассмотренные защиты. Кроме того, есть незаменимый пошаговый помощник и подробная документация (на английском). Очень удобно, что исходный и полученный код можно просматривать непосредственно в Zelix KlassMaster. Одна беда - проект коммерческий и скачать ты можешь только демо-версию, в которой есть некоторые ограничения: обработать одновременно можно не более 5 классов, а изменение потока управления делается не более чем для двух методов в каждом классе. Но игра стоит свеч. Несмотря на ограничения, возможностей тебе хватит с лихвой. А в качестве декомпилятора я использовал NMI's Java Code Viewer v5.0, подробно описанный в статье "Взлом апплетов".

Назад на стр. 053-066-2  Содержание  Вперед на стр. 053-066-4