Как мне изменить двойной в скомпилированной банке?

У меня есть банка, который содержит строку кода, которая сравнивает два двойных, один из которых имеет значение 0.7, но я должен быть в состоянии изменить это на 0.0,

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

Я думал о редактировании байт-кода, но не могу найти никакого хорошего программного обеспечения для этого.

Я ценю любую помощь с этим.

3 ответа

Решение

Если вы можете декомпилировать класс, вы можете внести изменения и перекомпилировать его. Затем сверните jarfile с вашим исправленным классом. Насколько это будет легко, зависит от класса и JDK, использованных для его компиляции.

Ссылки: JAD (ссылка на Wiki, потому что JAD в основном мертвый проект, хотя он продолжает работать, когда мне это нужно.) Если вы используете Eclipse, вам может повезти с JD-Eclipse. Есть также проект Procyon, с которым у меня был ограниченный успех.

Посмотрите, как декомпилировать Java-классы программы, а затем пересоберите программное обеспечение самостоятельно.

Как "декомпилировать" файлы классов Java?

Из другого аналогичного вопроса: ( Изменить строковую константу в скомпилированном классе)

Если у вас есть источники для этого класса, то мой подход:

  • Получить файл JAR
  • Получить источник для одного класса
  • Скомпилируйте исходный код с помощью JAR на пути к классам (таким образом, вам не нужно ничего компилировать; не повредит, что JAR уже содержит двоичный файл). Вы можете использовать последнюю версию Java для этого; просто понизить компилятор, используя -source а также -target,
  • Замените файл класса в JAR новым, используя jar u или задача муравья

Помимо использования (Hex) редактора или декомпилятора, use может использовать lib для манипулирования байт-кодом, например asm. Вы даже можете использовать агент предварительной загрузки для преобразования кода на лету.

Другие вопросы по тегам