Защищает ли компиляция Java в нативный код исходный код?
Теперь я знаю, что...
Все может быть реконструировано, если у вас достаточно времени и ресурсов.
Однако, может ли компиляция вашего кода Java в нативный код с помощью такого инструмента, как GCJ, затруднить декомпиляцию? Я имею в виду, что за несколько минут я могу декомпилировать.jar с помощью JD-GUI, и это относительно точно. Большинство конвертеров "Java в EXE" являются просто.exe-пусковыми установками для JVM, и хотя у JVM есть много преимуществ, я был убежден, что безопасность исходного кода не является одним из них.
Итог: Можете ли вы использовать что-то вроде GCJ для компиляции ваших исходных файлов Java (или.class) в машинный код, и если это так, защитит ли это его от декомпиляции?
РЕДАКТИРОВАТЬ: В идеале, это было бы нечто большее, чем просто запутывание. Конкретный проект - это коммерческая игра, поэтому то, что мы ищем, - это способ усложнить начало поиска исходного кода, а не просто понять его. Кроме того, я не уверен, что Steam принимает.jars, и мы планируем представить его в новый проект Green Light.
3 ответа
Технически да. Использование чего-то подобного GCJ усложнит декомпиляцию, однако имейте в виду, что при этом вы потеряете некоторые основные преимущества использования Java. А именно, вы теряете возможность писать кроссплатформенные приложения.
Вы можете использовать обфускатор, чтобы сделать код сложнее декомпилировать И при этом сохранить преимущества использования Java.
Я бы не выбрал этот подход только для обеспечения безопасности источника.
Проверьте некоторые инструменты Obfuscator там, как ProGuard
Если вы хотите узнать, что эти инструменты делают с вашим исходным кодом, просто попробуйте прочитать декомпилированный файл Minecraft, если он у вас есть.
Недостатком использования этого является то, что если ваш код зависит от использования отражения, вам придется настраивать инструменты, чтобы игнорировать эти функции / классы / что угодно, так как в противном случае они не будут найдены во время выполнения.