Прикрепление источника для некоторых классов в банке - PullRequest
0 голосов
/ 05 января 2011

Для нашего проекта мы делаем вид реверс-инжиниринга.Для этого мы должны отладить сторонний jar.

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

Теперь из этого испорченного исходного кода осталось несколько файлов .java, которые я хочу отладить.И я хочу прикрепить эти несколько файлов исходного кода с соответствующими классами в jar.

Я гуглил по этому поводу, но не нашел ничего полезного.????

Ответы [ 3 ]

2 голосов
/ 05 января 2011

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

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

Это не невозможно, но требует некоторой «ручной» работы.

0 голосов
/ 26 сентября 2012

Чтобы прикрепить исходный код для класса в коде Java:

  • Щелкните правой кнопкой мыши нужный класс

  • Перейти к открытой декларации [F3]
    Откроется редактор файлов классов, нажмите кнопку «Присоединить источник»

  • Обзор банки с исходным кодом

  • Нажмите
    После выполнения вышеприведенного шага, Открытое объявление откроет файл .class с исходным кодом.

0 голосов
/ 05 января 2011

Вы не упомянули, какую IDE вы используете для отладки. Eclipse запрашивает источники, пытаясь отладить классы, которые доступны только в форме классов. Основная проблема в том, что Andreas_D уже упомянул несовпадающие номера строк.

Я бы попробовал следующее.

  1. Удалить все декомпилированные файлы java, не имеющие был декомпилирован в рабочем состоянии.
  2. Попробуйте скомпилировать каждый рабочий декомпилированный файл Java с использованием оригинальный JAR в classpath. это позволяет генерировать новый класс файлы с правильной строкой информации для отладки.
  3. Теперь замените файлы классов в JAR-файл с теми, что у вас есть успешно перекомпилирован. Добавить также Java-файлы. Ваша отладочная IDE должен автоматически распознать тогда исходные файлы.
...