Замена библиотек для Minecraft

Версия Minecraft
1.12.2
API
Forge
437
41
112
В общем, решил я пофиксить 1 баг в launchwrapper-1.12.jar для правильной интеграции со своей дополнительной либой и наткнулся на java.lang.SecurityException

Ошибка точно связана с тем, что я запускал майн со своей, вместо mojang-овской и из-за ,,неправильных сигнатур,, хотя по ошибке это не понятно (сам не знаю, почему оно указывает на тот класс, который я не трогал вообще)

Подскажите как правильно/безопасно можно заменить библиотеку (или хотя бы 1 класс net.minecraft.launchwrapper.LaunchClassLoader) на свою

Java:
[23:37:04] [main/INFO]: Caused by: java.lang.SecurityException: class "net.minecraftforge.fml.common.LoaderException"'s
                        signer information does not match signer information of other classes in the same package
[23:37:04] [main/INFO]:     at java.lang.ClassLoader.checkCerts(ClassLoader.java:891)
[23:37:04] [main/INFO]:     at java.lang.ClassLoader.preDefineClass(ClassLoader.java:661)
[23:37:04] [main/INFO]:     at java.lang.ClassLoader.defineClass(ClassLoader.java:754)                                    
[23:37:04] [main/INFO]:     at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
[23:37:04] [main/INFO]:     at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:186)
[23:37:04] [main/INFO]:     ... 7 more
 
1,038
57
229
напиши подробнее что ты пытался сделать, может есть другие способы.
если секретно, напиши в телеграм
 

necauqua

когда-то был anti344
Администратор
1,216
27
172
Можно из meta-inf повыкидывать те сигнатуры нафиг.
Правда фордж наверняка будет жаловаться что кто-то их повыкидывал.
Тогда можно его пропатчить чтобы не жаловался 🙃
 
437
41
112
Нашел свои ошибки .. Дело в том, что на ночь глядя я допустил несколько ошибок, пока восстанавливал код после декомпиляции - вот оно и ругалось на сертификаты. Как ни странно - после пересборки forge (который тоже подписан) на невалидные сертефикаты оно вообще не ругалось

напиши подробнее что ты пытался сделать, может есть другие способы.
если секретно, напиши в телеграм
Мой Native Classloader. Прекрасно завелся с обычным майном, вебсервером на Netty, и даже Cassandr-ой, но по какой-то причине Forge Minecraft с ним ,,наполовину,, не заводился. Собственно причины 2 - 1-я - LaunchClassLoader ,,сломан,, - он не признает никаких родительских classloader-ов кроме системного (насколько я разобрался), 2-я ,,трансформеры,, (пока не отдашь массив байт класса мода, с minecraft-импортами, чтобы forge перестроил его - ничего не заведется)

Как видишь - мой загрузчик классов - загружает классы через jni, а до тех пор они хранятся под ассиметричным шифром.

Java:
public final class NLaunch extends ClassLoader{
    static ClassLoader inst;
    static native byte[]   getSafe (String var); //для ресурсов
    static native Class<?> loadSafe(String var);
  
    static {
        Runtime.getRuntime().load(System.getProperty("nlaunch.lib","nlaunch.dll"));
    }
  
    @Override
    protected Class<?> findClass(String name) throws ClassNotFoundException {
        Class<?> clz = loadSafe(name);
        if(clz != null) return clz;
        else return super.findClass(name);
    }
}
 
Сверху