might actually work, TODO: try

This commit is contained in:
Daniella / Tove 2023-09-27 23:33:34 +02:00
parent bfa05d16ab
commit b05141bc33
Signed by: TudbuT
GPG key ID: 7D63D5634B7C417F

View file

@ -90,20 +90,18 @@ public class CustomClassloader extends ClassLoader {
final byte[][] data = {null};
encryptedClasses.access(accessor -> Loader.classKey.access(classKey -> data[0] = classKey.getValue().decryptByte(accessor.getValue().get(name))));
if (data[0] != null) {
Class<?> definedClass = defineClass(name, data[0], 0, data[0].length);
//// TudbuT // using unsafe is a bad idea as it breaks DataKeeper
// try {
// Field b = Unsafe.class.getDeclaredField("theUnsafe");
// Unsafe unsafe = (Unsafe)b.get(null);
// Class<?> definedClass = unsafe.defineClass(name, data[0], 0, data[0].length, this, null);
try {
Field b = Unsafe.class.getDeclaredField("theUnsafe");
Unsafe unsafe = (Unsafe)b.get(null);
Class<?> definedClass = unsafe.defineClass(name, data[0], 0, data[0].length, this, null);
if (definedClass == null) {
throw new ClassNotFoundException(name);
}
return definedClass;
// }catch (Exception e){
// return null;
// }
} catch (Exception e){
return null;
}
} else {
try {
return Launch.classLoader.findClass(name);