Если весь байт-код, который скомпилирован из источников java, может быть декомпилирован в источники java?
Я вижу, что некоторые декомпиляторы java могут декомпилировать байт-код в читаемые источники java, мне интересно, можно ли снова декомпилировать весь байт-код, который поступает из java (а не из другого языка JVM)?
обновление
извините, позвольте мне сделать вопрос более ясным.
просто поговорите о нормальном Java-коде на JVM (нет Android, нет байт-кода, нет AOP, нет обфускации), и я действительно надеюсь, что байт-код может быть декомпилирован. но я не знаю, есть ли формы java-кода, которые скомпилированы в байт-код, никогда не смогут быть декомпилированы в читаемые источники java.
4 ответов
интересно, можно ли снова декомпилировать весь байт-код, который поступает из java (а не из другого языка JVM), в источники java?
ответа нет.
декомпиляторы не гарантированно работают для всех байт-кодов Java:
типичный обфускатор намеренно переставит байт-коды таким образом, что общие декомпиляторы не будут производить читабельный исходный код ... и вероятно не произведет действительный исходный код.
многие декомпиляторы там имеют проблемы, связанные с более новыми конструкциями Java.
многие декомпиляторы имеют проблемы с байт-кодами, скомпилированными из "сложного" исходного кода.
даже если они генерируют компилируемый код,гарантия что код будет правильно.
суть в том, что декомпилятор только так хорош как ум и трудолюбие его автора могут это сделать. Я никогда не слышал об идеальном.
Java byctecode можно декомпилировать обратно в исходный код java. Декомпилированный источник, как правило, не будет выглядеть точно так же, но будет иметь ту же функциональность. Если вы обеспокоены тем, что кто-то может декомпилировать ваш источник, вы можете использовать обфускаторы (например,ProGuard), чтобы помочь.
Да, это (в общем) возможно (для этого существует несколько инструментов). См.: Как "декомпилировать" файлы классов Java?
однако вы можете попытаться защитить свои файлы от этого, см.:как заблокировать скомпилированные классы Java, чтобы предотвратить декомпиляцию?
У меня была возможность декомпилировать несколько кодов java и всегда управлять с помощью доступных инструментов, чтобы думать, что байтовый код генерируется компилятором, этот процесс нужно только отменить, чтобы получить исходный код. Я знаю способ избежать этого.
Я использовал этот инструмент.
java.decompiler.free.fr