Возможно ли, когда класс декомпилирован, отображать нежелательный код? Но при запуске того же класса он должен работать правильно? Я знаю, это может показаться странным, неужели это возможно? или ограничить декомпиляцию некоторых классов из JAR
java ограничивает декомпиляцию некоторых классов
Ответы (3)
Нет, это невозможно, однако вы можете obfuscate
код, чтобы он был менее читабельным. Обычно этого достаточно.
Классы, которые вы пытаетесь декомпилировать, могут быть запутанными.
Из вики:
Обфускация - это преднамеренный акт создания запутанного кода, то есть исходного или машинного кода, который трудно понять людям.
Программисты могут намеренно запутать код, чтобы скрыть его цель (безопасность через неясность) или его логику, чтобы предотвратить вмешательство, сдержать обратный инжиниринг или в качестве головоломки или развлекательной задачи для кого-то, читающего исходный код.
Подробнее читайте здесь: http://en.wikipedia.org/wiki/Obfuscation_(software)
Существуют инструменты для обфускации вашего кода, вот несколько из них:
http://www.yworks.com/en/products_yguard_about.htm
http://proguard.sourceforge.net/
В определенной степени это возможно. Не настоящие символы мусора, а код, который довольно сложно расшифровать. То, что вы ищете, называется «обфускатором байт-кода Java». Их очень много, как коммерческих, так и некоммерческих. В конце концов, если JVM может читать и правильно запускать ваш код, ее можно декомпилировать.
Обратите внимание, что обфускация байт-кода может помешать различным оптимизациям JVM.