
Laufzeit-JVM-Analyse-Toolkit zur Inspektion von Klassen, Methoden, Feldern, Constant Pool und Bytecode
splinter ist ein JVM-Analyse-Toolkit, das dem Benutzer ermöglicht, Klassen, Methoden, Felder, konstante Pools und Bytecode zur Laufzeit einzusehen. Dies wurde auf OpenJDK Build 22.0.2+9-70 erstellt und getestet.
Normalerweise denkt man bei einem Analyse-Toolkit für die JVM an JNI oder JVMTI, aber nicht an splinter!
splinter ist tatsächlich extern und hat derzeit folgende Fähigkeiten:
Method und ConstMethod decodierenDas langfristige Ziel ist, dass es ein Laufzeit-JVM-Analyse-Toolkit für folgende Zwecke wird:

Der aktuelle Code ist derzeit eine Grundlage, funktioniert aber dennoch.
Zum Zeitpunkt der Erstellung dieses Textes (3/11/2026) kann splinter:
javaw.exe-Prozess anhängenjvm.dll im Zielprozess lokalisierenjvm.dll exportierte HotSpot-VMStruct-Tabellen auflösenClassLoaderDataGraph auflistenKlass und InstanceKlass inspizierenInstanceKlass::_fieldinfo_stream decodierenMethod / ConstMethod inspizierenEiner der cooleren Teile von splinter ist, dass es keinen Classfile-Format-Bytecode verwendet, sondern tatsächlich Laufzeit-Bytecode-Anweisungen aus dem hotspots-Interpreter, die später als symbolische Klassen-/Methoden-/Feldreferenzen zurückgelesen werden.
Es ist wichtig, weil der HotSpot dazu neigt, einige Anweisungen zur Laufzeit umzuschreiben. Wir behandeln derzeit:
invokedynamic codierte Indizesfast_iaccess_0fast_igetfieldfast_aldcinvokehandle