На этой неделе друг со старой работы написал про свой способ защиты java проектов.
Около полугода назад я писал про то, как прятать строки в properties-файлах с помощью jasypt (EncryptableProperties и защита от дурака).
На самом деле, все понимают, что это всего-лишь защита от самого простого случая. Например, чтобы любопытный админ заглянув в файлик, не увидел там то, что не должен знать.
Тем не менее, если есть доступ к классам, то можно jad-ом отдекомпилировать исходники и получить доступ к "запретной" информации (например оригинальный пароль, которым шифруются properties разработчиком-оптимистом).

Для более серьезной защиты используют обфускаторы. Он усложняет работу по реверсу, но по большому счету распутывание логики это вопрос времени.

Так вот, российскими программистами сделан специальный продукт для защиты java-проектов.
Ключевое в нем - AES-шифровка строк. Кроме этого он делает динамические инъекции и использует специальные механизмы, которые мешают поломать приложение через рефлекшн.
Данное решение является коммерческим продуктом.

Подробнее здесь.