Категория > Новости > Беззащитная Java. Ломаем Java bytecode encryption - «Новости»
Беззащитная Java. Ломаем Java bytecode encryption - «Новости»29-04-2022, 00:00. Автор: Stephen |
Мы уже обнаружили в рабочем каталоге динамическую библиотеку с оригинальным названием Снова покурим спецификацию JVM Tool Interface, ссылку на которую я привел выше. Общий принцип работы агента — установка собственных пользовательских callback-обработчиков на определенные события. В данном случае нас интересует событие
JNIEXPORT jint JNICALL Agent_onload(JavaVM *vm, char *options, void *reserved) {
jvmtiEventCallbacks callbacks;
jvmtiEnv *jvmtienv = jvmti(agent);
jvmtiErrorjvmtierror;
memset(&callbacks, 0, sizeof(callbacks));
callbacks.ClassFileLoadHook = &eventHandlerClassFileLoadHook; // Новый обработчик JVMTI_EVENT_CLASS_FILE_LOAD_HOOK
jvmtierror = (*jvmtienv)->SetEventCallbacks( jvmtienv, &callbacks, sizeof(callbacks)); // Установка обработчиков
jvmtierror = (*jvmtienv)->SetEventNotificationMode(jvmtienv, JVMTI_ENABLE,
JVMTI_EVENT_CLASS_FILE_LOAD_HOOK,
(jthread)NULL); // Разрешаем обработку события JVMTI_EVENT_CLASS_FILE_LOAD_HOOK
Покопавшись при помощи IDA в коде процедуры Установка обработчика события JVMTI_EVENT_CLASS_FILE_LOAD_HOOK в агенте JavaLoader Перейти обратно к новости |