Какие-нибудь инструменты для сравнения декомпилированных классов с исходным кодом? - PullRequest
2 голосов
/ 18 марта 2011

Ради аргументов, у вас есть несколько скомпилированных .class файлов и несколько исходных .java файлов.

Вы не уверены, что файлы классов были фактически созданы из той же ревизии тех исходных файлов, которые у вас есть (например, кто-то еще создал эти классы, но не проверял исходный код).

Я знаю, о чем ты думаешь, кошмар разработчиков. Тем не менее, существуют ли какие-либо инструменты, которые могут помочь в декомпиляции файлов классов, сравнении их с исходными файлами и выявлении каких-либо различий, таких как отсутствующие методы и т. Д.?

Я сделал это вручную, декомпилировал класс и сравнил каждую строку с исходным кодом, в бизнес-логике были значительные различия. У меня есть несколько сотен файлов, для которых есть какие-либо инструменты?

Ответы [ 5 ]

3 голосов
/ 18 марта 2011

Я бы скомпилировал .java файлы, которые у вас есть.Затем декомпилируйте эти .class файлы и оригинальные .class файлы, которые у вас есть.Сценарий должен быть в состоянии получить вас так далеко.Затем вы можете сравнить полученные .java файлы с помощью инструмента, подобного Meld , BeyondCompare или просто diff -ur в командной строке.Запуск их через один и тот же декомпилятор должен, по крайней мере, дать вам лучшую общность, чтобы в ваших разностях было меньше шума.Удачи с этим, хотя, это не звучит весело, как бы вы ни нарезали его.

2 голосов
/ 18 марта 2011

Хм, если у вас есть исходный код и вы хотите проверить, собраны ли двоичные файлы из имеющегося у вас исходного кода, почему бы вам просто не скомпилировать исходный код, который у вас есть, и посмотреть, совпадает ли результат с имеющимися у вас двоичными файлами?

0 голосов
/ 09 марта 2016

Существует множество инструментов сравнения, которые эффективно находят разницу между двумя файлами, поэтому я хотел бы предложить вам использовать BeyondComapare. Вы можете посетить http://www.scootersoftware.com/, Поскольку я Java-разработчик, я использую уже много лет.

0 голосов
/ 27 июля 2013

(Хотя это старый поток, я все же хотел бы упомянуть некоторые инструменты, которые остались без упоминания)

Grigsoft предлагает 2 удобных инструмента для сравнения исходного кода.http://www.grigsoft.com/index.htm

  • Сравните!для сравнения исходного кода 2 файлов.Это выделит изменения
  • Синхронизируйте это!для сравнения исходного кода 2 деревьев каталогов.

Кроме того, IntelliJ IDE имеет несколько встроенных инструментов.Вы можете выбрать 2 файла в дереве, щелкнуть правой кнопкой мыши и затем выбрать «Сравнить два файла».

0 голосов
/ 08 мая 2013

Вы можете напрямую сравнивать файлы .class и декомпилировать / просматривать их в формате .java, если вы использовали приложение вне всякого сравнения

и добавлять в него дополнительные форматы файлов (http://www.scootersoftware.com/download.php?zz=kb_moreformats_win)

, следуя этим шагам (http://www.scootersoftware.com/download.php?zz=kb_moreformats)

, затем используйте приложение обычным способом для сравнения папок / фляг, содержащих файлы .class

...