
클래스, 메서드, 필드, 상수 풀 및 바이트코드를 검사하기 위한 런타임 JVM 분석 툴킷
splinter는 JVM 분석 툴킷으로, 사용자가 런타임에 클래스, 메서드, 필드, 상수 풀 및 바이트코드를 볼 수 있게 해줍니다. 이는 OpenJDK 빌드 22.0.2+9-70에서 만들어지고 테스트되었습니다.
보통 JVM용 분석 툴킷을 생각하면 JNI나 JVMTI를 사용한다고 생각하지만, splinter는 그렇지 않습니다!
splinter는 실제로 외부에 있으며 현재 다음과 같은 기능을 가지고 있습니다:
Method 및 ConstMethod를 통해 바이트코드를 실시간으로 디코딩할 수 있습니다장기 목표는 런타임 JVM 분석 툴킷이 되어 다음을 지원하는 것입니다:

현재 코드 베이스는 기초 단계이지만 여전히 작동합니다
이 글을 작성하는 시점(2026년 3월 11일) 기준으로 splinter는 다음을 할 수 있습니다:
javaw.exe 프로세스에 자동으로 연결jvm.dll 위치 찾기jvm.dll에서 HotSpot이 내보낸 VMStruct 테이블 해석ClassLoaderDataGraph를 통해 로드된 클래스 나열Klass 및 InstanceKlass 검사InstanceKlass::_fieldinfo_stream에서 HotSpot 필드 스트림 디코딩Method / ConstMethod 검사splinter의 멋진 부분 중 하나는 클래스파일 형식의 바이트코드를 사용하지 않고, 실제로 HotSpot 인터프리터의 런타임 바이트코드 명령어를 사용하며, 이후에 기호화된 클래스/메서드/필드 참조로 다시 읽어준다는 점입니다.
이는 HotSpot이 실제로 런타임에 일부 명령어를 재작성하는 경향이 있기 때문에 중요합니다. 현재 우리는 다음을 처리하고 있습니다:
invokedynamic 인코딩된 인덱스fast_iaccess_0fast_igetfieldfast_aldcinvokehandle