Зашифрованные файлы классов с расшифровкой, обработанной собственной библиотекой - PullRequest
0 голосов
/ 17 сентября 2010

В статье «Взлом шифрования байт-кода Java» ( javaworld.com / javaworld / javaqa / 2003-05 / 01-qa-0509-jcrypt.html ) объясняется, почему шифрование файлов классов с использованием пользовательскихзагрузчик классов не имеет смысла, потому что в какой-то момент вам всегда нужно вызывать defineClass (), который передает файл класса в JVM в виде незашифрованного байтового массива.

Однако я видел решения, где немного другой подходиспользуемый;класс расшифровывается собственной библиотекой и передается JVM как экземпляр java.lang.Class через метод findClass () - defineClass () никогда не вызывается.

Означает ли это, что эти решениянет этой слабости?Конечно, вы всегда можете извлечь файлы классов, работая с отладчиком на уровне ассемблера, и решительный хакер может сломать любую защиту.Но по крайней мере это делает декомпиляцию немного более сложной, чем просто установка заплатки defineClass () для выгрузки незашифрованных файлов .class на диск.Или я что-то пропускаю?

Ответы [ 2 ]

1 голос
/ 17 сентября 2010

Но по крайней мере это делает декомпиляцию немного более сложной, чем просто установка заплатки defineClass () для выгрузки незашифрованных файлов .class на диск.

Только немного. Недостаточно, чтобы многое изменить.

Или я что-то упускаю?

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

0 голосов
/ 17 сентября 2010

Если вам требуется присутствие встроенной библиотеки, вы отказываетесь от независимости платформы. В этот момент вы можете исследовать gcj и скомпилировать прямо в исполняемый файл.

...