Обычно, для защиты Java-программ используются обфускаторы. Обфускаторы позволяют переименовать классы, методы, переменные, изменить поток управления (control flow) байт-кода. Эти функции умеют делать все обфускаторы включая бесплатные и платные. Одним из основных отличий платного от бесплатного обфускатора - является наличие функции шифрования строк.
К сожалению, разработчики программного обеспечения не всегда придают значение этому важному аспекту обфускации и делают выводы о необходимости шифрования строк, лишь столкнувшись с различными инцидентами, связанными с реверс-инжинирингом, кражей и подменой информации из, казалось бы, защищенной программы.
К счастью, Stringer Java Obfuscator является недорогой и превосходящей по возможностям альтернативой платным обфускаторам, предоставляющим подобный функционал и предназначен для решения следующих задач:
- Шифрование строк
- Шифрование реализовано на базе алгоритма AES с динамическими ключами шифрования для каждого защищаемого Java-пакета
- Логика функций дешифрования динамически встраивается в уже имеющиеся class-файлы:
Фрагмент декомпилированного class-файла до встраивания защиты:
public class App
{
public static void main(String args[])
{
System.out.println("Hello World!");
}
}
Фрагмент декомпилированного class-файла после встраивания защиты:
public class App
{
public static void main(String args[])
{
System.out.println(main("\u916E\u2E67\uCB8D\u16B9\u479D\u7669\u3F20\uD7DC\u75C5\u30F1\uEC7E\uA26B\uEEB0\u2F0E\u4828\u19C6"));
}
....
}
- Защита API, внутренней логики Java-приложения от использования их злоумышленником
- Реализована защита контекста вызова функций дешифрования
- Возможность организации "песочницы" (sandbox) для защиты приложения от воздействия стороннего кода: защита от использования reflection, защита private-полей классов и методов, защита final-полей классов от модификации. (Доступно только в Stringer Java Obfuscator Enterprise Edition)
Ни один из имеющихся на рынке продуктов на данный момент не позволяет выполнять две эти функции одновременно.