0x01 介绍
SSVM (Stupidly Simple VM),目前releases中最新版本为1.9.0.3,是一个能在虚拟机中模拟虚拟机行为的一种简单且独立的虚拟机。能够进行模拟运算基本数据结果。
目前该虚拟机支持的功能有:
功能(来自README)
- 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
应用
- 对恶意代码进行分析
- 用于逆向工程
0x02 配置环境
为了方便,我们使用gradle进行配置.
等待依赖下载完成后成功即可.
0x03 虚拟机启动
import dev.xdark.ssvm.VirtualMachine;
public class Example {
public static void main(String[] args) {
VirtualMachine vm = new VirtualMachine();
//虚拟机启动
vm.bootstrap();
//无异常报错即为虚拟机启动成功
}
}
0x04 虚拟机启动失败解决方案
虚拟机启动失败
Exception in thread "main" java.lang.IllegalStateException: VM bootstrap failed
at dev.xdark.ssvm.VirtualMachine.bootstrap(VirtualMachine.java:288)
at org.example.Main.main(Main.java:26)
需要注意的是测试时,需要使用系统编码为ANSI的系统进行测试(在vmware中使用相同的java版本进行测试得出的结论,也许还有其他的解决办法)