Skip to content

xxDark/SSVM

Repository files navigation

SSVM - Stupidly Simple VM

Capabilities

  • InvokeDynamic
  • Reflection
  • Class loading
  • File system (part of it)
  • Mapped I/O streams between VM & host OS
  • sun/misc/Unsafe implementation
  • JDK 8/9 bootstrapping
  • Multi-threading (see ThreadManager)
  • Interface to modify VM behaviour, similar to JVM TI
  • Instruction rewriting: rewrite parts of methods as the VM executes

Usage

For a basic example, see: EXAMPLE.md

More simple cases can be found in the test cases: ssvm-invoke tests

For complex examples, see: Recaf v3 (Old, using SSVM 1.0)

To add SSVM to your project, add it as a dependency via JitPack. Be sure to use the "commits" tab to pull the latest version, as 2.0.0 has not officially been tagged for release yet.

SSVM depends on JLinker, which is also available via JitPack