| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > Получение байткода |
| Автор: vorondev 1.11.2011, 08:36 |
| Решили написать защиту байт кода, сам class зашифровали, для запуска немного изменен стандартный classloader, native библиотека его расшифровывает и возвращает уже объект типа Class. Собственно вопрос, возможно ли как то перехватить этот байт код после расшифровки и трансформации в Class ? |
| Автор: dobrolub 1.11.2011, 08:56 |
| Посмотри на java.lang.instrument.ClassFileTransformer. Судя по описанию, с помощью этой штуки можно вытащить байткод. |
| Автор: vorondev 1.11.2011, 09:29 | ||
Эта штука создана для замена существующего байт кода на новый. Так что не подойдет. |
| Автор: Skipy 1.11.2011, 12:46 |
| У Вас должен быть хотя бы один незашифрованный класс. Подозреваю, что это Ваш classloader. Дизассемблируем, получаем принцип работы с Вашей native-библиотекой. Пишем свой код, который делает то же, что и Ваш classloader. Получаем байткод. Как-то так. |
| Автор: vorondev 1.11.2011, 12:59 |
| Расшифровка идет в native библиотеке, изъять оттуда алгоритм и ключ шифрования проблематично, да и это уже совсем другая тема. Интересует именно получения байткода после расшифровки. |
| Автор: vorondev 1.11.2011, 13:15 | ||
Т.е. вот кусок кода
ClassTransform.defineClass3 - это тот самый native метод |
| Автор: dobrolub 1.11.2011, 18:37 | ||
Я вы всё таки проверил. |