Java Decompiler

Можете ли вы порекомендовать декомпилятор Java для Eclipse? Мои другие вопросы - какие ограничения существуют для использования декомпилированного кода из другой программы Java? Незаконно или что? Я не знаю много о лицензиях. Спасибо за чтение.

Ответ 1

Я бы предложил тот, который появляется в google, который является JD декомпилятором Java. Он работает очень хорошо.

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

Ответ 2

Мне нравится JadClipse - но он показывает свой возраст в местах. Вам понадобится:

  • двоичный код jad
  • Установлен jadClipse
  • укажите предпочтения Eclipse на вышеупомянутый двоичный код jad
  • сообщите ему, чтобы вывести номера строк и выровнять для отладки

Есть несколько недостатков:

  • код создается последовательно, если код байта был переупорядочен, поэтому что-то приходит в конце байтового кода, но в начале исходного исходного кода jad не перематывает, чтобы поместить дизассемблированный код в нужную строку.
  • jad не очень хорошо разбирается в байт-коде Java 5 + 6.

Ответ 3

Я пробовал несколько декомпиляторов, и большинство из них не смогли создать правильный источник для апплета, который я пытался декомпилировать (что было http://mrl.nyu.edu/~perlin/experiments/emotive-actors/, если кто-то хочет воспроизвести).

Тот, который работал абсолютно безупречно, был Cavaj 1.11, код, созданный им, не содержит синтаксических ошибок и апплет, скомпилированный из исходных строк идентично оригиналу. То, что мне не хватало на стороне пользовательского интерфейса, было: Ctrl-A/Ctrl-C сочетания клавиш не работают, и нет пакетного преобразования.

Другие декомпиляторы, которые я пробовал, были:

  • JD Java decompiler (freeware) выглядит неплохо, но он совершил много ошибок с объявлениями переменных (некоторые декларации отсутствовали, другие были размещены плохо)
  • Neshkov DJ Java Decompiler (shareware) также выглядит красиво, код, созданный им, содержал меньше синтаксических ошибок, чем JD, но код не был за работой. Учитывая, что продукт не является бесплатным, можно было бы ожидать от него немного больше.

Ответ 4

Я использовал этот плагин eclipse: JadClipse

и этот декомпилятор java: JAD

Ответ 5

JD - лучший декомпилятор Java, который я знаю.

Ответ 6

Я не могу ответить на ваш первый вопрос: это было бы предвзято, возможно...

О вашем втором вопросе, декомпиляция является ПРАВОВОЙ. Этот момент очень важен для меня. Взгляните на эту интересную страницу: http://www.program-transformation.org/Transform/LegalityOfDecompilation

Ответ 7

Я нашел JD, чтобы быть очень хорошим. Хотя, я столкнулся с одним или двумя незначительными ошибками, которые привели к неожиданному поведению во время выполнения.

Например, у меня был пример, в котором исходный оператор case не имел "break" в последнем node (потому что, естественно, это не нужно), но поскольку JD в конечном итоге переупорядочивал узлы, это означало Случай с дефолтом был вызван неожиданно. У меня также была проблема с наборами символов, где мне потребовались дополнительные вызовы toString() в конце концов, чтобы он вышел из системы, как ожидалось. Кроме того, это было здорово!

Я использовал еще один декомпилятор DJ, чтобы помочь мне разобраться, что случилось с кодом, декомпилированным JD. Но были и другие вещи, с которыми DJ не мог справиться, поэтому я думаю, что смесь обоих декомпиляторов работала для меня:)

Мы надеемся, что г-н Дюпуй прочитает это!