Проще говоря, вы не можете предотвратить обратный инжиниринг своего кода.
- Вы уже сами заметили, какие преимущества в запутывании ( ничего особенного, действительно )
- Разделение / объединение классов ( целенаправленное смешивание и сопоставление различных классов, чтобы нарушить логическую структуру кода ) также не будет таким полезным, особенно когда вам нужно отладить чудовищность.
- Вы также не можете по-настоящему зашифровать / замаскировать байт-код, потому что после того, как байт-код достиг вашего пользовательского ClassLoader, он уже вернулся в полностью читаемый формат. Больше информации здесь .
Даже если вы получите защищенный код, его можно отслеживать.Может быть, на уровне байт-кода, может быть на уровне ASM, это не имеет значения - важно то, что когда кто-то может отслеживать выполняемый код, он также может быть подвергнут обратному проектированию.Некоторые методы занимают больше времени, чем другие, но не бывает случаев, когда это было бы невозможно.
Перестаньте думать в терминах безопасность через неизвестность и вместо этого начните анализировать реальную безопасность и т. Д.Проблемы, которые у вас есть, и исправьте их соответствующим образом.Предотвращение обратного инжиниринга - даже если это не будет бесполезным упражнением - не сможет волшебным образом решить проблемы вашего программного обеспечения.