xxDark / SSVM

Java VM running on a JVM
MIT License
157 stars 16 forks source link

SSVM crashes while running obfuscated jar #14

Closed cyoung06 closed 1 year ago

cyoung06 commented 1 year ago
java.lang.IllegalStateException: Uncaught VM error at: gg/skytils/skytilsmod/loader/agent/Violin.<clinit>()V
    at dev.xdark.ssvm.execution.SimpleExecutionEngine.execute(SimpleExecutionEngine.java:76)
    at dev.xdark.ssvm.util.VMHelper.invoke(VMHelper.java:78)
    at dev.xdark.ssvm.mirror.SimpleInstanceJavaClass.initialize(SimpleInstanceJavaClass.java:192)
    at me.coley.recaf.ssvm.SsvmIntegration.lambda$runMethod$1(SsvmIntegration.java:153)
    at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
    at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: java.lang.IllegalStateException: Uncaught VM error at: java/lang/invoke/MethodHandleNatives.linkCallSite(Ljava/lang/Object;ILjava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/invoke/MemberName;
    at dev.xdark.ssvm.execution.SimpleExecutionEngine.execute(SimpleExecutionEngine.java:76)
    at dev.xdark.ssvm.util.VMHelper.invoke(VMHelper.java:78)
    at dev.xdark.ssvm.util.InvokeDynamicLinker.linkCall(InvokeDynamicLinker.java:124)
    at dev.xdark.ssvm.execution.asm.InvokeDynamicLinkerProcessor.execute(InvokeDynamicLinkerProcessor.java:21)
    at dev.xdark.ssvm.execution.asm.InvokeDynamicLinkerProcessor.execute(InvokeDynamicLinkerProcessor.java:17)
    at dev.xdark.ssvm.execution.Interpreter.execute(Interpreter.java:59)
    at dev.xdark.ssvm.execution.InterpretedInvoker.intercept(InterpretedInvoker.java:25)
    at dev.xdark.ssvm.execution.SimpleExecutionEngine.execute(SimpleExecutionEngine.java:66)
    ... 7 more
Caused by: java.lang.IllegalStateException: Uncaught VM error at: java/lang/invoke/MethodHandleNatives.linkCallSiteImpl(Ljava/lang/Class;Ljava/lang/invoke/MethodHandle;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/invoke/MemberName;
    at dev.xdark.ssvm.execution.SimpleExecutionEngine.execute(SimpleExecutionEngine.java:76)
    at dev.xdark.ssvm.util.VMHelper.invoke(VMHelper.java:78)
    at dev.xdark.ssvm.execution.rewrite.AbstractVMCallProcessor.execute(AbstractVMCallProcessor.java:36)
    at dev.xdark.ssvm.execution.rewrite.AbstractVMCallProcessor.execute(AbstractVMCallProcessor.java:19)
    at me.coley.recaf.ssvm.processing.peephole.MethodInvokeFolder.lambda$install$0(MethodInvokeFolder.java:129)
    at dev.xdark.ssvm.execution.Interpreter.execute(Interpreter.java:59)
    at dev.xdark.ssvm.execution.InterpretedInvoker.intercept(InterpretedInvoker.java:25)
    at dev.xdark.ssvm.execution.SimpleExecutionEngine.execute(SimpleExecutionEngine.java:66)
    ... 14 more
Caused by: java.lang.IllegalStateException: Uncaught VM error at: java/lang/invoke/CallSite.makeSite(Ljava/lang/invoke/MethodHandle;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/invoke/CallSite;
    at dev.xdark.ssvm.execution.SimpleExecutionEngine.execute(SimpleExecutionEngine.java:76)
    at dev.xdark.ssvm.util.VMHelper.invoke(VMHelper.java:78)
    at dev.xdark.ssvm.execution.rewrite.AbstractVMCallProcessor.execute(AbstractVMCallProcessor.java:36)
    at dev.xdark.ssvm.execution.rewrite.AbstractVMCallProcessor.execute(AbstractVMCallProcessor.java:19)
    at me.coley.recaf.ssvm.processing.peephole.MethodInvokeFolder.lambda$install$0(MethodInvokeFolder.java:129)
    at dev.xdark.ssvm.execution.Interpreter.execute(Interpreter.java:59)
    at dev.xdark.ssvm.execution.InterpretedInvoker.intercept(InterpretedInvoker.java:25)
    at dev.xdark.ssvm.execution.SimpleExecutionEngine.execute(SimpleExecutionEngine.java:66)
    ... 21 more
Caused by: java.lang.IllegalStateException: Uncaught VM error at: java/lang/invoke/BootstrapMethodInvoker.invoke(Ljava/lang/Class;Ljava/lang/invoke/MethodHandle;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
    at dev.xdark.ssvm.execution.SimpleExecutionEngine.execute(SimpleExecutionEngine.java:76)
    at dev.xdark.ssvm.util.VMHelper.invoke(VMHelper.java:78)
    at dev.xdark.ssvm.execution.rewrite.AbstractVMCallProcessor.execute(AbstractVMCallProcessor.java:36)
    at dev.xdark.ssvm.execution.rewrite.AbstractVMCallProcessor.execute(AbstractVMCallProcessor.java:19)
    at me.coley.recaf.ssvm.processing.peephole.MethodInvokeFolder.lambda$install$0(MethodInvokeFolder.java:129)
    at dev.xdark.ssvm.execution.Interpreter.execute(Interpreter.java:59)
    at dev.xdark.ssvm.execution.InterpretedInvoker.intercept(InterpretedInvoker.java:25)
    at dev.xdark.ssvm.execution.SimpleExecutionEngine.execute(SimpleExecutionEngine.java:66)
    ... 28 more
Caused by: java.lang.IllegalStateException: Uncaught VM error at: java/lang/invoke/MethodHandle.invoke(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    at dev.xdark.ssvm.execution.SimpleExecutionEngine.execute(SimpleExecutionEngine.java:76)
    at dev.xdark.ssvm.util.VMHelper.invoke(VMHelper.java:78)
    at dev.xdark.ssvm.execution.rewrite.AbstractVMCallProcessor.execute(AbstractVMCallProcessor.java:36)
    at dev.xdark.ssvm.execution.rewrite.AbstractVMCallProcessor.execute(AbstractVMCallProcessor.java:19)
    at dev.xdark.ssvm.execution.Interpreter.execute(Interpreter.java:59)
    at dev.xdark.ssvm.execution.InterpretedInvoker.intercept(InterpretedInvoker.java:25)
    at dev.xdark.ssvm.execution.SimpleExecutionEngine.execute(SimpleExecutionEngine.java:66)
    ... 35 more
Caused by: java.lang.IllegalStateException: Uncaught VM error at: java/lang/invoke/MethodHandle.asType(Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;
    at dev.xdark.ssvm.execution.SimpleExecutionEngine.execute(SimpleExecutionEngine.java:76)
    at dev.xdark.ssvm.util.VMHelper.invoke(VMHelper.java:78)
    at dev.xdark.ssvm.natives.MethodHandleNatives.lambda$init$8(MethodHandleNatives.java:135)
    at dev.xdark.ssvm.execution.SimpleExecutionEngine.execute(SimpleExecutionEngine.java:66)
    ... 41 more
Caused by: java.lang.IllegalStateException: Uncaught VM error at: java/lang/invoke/MethodHandle.asTypeUncached(Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;
    at dev.xdark.ssvm.execution.SimpleExecutionEngine.execute(SimpleExecutionEngine.java:76)
    at dev.xdark.ssvm.util.VMHelper.invoke(VMHelper.java:78)
    at dev.xdark.ssvm.execution.rewrite.AbstractVMCallProcessor.execute(AbstractVMCallProcessor.java:36)
    at dev.xdark.ssvm.execution.rewrite.AbstractVMCallProcessor.execute(AbstractVMCallProcessor.java:19)
    at dev.xdark.ssvm.execution.Interpreter.execute(Interpreter.java:59)
    at dev.xdark.ssvm.execution.InterpretedInvoker.intercept(InterpretedInvoker.java:25)
    at dev.xdark.ssvm.execution.SimpleExecutionEngine.execute(SimpleExecutionEngine.java:66)
    ... 44 more
Caused by: java.lang.IllegalStateException: Uncaught VM error at: java/lang/invoke/MethodHandleImpl.makePairwiseConvert(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;Z)Ljava/lang/invoke/MethodHandle;
    at dev.xdark.ssvm.execution.SimpleExecutionEngine.execute(SimpleExecutionEngine.java:76)
    at dev.xdark.ssvm.util.VMHelper.invoke(VMHelper.java:78)
    at dev.xdark.ssvm.execution.rewrite.AbstractVMCallProcessor.execute(AbstractVMCallProcessor.java:36)
    at dev.xdark.ssvm.execution.rewrite.AbstractVMCallProcessor.execute(AbstractVMCallProcessor.java:19)
    at me.coley.recaf.ssvm.processing.peephole.MethodInvokeFolder.lambda$install$0(MethodInvokeFolder.java:129)
    at dev.xdark.ssvm.execution.Interpreter.execute(Interpreter.java:59)
    at dev.xdark.ssvm.execution.InterpretedInvoker.intercept(InterpretedInvoker.java:25)
    at dev.xdark.ssvm.execution.SimpleExecutionEngine.execute(SimpleExecutionEngine.java:66)
    ... 50 more
Caused by: java.lang.IllegalStateException: Uncaught VM error at: java/lang/invoke/MethodHandleImpl.makePairwiseConvert(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;ZZ)Ljava/lang/invoke/MethodHandle;
    at dev.xdark.ssvm.execution.SimpleExecutionEngine.execute(SimpleExecutionEngine.java:76)
    at dev.xdark.ssvm.util.VMHelper.invoke(VMHelper.java:78)
    at dev.xdark.ssvm.execution.rewrite.AbstractVMCallProcessor.execute(AbstractVMCallProcessor.java:36)
    at dev.xdark.ssvm.execution.rewrite.AbstractVMCallProcessor.execute(AbstractVMCallProcessor.java:19)
    at me.coley.recaf.ssvm.processing.peephole.MethodInvokeFolder.lambda$install$0(MethodInvokeFolder.java:129)
    at dev.xdark.ssvm.execution.Interpreter.execute(Interpreter.java:59)
    at dev.xdark.ssvm.execution.InterpretedInvoker.intercept(InterpretedInvoker.java:25)
    at dev.xdark.ssvm.execution.SimpleExecutionEngine.execute(SimpleExecutionEngine.java:66)
    ... 57 more
Caused by: java.lang.IllegalStateException: Uncaught VM error at: java/lang/invoke/MethodHandleImpl.makePairwiseConvertByEditor(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;ZZ)Ljava/lang/invoke/MethodHandle;
    at dev.xdark.ssvm.execution.SimpleExecutionEngine.execute(SimpleExecutionEngine.java:76)
    at dev.xdark.ssvm.util.VMHelper.invoke(VMHelper.java:78)
    at dev.xdark.ssvm.execution.rewrite.AbstractVMCallProcessor.execute(AbstractVMCallProcessor.java:36)
    at dev.xdark.ssvm.execution.rewrite.AbstractVMCallProcessor.execute(AbstractVMCallProcessor.java:19)
    at me.coley.recaf.ssvm.processing.peephole.MethodInvokeFolder.lambda$install$0(MethodInvokeFolder.java:129)
    at dev.xdark.ssvm.execution.Interpreter.execute(Interpreter.java:59)
    at dev.xdark.ssvm.execution.InterpretedInvoker.intercept(InterpretedInvoker.java:25)
    at dev.xdark.ssvm.execution.SimpleExecutionEngine.execute(SimpleExecutionEngine.java:66)
    ... 64 more
Caused by: java.lang.IllegalStateException: Uncaught VM error at: java/lang/invoke/DirectMethodHandle.rebind()Ljava/lang/invoke/BoundMethodHandle;
    at dev.xdark.ssvm.execution.SimpleExecutionEngine.execute(SimpleExecutionEngine.java:76)
    at dev.xdark.ssvm.util.VMHelper.invoke(VMHelper.java:78)
    at dev.xdark.ssvm.execution.rewrite.AbstractVMCallProcessor.execute(AbstractVMCallProcessor.java:36)
    at dev.xdark.ssvm.execution.rewrite.AbstractVMCallProcessor.execute(AbstractVMCallProcessor.java:19)
    at dev.xdark.ssvm.execution.Interpreter.execute(Interpreter.java:59)
    at dev.xdark.ssvm.execution.InterpretedInvoker.intercept(InterpretedInvoker.java:25)
    at dev.xdark.ssvm.execution.SimpleExecutionEngine.execute(SimpleExecutionEngine.java:66)
    ... 71 more
Caused by: java.lang.IllegalStateException: Uncaught VM error at: java/lang/invoke/BoundMethodHandle.<clinit>()V
    at dev.xdark.ssvm.execution.SimpleExecutionEngine.execute(SimpleExecutionEngine.java:76)
    at dev.xdark.ssvm.util.VMHelper.invoke(VMHelper.java:78)
    at dev.xdark.ssvm.mirror.SimpleInstanceJavaClass.initialize(SimpleInstanceJavaClass.java:192)
    at dev.xdark.ssvm.VirtualMachine.findBootstrapClass(VirtualMachine.java:568)
    at dev.xdark.ssvm.VirtualMachine.findClass(VirtualMachine.java:594)
    at dev.xdark.ssvm.util.VMHelper.findClass(VMHelper.java:1137)
    at dev.xdark.ssvm.util.VMHelper.tryFindClass(VMHelper.java:1700)
    at dev.xdark.ssvm.execution.rewrite.VMStaticCallProcessor.resolveMethod(VMStaticCallProcessor.java:18)
    at dev.xdark.ssvm.execution.rewrite.AbstractVMCallProcessor.execute(AbstractVMCallProcessor.java:27)
    at dev.xdark.ssvm.execution.rewrite.AbstractVMCallProcessor.execute(AbstractVMCallProcessor.java:19)
    at me.coley.recaf.ssvm.processing.peephole.MethodInvokeFolder.lambda$install$0(MethodInvokeFolder.java:129)
    at dev.xdark.ssvm.execution.Interpreter.execute(Interpreter.java:59)
    at dev.xdark.ssvm.execution.InterpretedInvoker.intercept(InterpretedInvoker.java:25)
    at dev.xdark.ssvm.execution.SimpleExecutionEngine.execute(SimpleExecutionEngine.java:66)
    ... 77 more
Caused by: java.lang.IllegalStateException: Uncaught VM error at: java/lang/invoke/ClassSpecializer.findSpecies(Ljava/lang/Object;)Ljava/lang/invoke/ClassSpecializer$SpeciesData;
    at dev.xdark.ssvm.execution.SimpleExecutionEngine.execute(SimpleExecutionEngine.java:76)
    at dev.xdark.ssvm.util.VMHelper.invoke(VMHelper.java:78)
    at dev.xdark.ssvm.execution.rewrite.AbstractVMCallProcessor.execute(AbstractVMCallProcessor.java:36)
    at dev.xdark.ssvm.execution.rewrite.AbstractVMCallProcessor.execute(AbstractVMCallProcessor.java:19)
    at dev.xdark.ssvm.execution.Interpreter.execute(Interpreter.java:59)
    at dev.xdark.ssvm.execution.InterpretedInvoker.intercept(InterpretedInvoker.java:25)
    at dev.xdark.ssvm.execution.SimpleExecutionEngine.execute(SimpleExecutionEngine.java:66)
    ... 90 more
Caused by: java.lang.IllegalStateException: Uncaught VM error at: java/lang/invoke/ClassSpecializer$Factory.loadSpecies(Ljava/lang/invoke/ClassSpecializer$SpeciesData;)Ljava/lang/invoke/ClassSpecializer$SpeciesData;
    at dev.xdark.ssvm.execution.SimpleExecutionEngine.execute(SimpleExecutionEngine.java:76)
    at dev.xdark.ssvm.util.VMHelper.invoke(VMHelper.java:78)
    at dev.xdark.ssvm.execution.rewrite.AbstractVMCallProcessor.execute(AbstractVMCallProcessor.java:36)
    at dev.xdark.ssvm.execution.rewrite.AbstractVMCallProcessor.execute(AbstractVMCallProcessor.java:19)
    at dev.xdark.ssvm.execution.Interpreter.execute(Interpreter.java:59)
    at dev.xdark.ssvm.execution.InterpretedInvoker.intercept(InterpretedInvoker.java:25)
    at dev.xdark.ssvm.execution.SimpleExecutionEngine.execute(SimpleExecutionEngine.java:66)
    ... 96 more
Caused by: java.lang.IllegalStateException: Uncaught VM error at: java/lang/invoke/ClassSpecializer$Factory.linkCodeToSpeciesData(Ljava/lang/Class;Ljava/lang/invoke/ClassSpecializer$SpeciesData;Z)V
    at dev.xdark.ssvm.execution.SimpleExecutionEngine.execute(SimpleExecutionEngine.java:76)
    at dev.xdark.ssvm.util.VMHelper.invoke(VMHelper.java:78)
    at dev.xdark.ssvm.execution.rewrite.AbstractVMCallProcessor.execute(AbstractVMCallProcessor.java:36)
    at dev.xdark.ssvm.execution.rewrite.AbstractVMCallProcessor.execute(AbstractVMCallProcessor.java:19)
    at dev.xdark.ssvm.execution.Interpreter.execute(Interpreter.java:59)
    at dev.xdark.ssvm.execution.InterpretedInvoker.intercept(InterpretedInvoker.java:25)
    at dev.xdark.ssvm.execution.SimpleExecutionEngine.execute(SimpleExecutionEngine.java:66)
    ... 102 more
Caused by: java.lang.IllegalStateException: Uncaught VM error at: java/lang/invoke/MethodHandles$Lookup.resolveOrFail(BLjava/lang/Class;Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/invoke/MemberName;
    at dev.xdark.ssvm.execution.SimpleExecutionEngine.execute(SimpleExecutionEngine.java:76)
    at dev.xdark.ssvm.util.VMHelper.invoke(VMHelper.java:78)
    at dev.xdark.ssvm.execution.rewrite.AbstractVMCallProcessor.execute(AbstractVMCallProcessor.java:36)
    at dev.xdark.ssvm.execution.rewrite.AbstractVMCallProcessor.execute(AbstractVMCallProcessor.java:19)
    at dev.xdark.ssvm.execution.Interpreter.execute(Interpreter.java:59)
    at dev.xdark.ssvm.execution.InterpretedInvoker.intercept(InterpretedInvoker.java:25)
    at dev.xdark.ssvm.execution.SimpleExecutionEngine.execute(SimpleExecutionEngine.java:66)
    ... 108 more
Caused by: java.lang.IndexOutOfBoundsException
    at dev.xdark.ssvm.util.ArraySlice.map(ArraySlice.java:86)
    at dev.xdark.ssvm.util.ArraySlice.set(ArraySlice.java:35)
    at dev.xdark.ssvm.execution.ThreadStack.push(ThreadStack.java:39)
    at dev.xdark.ssvm.execution.asm.IntLoadProcessor.execute(IntLoadProcessor.java:17)
    at dev.xdark.ssvm.execution.asm.IntLoadProcessor.execute(IntLoadProcessor.java:13)
    at dev.xdark.ssvm.execution.Interpreter.execute(Interpreter.java:59)
    at dev.xdark.ssvm.execution.InterpretedInvoker.intercept(InterpretedInvoker.java:25)
    at dev.xdark.ssvm.execution.SimpleExecutionEngine.execute(SimpleExecutionEngine.java:66)
    ... 114 more

I'm guessing it errored on invoke dynamics. The problematic jar can be found at here for classpath this should be enough

Steps to reproduce:

  1. open the jar
  2. open gg.skytils.skytilsmod.loader.agent.Violin
  3. run optimize on <cinit>

(optimize on any method fails with a variety of errors due to ssvm exception)

I've also seen error on System.defineClass which is created by running random methods with random values, but I think that is issue with me running with random values

xxDark commented 1 year ago

Closing this since all the logic has been rewritten

Col-E commented 1 year ago

Will be updating 3X's SSVM implementation a bit later can re-investigate when that gets done.

iocmet commented 2 months ago

Is this fixed in SSVM but SSVM in recaf 3.x.x not updated?

iocmet commented 2 months ago

image