Xpoint
   [напомнить пароль]

Редактирование *.class файлов

Метки: [без меток]
2006-06-16 01:39:54 [обр] Mofuer[досье]
Помогите новичку. Мне необходимо исправить содержимое файла *.class. Я скачал прогу, которая декомпилирует его, но после изменений он сохраняется в разрешении jad. Что посоветуете?
спустя 8 часов [обр] 30-ый(59/584)[досье]
думаю переименовать jad в java, исправить и скомпилировать назад.
спустя 3 часа 12 минут [обр] Mofuer[досье]
И получиться *.class? Чем компилировать (какой именно программой)?
спустя 12 минут [обр] GRAy(14/259)[досье]
Чем компилировать (какой именно программой)?
командой javac <ваш класс>.java (поставляется вместе с java SDK)
На выходе получится <ваш класс>.class, только, скорее всего, могут возникнуть несколько проблем:
  1. Нет необходимых для компиляции библиотек - где их достать? где-то внутри того приложения, откуда вы взяли оригинал.
  2. Версия компилятора, которым воспольуетесь вы и которым пользовались при компиляции оригинала могут отличаться (версию, которым откомпилён класс должна, по идее, уметь сказать прога, которой вы его декомпилировали) - соотв. не гарантируется совместимость остальных классов приложения с вашей исправленной и перекомпилённой версией.
  3. (если это класс из подписанного апплета) Вы должны будете подписать jar`ы этого апплета заново - т.е. где-то надо взять сертификат, которым это делается.
спустя 8 часов [обр] Даниэль Алиевский(35/125)[досье]
Интересно. Наверно, если есть декомпиляторы, должны быть и инструменты для локальной правки .class-файлов? Вроде бы, если байт-код "расшифрован" и даже представлен в виде java-исходника, несложно учесть некоторые поправки и скомпилировать файл обратно, не обращая внимания ни на библиотеки, ни на подписи.
спустя 1 час 24 минуты [обр] GRAy(14/259)[досье]
Даниэль Алиевский[досье] "Не обращая внимания на подписи" - не получится ;). То что вы предлагаете, это скорее не компиляция, а правка байт-кода "по живому", для этого тоже есть библиотеки (BCEL, тут недавно проскакивал , существуют ли гуёвые утилиты мне неизвестно ;)), но там нужна такая квалификация, которую трудно заподозрить у новичка.
спустя 8 часов [обр] Даниэль Алиевский(35/125)[досье]

GRAy[досье] Ага, я и говорю о "правке по живому". Но это ведь можно автоматизировать до уровня правки java-кода. Если уж утилита настолько умна, что умеет преобразовать байт-код в Java, то ведь обратная задача ничуть не сложнее. Можно проанализировать изменения, сделанные в java-коде человеком, и отразить их в коррекциях байт-кода. Насколько я помню, структура байт-кода очень четкая и вполне приспособлена для таких операций - это вам не машинный язык Intel.

Насчет подписей, и правда, я явно поспешил :)

спустя 9 часов [обр] GRAy(14/259)[досье]

Даниэль Алиевский[досье]

Если уж утилита настолько умна, что умеет преобразовать байт-код в Java, то ведь обратная задача ничуть не сложнее. Можно проанализировать изменения, сделанные в java-коде человеком, и отразить их в коррекциях байт-кода.

Видимо не так это тривиально. Я, по крайней мере, таких утилит не встречал.

Powered by POEM™ Engine Copyright © 2002-2005