Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Получение байткода 
:(
    Опции темы
vorondev
Дата 1.11.2011, 08:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 24.8.2011

Репутация: нет
Всего: нет



Решили написать защиту байт кода, сам class зашифровали, для запуска немного изменен стандартный classloader, native библиотека его расшифровывает и возвращает уже объект типа Class.
Собственно вопрос, возможно ли как то перехватить этот байт код после расшифровки и трансформации в Class ?
PM MAIL ICQ   Вверх
dobrolub
Дата 1.11.2011, 08:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 385
Регистрация: 18.12.2009
Где: Vancouver, Canada

Репутация: 11
Всего: 16



Посмотри на java.lang.instrument.ClassFileTransformer. Судя по описанию, с помощью этой штуки можно вытащить байткод.
PM   Вверх
vorondev
Дата 1.11.2011, 09:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 24.8.2011

Репутация: нет
Всего: нет



Цитата(dobrolub @ 1.11.2011,  08:56)
Посмотри на java.lang.instrument.ClassFileTransformer. Судя по описанию, с помощью этой штуки можно вытащить байткод.

Эта штука создана для замена существующего байт кода на новый. Так что не подойдет.
PM MAIL ICQ   Вверх
Skipy
Дата 1.11.2011, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 487
Регистрация: 24.8.2006
Где: Москва, Россия

Репутация: 6
Всего: 16



У Вас должен быть хотя бы один незашифрованный класс. Подозреваю, что это Ваш classloader. Дизассемблируем, получаем принцип работы с Вашей native-библиотекой. Пишем свой код, который делает то же, что и Ваш classloader. Получаем байткод. Как-то так.


--------------------
С уважением,
Евгений aka Skipy
www.skipy.ru
PM MAIL WWW ICQ   Вверх
vorondev
Дата 1.11.2011, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 24.8.2011

Репутация: нет
Всего: нет



Расшифровка идет в native библиотеке, изъять оттуда алгоритм и ключ шифрования проблематично, да и это уже совсем другая тема. Интересует именно получения байткода после расшифровки.
PM MAIL ICQ   Вверх
vorondev
Дата 1.11.2011, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 24.8.2011

Репутация: нет
Всего: нет



Т.е. вот кусок кода

Код

   private final Class<?> defineClassCond(String name, byte[] b, int off, int len, ProtectionDomain protectionDomain, boolean verify) throws ClassFormatError
         {
                 protectionDomain = preDefineClass(name, protectionDomain);
                 Class c;
                 String source = defineClassSourceLocation(protectionDomain);
                 try
                 {
                        c = ClassTransform.defineClass3(this, name, b, off, len, protectionDomain, source, verify);
                 }
                 catch(Exception e)
                 {
                        c = defineTransformedClass(name, b, off, len, protectionDomain, e, source, verify);
                 }
                 postDefineClass(c, protectionDomain);
                 return c;
         }


ClassTransform.defineClass3 - это тот самый native метод 
PM MAIL ICQ   Вверх
dobrolub
Дата 1.11.2011, 18:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 385
Регистрация: 18.12.2009
Где: Vancouver, Canada

Репутация: 11
Всего: 16



Цитата
Эта штука создана для замена существующего байт кода на новый. Так что не подойдет. 

Я вы всё таки проверил.

Это сообщение отредактировал(а) dobrolub - 1.11.2011, 19:24
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0467 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.