Сейчас на форуме: rmn, exp50848 (+7 невидимых)

 eXeL@B —› Основной форум —› Java: странная ошибка после изменения байткода
Посл.ответ Сообщение

Ранг: 6.8 (гость)
Активность: 0.010
Статус: Участник

Создано: 29 сентября 2012 22:47
· Личное сообщение · #1

Столкнулся с некой странностью: после изменения кода единственного класса моей древней тестовой программы её запуск становится невозможным. Вылет происходит при любом изменении кода. Даже простое пересохранение через BCEL, JavaBite или dirtyJOE приводит к неработоспособности программы. Вылета не вызывает только редактирование констант при помощи HEX-редактора. Попытка изменения кода всё ломает. Хотя декомпилируется без ошибок..

Программа примитивна, 5 строк кода. HelloWorld...
Компилировал тупо командой Javac test.java.
В чём может быть проблема?



Ранг: 189.9 (ветеран), 334thx
Активность: 0.30
Статус: Участник

Создано: 29 сентября 2012 23:23
· Личное сообщение · #2

Выложил бы хоть что-нибудь...

| Сообщение посчитали полезным: IDOL 1234

Ранг: 6.8 (гость)
Активность: 0.010
Статус: Участник

Создано: 29 сентября 2012 23:51
· Личное сообщение · #3

Ок
В архиве 2 файла. Test.jar - исходное приложение. В test1.jar в класс-файл добавлен 1 nop, и программа перестала работать.

2ca8_29.09.2012_EXELAB.rU.tgz - test.7z



Ранг: 617.3 (!), 677thx
Активность: 0.540
Статус: Участник

Создано: 30 сентября 2012 00:02
· Личное сообщение · #4

через JavaBite нормально патчится.



Ранг: 6.8 (гость)
Активность: 0.010
Статус: Участник

Создано: 30 сентября 2012 00:07
· Личное сообщение · #5

О_о
Тогда в чём проблема?
Попробуйте открыть мой класс. Возможно, я что-то не так делаю?..



Ранг: 617.3 (!), 677thx
Активность: 0.540
Статус: Участник

Создано: 30 сентября 2012 00:37
· Личное сообщение · #6

Хотя нет. После JavaBite работает если просто менять инструкции, если добавить тоже не работает.




Ранг: 748.2 (! !), 390thx
Активность: 0.370
Статус: Участник
bytecode!

Создано: 30 сентября 2012 01:45 · Поправил: 4kusNick
· Личное сообщение · #7

IDOL 1234
Не хватает атрибутов
LineNumberTable
StackMapTable
После редакторивания они не сохраняются почему-то, стоит попробовать добавить руками.

Правда не факт, что проблема в них, т.к. это по идее для дебага надо.

-----
Флэш, ява, дотнет - на завтрак, обед и ужин. Unity3D на закуску.


| Сообщение посчитали полезным: igorca, IDOL 1234

Ранг: 6.8 (гость)
Активность: 0.010
Статус: Участник

Создано: 30 сентября 2012 14:25
· Личное сообщение · #8

Я пробовал компилировать без генерации отладочной информации, всё то же самое.
Может ли быть причиной неисправность JDK на моём компьютере?
Попробую посмотреть, что именно оно не сохраняет, но не думаю, что смогу справиться самостоятельно.. Всё-таки со структурой class-файла мне ещё не приходилось работать.



Ранг: 6.8 (гость)
Активность: 0.010
Статус: Участник

Создано: 01 октября 2012 00:22
· Личное сообщение · #9

Ммм. Проблема решена. Всё дело было в случайно поставленной галочке. 4kusNick, спасибо.


 eXeL@B —› Основной форум —› Java: странная ошибка после изменения байткода
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати