
Инструментарий анализа JVM во время выполнения для просмотра классов, методов, полей, пула констант и байткода
splinter — это набор инструментов для анализа JVM, позволяющий пользователю просматривать классы, методы, поля, пулы констант и байт-код во время выполнения. Он был создан и протестирован на openjdk build 22.0.2+9-70
Обычно, когда думают об инструменте анализа для JVM, предполагают, что он использует JNI или JVMTI, но splinter — не такой!
На самом деле splinter является внешним инструментом и на данный момент обладает следующими возможностями:
Method и ConstMethodДолгосрочная цель — сделать его инструментом анализа JVM во время выполнения для:

текущая кодовая база пока является основой, но она все еще функционирует
на момент написания (3/11/2026) splinter может:
javaw.exejvm.dll в целевом процессеjvm.dllClassLoaderDataGraphKlass и InstanceKlassInstanceKlass::_fieldinfo_streamMethod / ConstMethodОдна из самых крутых особенностей splinter в том, что он не использует байт-код формата class-файла, а использует инструкции байт-кода времени выполнения из интерпретатора HotSpot, которые затем считываются обратно в виде символических ссылок на классы/методы/поля.
Это важно, потому что HotSpot склонен переписывать некоторые инструкции во время выполнения. В настоящее время мы обрабатываем:
invokedynamicfast_iaccess_0fast_igetfieldfast_aldcinvokehandle