java ограничивает декомпиляцию некоторых классов

Возможно ли, когда класс декомпилирован, отображать нежелательный код? Но при запуске того же класса он должен работать правильно? Я знаю, это может показаться странным, неужели это возможно? или ограничить декомпиляцию некоторых классов из JAR


person hanmayya    schedule 13.06.2013    source источник


Ответы (3)


Нет, это невозможно, однако вы можете obfuscate код, чтобы он был менее читабельным. Обычно этого достаточно.

person Michal Borek    schedule 13.06.2013

Классы, которые вы пытаетесь декомпилировать, могут быть запутанными.

Из вики:

Обфускация - это преднамеренный акт создания запутанного кода, то есть исходного или машинного кода, который трудно понять людям.

Программисты могут намеренно запутать код, чтобы скрыть его цель (безопасность через неясность) или его логику, чтобы предотвратить вмешательство, сдержать обратный инжиниринг или в качестве головоломки или развлекательной задачи для кого-то, читающего исходный код.

Подробнее читайте здесь: http://en.wikipedia.org/wiki/Obfuscation_(software)

Существуют инструменты для обфускации вашего кода, вот несколько из них:

http://www.yworks.com/en/products_yguard_about.htm

http://proguard.sourceforge.net/

person Juned Ahsan    schedule 13.06.2013
comment
Если вы цитируете что-то, было бы неплохо, если бы вы также могли добавить ссылку на источник. Иначе можно подумать, что это ваши собственные слова. В этом случае вы цитируете википедию, поэтому добавьте ссылку, пожалуйста. - person maba; 13.06.2013
comment
@maba я процитировал это, чтобы создать впечатление, что это откуда-то взято. В любом случае я принимаю ваше предложение и соответствующим образом отредактировал сообщение. Спасибо! - person Juned Ahsan; 13.06.2013

В определенной степени это возможно. Не настоящие символы мусора, а код, который довольно сложно расшифровать. То, что вы ищете, называется «обфускатором байт-кода Java». Их очень много, как коммерческих, так и некоммерческих. В конце концов, если JVM может читать и правильно запускать ваш код, ее можно декомпилировать.

Обратите внимание, что обфускация байт-кода может помешать различным оптимизациям JVM.

person T.J. Crowder    schedule 13.06.2013
comment
Ох, он хочет знать о запутывании кода ... Не понял. - person AlvinArulselvan; 13.06.2013
comment
@AlvinArulselvan: Но байт-код не исходник. - person T.J. Crowder; 13.06.2013
comment
owasp.org/index.php/Bytecode_obfuscation - хороший ресурс для чтения. - person AlvinArulselvan; 13.06.2013
comment
Спасибо за подробности. Я хотел бы запутать только один пакет и все его зависимые классы и файлы ресурсов, отличных от Java. Может ли кто-нибудь сообщить мне, возможно ли это с помощью proguard. если да, то как мы можем этого добиться? - person hanmayya; 17.06.2013