Encrypted / Packed Bytecode Crypter
Влияние на механику Minecraft
Основной байткод мода зашифрован криптографическими алгоритмами (AES, DES, XOR) и расшифровывается в память во время выполнения через кастомный загрузчик классов (defineClass).
Анализируемые функции и API
ClassLoader.defineClass
Динамическая загрузка байтового массива в среду JVM.
Cipher.doFinal
Расшифровка полезной нагрузки через javax.crypto.Cipher.
Реализация в моде (Исходный код)
// Crypter Stub Source
public class StubLoader extends ClassLoader {
public Class<?> load(byte[] encrypted) throws Exception {
Cipher c = Cipher.getInstance("AES");
byte[] decrypted = c.doFinal(encrypted);
return defineClass(null, decrypted, 0, decrypted.length);
}
}
Декомпилированный вид (Vineflower)
// Decompiled with Vineflower 1.12
public class StubLoader extends ClassLoader {
public Class load(byte[] encrypted) throws Exception {
Cipher c = Cipher.getInstance("AES");
byte[] decrypted = c.doFinal(encrypted);
return this.defineClass((String)null, decrypted, 0, decrypted.length);
}
}
Сигнатура байткода и статический детект
Совпадение вызовов ClassLoader.defineClass после криптографических операций Cipher или циклов XOR.