Вопросы по теме 'bytecode-manipulation'

Использует ли JAXB инструментарий байт-кода?
Кто-то, где я работаю, заметил (в трассировке стека), что при запуске jvm с -javaagent:spring-instrumentation.jar в моих аннотированных классах JAXB есть странные новые методы, которые мы не писали: например....
2043 просмотров
schedule 30.08.2022

Предложения библиотеки манипулирования байт-кодом Java
Я ищу хорошо поддерживаемую библиотеку манипулирования байт-кодом Java с интуитивно понятным API. Кажется, их там довольно много. Любые предложения о том, какие из них попробовать?
3886 просмотров
schedule 03.07.2023

Как обнаружить агенты Java, JVMTI и т. д.
Как защитить среду Java при работе на машине, которую вы не контролируете? Что может помешать кому-то создать агент java или собственный агент JVMTI и сбросить байт-код или переписать классы, чтобы обойти лицензирование и/или другие проверки...
2945 просмотров

Вставка байтов в середину двоичного файла
Я хочу добавить строку в середине блока метаданных изображения. Под каким-то определенным маркером. Я должен делать это на уровне байтов, поскольку .NET не поддерживает настраиваемые поля метаданных. Блок построен как 1C 02 XX YY YY ZZ ZZ ZZ ......
5392 просмотров
schedule 26.08.2022

Маркеры размера файла JPEG, вставка байтов, метаданные IPTC
Меня интересует вручную вводить поля IPTC в файл JPG на уровне байтов. Файл JPEG имеет несколько сегментов метаданных с маркерами приличного размера. Сегменты-контейнеры для IPTC: Приложение13 - начинается с FF ED XX XX .. 8BIM текстовые...
3153 просмотров

Выполнение части байт-кода
Подумайте об этом примере кода: ... try { stm1 stm2 stm3 } catch(){ ... } ... Предположим, вы запускаете код, и в блоке try возникает исключение. Поток выполнения переходит в блок catch. Здесь я хотел бы скопировать...
250 просмотров
schedule 30.11.2022

Как работает Эмма?
Для использования Эммы мы сначала настроим банку с помощью Эммы. В течение этого времени будут сгенерированы файлы метаданных em, и когда вы запустите тестовые примеры JUnit над инструментированными jar-файлами, будут сгенерированы файлы ec. Который...
1278 просмотров

Где происходит инъекция байт-кода?
Мотивация У меня есть файл SomeObject.java : class SomeObject { String name; } При его компиляции создается файл SomeObject.class , содержащий байт-код. 0xCAFEBABE... Если мы используем SomeObject на JVM, он загружается...
1960 просмотров

Встроить существующий код метода в блок try-finally
Я хочу добавить инструкции в код методов. Эти инструкции должны выполняться после достижения и перед выходом из метода. Чтобы убедиться, что последние инструкции всегда выполняются перед выходом, я хочу поместить их в блок finally. (Я знаю класс...
1039 просмотров

Javassist: повторное создание класса - сначала удалить или разморозить () и изменить?
Я использую Javassist для создания класса. И в наборе тестов, когда второй тест пытается создать тот же класс, он терпит неудачу в pool.makeClass( ... ) , потому что класс заморожен (то есть уже создан через toClass() . Как это преодолеть? В...
4992 просмотров

Может ли отражение Scala 2.10 эмулировать эту функциональность Javassist?
Я хотел бы знать, можно ли переписать эту функцию, используя отражение Scala-2.10 вместо Javassist: def adaptClass(name1: String, name2: String) : Class[_] = { import javassist._ val cls = ClassPool.getDefault().getAndRename(name1, name2)...
316 просмотров

Почему индексы для пула констант занимают разное количество байтов в формате classfile
Я изучал формат класса java, и мне было просто интересно, почему иногда код операции с последующей записью в константном пуле занимает два байта в файле класса, например, с InvokeStatic, но тогда коды операций, такие как ldc с целочисленным индексом,...
40 просмотров
schedule 20.03.2023

Загрузка существующего объекта Java в стек с использованием ASM
Я пытаюсь использовать ASM для своего проекта и столкнулся с проблемой производительности, когда я пытаюсь получить требуемый объект, используя статический метод, и он вызывается примерно 1000 раз. visitor.visitMethodInsn(Opcodes.INVOKESTATIC,...
473 просмотров

Прикрепить прокси к существующему объекту?
Мой план - написать структуру кеширования на основе аннотаций, которая кэширует возвращаемые значения методов. Когда метод вызывается в первый раз с определенным параметром, кеш должен хранить возвращаемое значение метода. Когда тот же метод...
2310 просмотров

Изменить значение статического поля во время загрузки класса с помощью агента Java
У нас есть java-процесс, который вызывает некоторый метод класса X. Класс X имеет статическое поле тайм-аута, которое определяет, как долго поток должен ждать в случае какой-либо ошибки. Теперь я хочу изменить это значение, не меняя процесс Java (я...
1331 просмотров

java.lang.VerifyError: ожидание фрейма stackmap в ветке JPA + postgresql
Я борюсь с ошибкой, которую постоянно получаю при запуске метода, возвращающего некоторые объекты с сервера в ExtJ. Я совершенно новичок в JavaEE и полагаю, что где-то допустил ошибки. Вот журнал консоли JBossDevStudio: 11:04:37,217 ERROR...
1132 просмотров

Добавление аннотаций во время сборки к геттеру Java, getX(), когда поле x аннотировано
Я хочу создать следующую аннотацию Java и обработать ее во время сборки: @Target(value = FIELD) interface @AnnotateGetter { Annotation[] value(); } Если поле field снабжено аннотацией @AnnotateGetter , то все Annotations в массиве...
1598 просмотров

неожиданные инструкции и параметры для invokevirtual в теле встроенного метода
Я следовал примеру кода в «3.2.6 Встроенный метод» в http://asm.ow2.org/current/asm-transformations.pdf , чтобы встроить MethodNode в сайт вызова. Моя проблема заключается в том, что в сгенерированном байт-коде после встраивания отображаются...
637 просмотров

Инструкция вызова метода замены ASM Java
Фон Я хочу провести некоторую инструментальную работу над некоторым трудоемким методом, таким как org/json/JSONObject.toString() , с использованием платформы ASM Java. Оригинальный вызов метода public class JSONUsage { public void...
3512 просмотров

Возможна оптимизация последовательности байт-кода
Я генерирую последовательность байт-кода после встроенного вызова нескольких методов. В начале встроенного метода я сначала сопоставил существующие индексы переменных с новыми номерами локальных переменных на случай любого исключения во встроенном...
120 просмотров