Описание тега bytecode-manipulation

Манипуляции с байт-кодом виртуальной машины низкого уровня. Включая создание / изменение / оптимизацию / и т.д. байт-кода для различных виртуальных машин. Например, JVM, Python VM, Lua VM и т. Д.
1 ответ

Повторная сборка байт-кода Python в исходный код?

Это может быть глупый вопрос, но, учитывая вывод, скажем.. >>> from dis import dis >>> def myfunc(x): ... print x ** 2 ... >>> dis(myfunc) 2 0 LOAD_FAST 0 (x) 3 LOAD_CONST 1 (2) 6 BINARY_POWER 7 PRINT_ITEM 8 PRINT_NEWLINE …
23 янв '10 в 18:32
1 ответ

Перекомпилировать инструкции байт-кода Python

Предположим, у меня есть speak функция: def speak(): print("moo") Я могу разобрать его, как обычно, с dis.dis: >>> dis.dis(speak) 2 0 LOAD_GLOBAL 0 (print) 3 LOAD_CONST 1 ('moo') 6 CALL_FUNCTION 1 (1 positional, 0 keyword pair) 9 POP_TOP 10…
1 ответ

ASM: вывод Java-байт-кода и кода операции

Я пытаюсь написать программу, которая принимает файл.class и собирает все методы файла.class, а также содержимое каждого метода. Вот мой код public class ClassReaderTest1 { public static void main(String[] args) throws Exception{ InputStream in = ne…
3 ответа

Как мне изменить двойной в скомпилированной банке?

У меня есть банка, который содержит строку кода, которая сравнивает два двойных, один из которых имеет значение 0.7, но я должен быть в состоянии изменить это на 0.0, Я не могу использовать отражение или что-то подобное из-за того факта, что это ско…
17 фев '15 в 18:09
1 ответ

Как добавить новые инструментальные методы в автозаполнение intelliJ?

Можно ли заставить intelliJ быть в курсе новых методов / полей (при вводе), добавленных в классы, путем переопределения класса байт-кода от агента java? Благодарю.
1 ответ

Ошибки при изменении существующего класса с использованием JavaAssist

Я работаю над следующей задачей CodeWars: https://www.codewars.com/kata/hack-22/train/java Вот что я написал: public static Yossarian loophole() throws Throwable { ClassPool pool = ClassPool.getDefault(); //Loader cl = new Loader(pool); CtClass yoss…
01 фев '19 в 23:39
1 ответ

Как добавить дополнительную инструкцию к методу в ByteCode, используя ClassVisitor / Java Bytecode (ASM)

Я пишу плагин Gradle для моей библиотеки. https://github.com/shehabic/sherlock, мне нужно добавить сетевой перехватчик во время компиляции в байт-код клиента OkHttp ( https://github.com/square/okhttp/blob/master/okhttp/src/main/java/okhttp3/OkHttpCl…
0 ответов

Как обернуть переменную методом в байт-код ASM JAVA

Я пытаюсь зашифровать переменную в параметре в вызове метода с использованием ASM при обходе инструкций в узле метода. На данный момент я попытался сделать строку для шифрования в предыдущей строке вызова метода (в фактическом коде Java). то есть. е…
1 ответ

Неправильный размер стека, рассчитанный библиотекой ASM

Я генерирую байт-коды, используя библиотеку ASM, и "Макс. Размер стека" для метода остается рассчитанным автоматически. Во время выполнения я обнаружил, что это значение (максимальный размер стека) не является правильным. Мой исходный код: ClassWrit…
1 ответ

Конструкторы перехвата во время перебазирования в ByteBuddy

Что я пытаюсь сделать Я пытаюсь переименовать и переименовать класс, чтобы перехватить его конструктор с Bytebuddy 1.6.7 мотивация Я работаю над системой SAAS, где пользователь может предоставлять аннотированные Java-классы, система должна их инстр…
1 ответ

java.lang.VerifyError: Ожидание кадра стековой карты в ветви... JPA+postgresql

Я борюсь с ошибкой, которую я постоянно получаю при запуске метода, возвращающего некоторые объекты с сервера в ExtJ. Я полностью новичок в JavaEE, и я предполагаю, что где-то допустил ошибки. Вот журнал из консоли JBossDevStudio: 11:04:37,217 ERROR…
1 ответ

ASM - несовместимые кадры стековой карты в целевой ветви

Я пытаюсь сделать простой обфускатор Java байт-код, который работает, заменив GOTO инструкции с простыми условными переходами, скажем, if 10 != 15 GOTO else throw IllegalStateException, Мой текущий код: final AbstractInsnNode[] insns = method.instru…
2 ответа

Добавление аннотаций во время сборки в getter Java, getX(), когда поле x аннотировано

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

Не удалось загрузить динамически сгенерированные байт-коды

Мне удалось сбросить динамически сгенерированные байт-коды в файл с помощью ASM, но не удалось загрузить его. Сообщение об ошибке: java.lang.ClassFormatError: JVMCFRE102 field signature invalid; class=TGWD, offset=0 at java.lang.ClassLoader.defineCl…
1 ответ

Добавить поле в прокси-класс, созданный с помощью Javassist

Я создаю класс Proxy, используя Javassist ProxyFactory со следующим кодом: ProxyFactory factory = new ProxyFactory(); factory.setSuperclass(entity.getClass()); factory.setInterfaces(new Class[] { MyCustomInterface.class }); ..... Class clazz = facto…
08 дек '13 в 22:53
1 ответ

Редактор байтового кода Java

Возможный дубликат: редактор байт-кода Java? Я ищу редактор байт-кода Java с минимумом следующих функций. GUI - просто загружать файлы классов и просматривать байт-код Отредактируйте байт-код Java и сохраните его
22 окт '12 в 10:46
5 ответов

Можно ли просмотреть байт-код файла класса?

Возможный дубликат: Существует ли редактор классов Java / байт-кода для редактирования инструкций? Исходный код Java скомпилирован в байт-код, который фактически находится в файле класса. Можно ли просмотреть байт-код скомпилированного класса? Если …
23 июл '10 в 06:57
1 ответ

Как посчитать индексы локальных переменных в MethodVariableAccess?

Согласно [1], в фрейме метода массив локальных переменных содержит ссылку на вызываемый экземпляр, параметры и, наконец, любые другие переменные, используемые в коде метода. Также, long а также double значения занимают две локальные переменные. При …
5 ответов

Статическая проверка Java-приложения на наличие ошибок ссылок

У меня есть сценарий, в котором у меня есть код, написанный для версии 1 библиотеки, но я хочу отправить версию 2 библиотеки вместо этого. Код отправлен и поэтому не подлежит изменению. Я обеспокоен тем, что он может попытаться получить доступ к кла…
1 ответ

Вывод аргументов метода с использованием API-интерфейса для байтов

Я работаю над проектом, где мне нужны аргументы метода доступа во время выполнения. Можно ли напечатать аргументы метода, используя каркас приятеля байтов? Любой пример кода с использованием javaagent высоко ценится.
17 апр '17 в 07:32