2011-01-05 2 views
0

Для нашего проекта мы делаем вид обратной инженерии. Для этого мы должны отлаживать стороннюю банку.Прикрепление источника для некоторых классов в банке

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

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

Я искал это для поиска, но не нашел ничего полезного. ????

+1

Если вы работаете с банкой, то прилагаемый исходный код не нужно компилировать. Является ли jar скомпилирована с отладочной информацией, если это номера ваших строк должны совпадать, иначе вы не сможете отлаживать классы. –

+0

Manifest.MF говорит: - Manifest-Version: 1.0 Ant-Version: Apache Ant 1.5.4 Создано: 1.4.2_05-b04 (Sun Microsystems Inc.) – mogli

ответ

2

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

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

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

+0

Спасибо. После нескольких ручных усилий у меня есть правильная настройка. – mogli

0

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

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

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

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

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

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

  • Обзор банка, который имеет исходный код

  • < Нажмите Ok >
    После выполнения предыдущей стадии, Open декларация откроет файл .class, имеющий исходный код.

Смежные вопросы