Как декомпилировать программы .jar с зашифрованными классами

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

Это взломанный клиент Java Minecraft. Я попытался декомпилировать код с помощью Procoyn, но получил только некоторые зашифрованные данные и попытался использовать некоторые инструменты для редактирования java-файлов, такие как JByteEdit. Это не сработало. Я вижу, что есть что-то вроде Java Class Loader, но я не знаю, что делать.

Вы можете посмотреть код какого-то одного декомпилированного класса Procoyn (код в конце, потому что он такой длинный)

Я ожидал расшифрованную программу с полным доступом, но вдруг этого не произошло. Многие классы не скомпилировались, и у них есть ошибка, сделанная Procoyn с ByteCode. желаю помощи. Помните, что я делаю это только в образовательных целях!

import java.lang.reflect.InvocationTargetException;
import java.io.InputStream;
import java.io.DataInputStream;
import java.io.IOException;
import java.io.File;
import org.apache.commons.codec.binary.Base64;

// 
// Decompiled by Procyon v0.5.36
// 

public class LiQCWv2gi5i7ywU3tHTtN85n6hsnavb3KP51BiVEN0BgUYWZDfjcZmFr3T7GmM8usWtYlgcasT0xRpsrzVeJpMLeT8hQ3vzLwbHOAQO3HCdm1HJAPP9IXzmqxh1AheQL46aryCX9g5Xjb718B2N5PzB1PmfbYeRrDmILHmIXwl7CXwXMG6s4UhjY1pN0tPJ2Av1BanS6 extends ClassLoader
{
    private static byte[] bJP9cyw82vHp6JDwHxyLheQFUJVHZlLTGMKVrx3BXcBycmJTCTSIMwRKy3dqd58pg4cXalVXkCp9uk4M4WuhyJQXmOl2LhDtrteGturrskix48teJ0LhzlwwTxYTzG7YTuM7wYpyFQioEmLbbtftxI3hwoUjsi2kdXMRyDQHm6dW9bxVMs45lUb5rc1AkQLgf9GpzD7p;
    private static String bJP9cyw82vHp6JDwHxyLheQFUJVHZlLTGMKVrx3BXcBycmJTCTSIMwRKy3dqd58pg4cXalVXkCp9uk4M4WuhyJQXmOl2LhDtrteGturrskix48teJ0LhzlwwTxYTzG7YTuM7wYpyFQioEmLbbtftxI3hwoUjsi2kdXMRyDQHm6dW9bxVMs45lUb5rc1AkQLgf9GpzD7p;
    private static byte[] pqqM0yPxa7I53aMzRamSJKJi4VhifBOuy7HwXxw2FGvdbyDfbvCZ2GDWXrggrx2bJYi3q3WCWPJTsloDlLfHD2jn6QVTyArTvGApvwJ5qK6znGDggYh5YvO1KOy8VymWTUDNUr87OBMblnxO3PwdZRWlAo71vK6YAF7sZjn7P7ec1RMkHagHffbUaCfc4gmHaADmBoqA;
    private static String pqqM0yPxa7I53aMzRamSJKJi4VhifBOuy7HwXxw2FGvdbyDfbvCZ2GDWXrggrx2bJYi3q3WCWPJTsloDlLfHD2jn6QVTyArTvGApvwJ5qK6znGDggYh5YvO1KOy8VymWTUDNUr87OBMblnxO3PwdZRWlAo71vK6YAF7sZjn7P7ec1RMkHagHffbUaCfc4gmHaADmBoqA;
    private static byte[] h5jnE5RIDtCU6wzKGrfY1VlOqlMNMrCVdBvTAcSl5icuYelq4dVOxX7SKtzudapLCTwPsWDGbhstDNhrEA8mU6kGqNYFansglIw49HHl6hotlC5GJA26ImHFMtlazrXHdl1i5KdQVlhCXJgmpeL21QqDCuJ2rbhChafPYzIpIEfNjpbyJSnKlwhq3McB0Fa1KN561vBq;
    private static String h5jnE5RIDtCU6wzKGrfY1VlOqlMNMrCVdBvTAcSl5icuYelq4dVOxX7SKtzudapLCTwPsWDGbhstDNhrEA8mU6kGqNYFansglIw49HHl6hotlC5GJA26ImHFMtlazrXHdl1i5KdQVlhCXJgmpeL21QqDCuJ2rbhChafPYzIpIEfNjpbyJSnKlwhq3McB0Fa1KN561vBq;
    private static byte[] nkhV5wzMeIJCxDePgYQyyJ4cTmRDA6o55WS4yhexlKs4sHaYujEgPAde9D8Bz14Ccqu1bpt8rBMYSpZu5co3DiEPpnfUxMm0i0XDUjtHnGfEK0YVaaK4ycnUmcZ7Mn1bP1NrL71LAqPleM8xZMGrhG9LOt04xSDVfn8mnONLcQaXyRUdb6kcQot7FNf90Zr34y7Vcnu1;
    private static byte[] w3xPoy6QBD37AzI0GrtrAQaXtCMN9C0SzeGLhyUzYRZPTIoiotC8LuZ9XvYUk2JG91VeFCCQfEjVoX1ZBVSFBhRMBHJeEbIJX2LUoovR7wzpe8JOspBuuvd0ZT8aYPYFmqCXyxI4pKDk52fosYnl8TqKqgqCIi17mYAKdH2nFH1tfvgDTuCwxcSj7iZVMQ0nCvyEBNup;
    private static String nkhV5wzMeIJCxDePgYQyyJ4cTmRDA6o55WS4yhexlKs4sHaYujEgPAde9D8Bz14Ccqu1bpt8rBMYSpZu5co3DiEPpnfUxMm0i0XDUjtHnGfEK0YVaaK4ycnUmcZ7Mn1bP1NrL71LAqPleM8xZMGrhG9LOt04xSDVfn8mnONLcQaXyRUdb6kcQot7FNf90Zr34y7Vcnu1;

    public static void main(final String[] array) {
        new LiQCWv2gi5i7ywU3tHTtN85n6hsnavb3KP51BiVEN0BgUYWZDfjcZmFr3T7GmM8usWtYlgcasT0xRpsrzVeJpMLeT8hQ3vzLwbHOAQO3HCdm1HJAPP9IXzmqxh1AheQL46aryCX9g5Xjb718B2N5PzB1PmfbYeRrDmILHmIXwl7CXwXMG6s4UhjY1pN0tPJ2Av1BanS6().bJP9cyw82vHp6JDwHxyLheQFUJVHZlLTGMKVrx3BXcBycmJTCTSIMwRKy3dqd58pg4cXalVXkCp9uk4M4WuhyJQXmOl2LhDtrteGturrskix48teJ0LhzlwwTxYTzG7YTuM7wYpyFQioEmLbbtftxI3hwoUjsi2kdXMRyDQHm6dW9bxVMs45lUb5rc1AkQLgf9GpzD7p(array);
    }

    public LiQCWv2gi5i7ywU3tHTtN85n6hsnavb3KP51BiVEN0BgUYWZDfjcZmFr3T7GmM8usWtYlgcasT0xRpsrzVeJpMLeT8hQ3vzLwbHOAQO3HCdm1HJAPP9IXzmqxh1AheQL46aryCX9g5Xjb718B2N5PzB1PmfbYeRrDmILHmIXwl7CXwXMG6s4UhjY1pN0tPJ2Av1BanS6() {
        super(LiQCWv2gi5i7ywU3tHTtN85n6hsnavb3KP51BiVEN0BgUYWZDfjcZmFr3T7GmM8usWtYlgcasT0xRpsrzVeJpMLeT8hQ3vzLwbHOAQO3HCdm1HJAPP9IXzmqxh1AheQL46aryCX9g5Xjb718B2N5PzB1PmfbYeRrDmILHmIXwl7CXwXMG6s4UhjY1pN0tPJ2Av1BanS6.class.getClassLoader());
        LiQCWv2gi5i7ywU3tHTtN85n6hsnavb3KP51BiVEN0BgUYWZDfjcZmFr3T7GmM8usWtYlgcasT0xRpsrzVeJpMLeT8hQ3vzLwbHOAQO3HCdm1HJAPP9IXzmqxh1AheQL46aryCX9g5Xjb718B2N5PzB1PmfbYeRrDmILHmIXwl7CXwXMG6s4UhjY1pN0tPJ2Av1BanS6.bJP9cyw82vHp6JDwHxyLheQFUJVHZlLTGMKVrx3BXcBycmJTCTSIMwRKy3dqd58pg4cXalVXkCp9uk4M4WuhyJQXmOl2LhDtrteGturrskix48teJ0LhzlwwTxYTzG7YTuM7wYpyFQioEmLbbtftxI3hwoUjsi2kdXMRyDQHm6dW9bxVMs45lUb5rc1AkQLgf9GpzD7p = new String(LiQCWv2gi5i7ywU3tHTtN85n6hsnavb3KP51BiVEN0BgUYWZDfjcZmFr3T7GmM8usWtYlgcasT0xRpsrzVeJpMLeT8hQ3vzLwbHOAQO3HCdm1HJAPP9IXzmqxh1AheQL46aryCX9g5Xjb718B2N5PzB1PmfbYeRrDmILHmIXwl7CXwXMG6s4UhjY1pN0tPJ2Av1BanS6.bJP9cyw82vHp6JDwHxyLheQFUJVHZlLTGMKVrx3BXcBycmJTCTSIMwRKy3dqd58pg4cXalVXkCp9uk4M4WuhyJQXmOl2LhDtrteGturrskix48teJ0LhzlwwTxYTzG7YTuM7wYpyFQioEmLbbtftxI3hwoUjsi2kdXMRyDQHm6dW9bxVMs45lUb5rc1AkQLgf9GpzD7p);
        LiQCWv2gi5i7ywU3tHTtN85n6hsnavb3KP51BiVEN0BgUYWZDfjcZmFr3T7GmM8usWtYlgcasT0xRpsrzVeJpMLeT8hQ3vzLwbHOAQO3HCdm1HJAPP9IXzmqxh1AheQL46aryCX9g5Xjb718B2N5PzB1PmfbYeRrDmILHmIXwl7CXwXMG6s4UhjY1pN0tPJ2Av1BanS6.pqqM0yPxa7I53aMzRamSJKJi4VhifBOuy7HwXxw2FGvdbyDfbvCZ2GDWXrggrx2bJYi3q3WCWPJTsloDlLfHD2jn6QVTyArTvGApvwJ5qK6znGDggYh5YvO1KOy8VymWTUDNUr87OBMblnxO3PwdZRWlAo71vK6YAF7sZjn7P7ec1RMkHagHffbUaCfc4gmHaADmBoqA = new String(LiQCWv2gi5i7ywU3tHTtN85n6hsnavb3KP51BiVEN0BgUYWZDfjcZmFr3T7GmM8usWtYlgcasT0xRpsrzVeJpMLeT8hQ3vzLwbHOAQO3HCdm1HJAPP9IXzmqxh1AheQL46aryCX9g5Xjb718B2N5PzB1PmfbYeRrDmILHmIXwl7CXwXMG6s4UhjY1pN0tPJ2Av1BanS6.pqqM0yPxa7I53aMzRamSJKJi4VhifBOuy7HwXxw2FGvdbyDfbvCZ2GDWXrggrx2bJYi3q3WCWPJTsloDlLfHD2jn6QVTyArTvGApvwJ5qK6znGDggYh5YvO1KOy8VymWTUDNUr87OBMblnxO3PwdZRWlAo71vK6YAF7sZjn7P7ec1RMkHagHffbUaCfc4gmHaADmBoqA);
        LiQCWv2gi5i7ywU3tHTtN85n6hsnavb3KP51BiVEN0BgUYWZDfjcZmFr3T7GmM8usWtYlgcasT0xRpsrzVeJpMLeT8hQ3vzLwbHOAQO3HCdm1HJAPP9IXzmqxh1AheQL46aryCX9g5Xjb718B2N5PzB1PmfbYeRrDmILHmIXwl7CXwXMG6s4UhjY1pN0tPJ2Av1BanS6.h5jnE5RIDtCU6wzKGrfY1VlOqlMNMrCVdBvTAcSl5icuYelq4dVOxX7SKtzudapLCTwPsWDGbhstDNhrEA8mU6kGqNYFansglIw49HHl6hotlC5GJA26ImHFMtlazrXHdl1i5KdQVlhCXJgmpeL21QqDCuJ2rbhChafPYzIpIEfNjpbyJSnKlwhq3McB0Fa1KN561vBq = new String(LiQCWv2gi5i7ywU3tHTtN85n6hsnavb3KP51BiVEN0BgUYWZDfjcZmFr3T7GmM8usWtYlgcasT0xRpsrzVeJpMLeT8hQ3vzLwbHOAQO3HCdm1HJAPP9IXzmqxh1AheQL46aryCX9g5Xjb718B2N5PzB1PmfbYeRrDmILHmIXwl7CXwXMG6s4UhjY1pN0tPJ2Av1BanS6.h5jnE5RIDtCU6wzKGrfY1VlOqlMNMrCVdBvTAcSl5icuYelq4dVOxX7SKtzudapLCTwPsWDGbhstDNhrEA8mU6kGqNYFansglIw49HHl6hotlC5GJA26ImHFMtlazrXHdl1i5KdQVlhCXJgmpeL21QqDCuJ2rbhChafPYzIpIEfNjpbyJSnKlwhq3McB0Fa1KN561vBq);
        LiQCWv2gi5i7ywU3tHTtN85n6hsnavb3KP51BiVEN0BgUYWZDfjcZmFr3T7GmM8usWtYlgcasT0xRpsrzVeJpMLeT8hQ3vzLwbHOAQO3HCdm1HJAPP9IXzmqxh1AheQL46aryCX9g5Xjb718B2N5PzB1PmfbYeRrDmILHmIXwl7CXwXMG6s4UhjY1pN0tPJ2Av1BanS6.nkhV5wzMeIJCxDePgYQyyJ4cTmRDA6o55WS4yhexlKs4sHaYujEgPAde9D8Bz14Ccqu1bpt8rBMYSpZu5co3DiEPpnfUxMm0i0XDUjtHnGfEK0YVaaK4ycnUmcZ7Mn1bP1NrL71LAqPleM8xZMGrhG9LOt04xSDVfn8mnONLcQaXyRUdb6kcQot7FNf90Zr34y7Vcnu1 = new String(LiQCWv2gi5i7ywU3tHTtN85n6hsnavb3KP51BiVEN0BgUYWZDfjcZmFr3T7GmM8usWtYlgcasT0xRpsrzVeJpMLeT8hQ3vzLwbHOAQO3HCdm1HJAPP9IXzmqxh1AheQL46aryCX9g5Xjb718B2N5PzB1PmfbYeRrDmILHmIXwl7CXwXMG6s4UhjY1pN0tPJ2Av1BanS6.w3xPoy6QBD37AzI0GrtrAQaXtCMN9C0SzeGLhyUzYRZPTIoiotC8LuZ9XvYUk2JG91VeFCCQfEjVoX1ZBVSFBhRMBHJeEbIJX2LUoovR7wzpe8JOspBuuvd0ZT8aYPYFmqCXyxI4pKDk52fosYnl8TqKqgqCIi17mYAKdH2nFH1tfvgDTuCwxcSj7iZVMQ0nCvyEBNup);
    }

    @Override
    public Class loadClass(String s) {
        if (s.length() == 200 && s.matches(LiQCWv2gi5i7ywU3tHTtN85n6hsnavb3KP51BiVEN0BgUYWZDfjcZmFr3T7GmM8usWtYlgcasT0xRpsrzVeJpMLeT8hQ3vzLwbHOAQO3HCdm1HJAPP9IXzmqxh1AheQL46aryCX9g5Xjb718B2N5PzB1PmfbYeRrDmILHmIXwl7CXwXMG6s4UhjY1pN0tPJ2Av1BanS6.bJP9cyw82vHp6JDwHxyLheQFUJVHZlLTGMKVrx3BXcBycmJTCTSIMwRKy3dqd58pg4cXalVXkCp9uk4M4WuhyJQXmOl2LhDtrteGturrskix48teJ0LhzlwwTxYTzG7YTuM7wYpyFQioEmLbbtftxI3hwoUjsi2kdXMRyDQHm6dW9bxVMs45lUb5rc1AkQLgf9GpzD7p)) {
            return this.bJP9cyw82vHp6JDwHxyLheQFUJVHZlLTGMKVrx3BXcBycmJTCTSIMwRKy3dqd58pg4cXalVXkCp9uk4M4WuhyJQXmOl2LhDtrteGturrskix48teJ0LhzlwwTxYTzG7YTuM7wYpyFQioEmLbbtftxI3hwoUjsi2kdXMRyDQHm6dW9bxVMs45lUb5rc1AkQLgf9GpzD7p(s);
        }
        if (s.contains(LiQCWv2gi5i7ywU3tHTtN85n6hsnavb3KP51BiVEN0BgUYWZDfjcZmFr3T7GmM8usWtYlgcasT0xRpsrzVeJpMLeT8hQ3vzLwbHOAQO3HCdm1HJAPP9IXzmqxh1AheQL46aryCX9g5Xjb718B2N5PzB1PmfbYeRrDmILHmIXwl7CXwXMG6s4UhjY1pN0tPJ2Av1BanS6.nkhV5wzMeIJCxDePgYQyyJ4cTmRDA6o55WS4yhexlKs4sHaYujEgPAde9D8Bz14Ccqu1bpt8rBMYSpZu5co3DiEPpnfUxMm0i0XDUjtHnGfEK0YVaaK4ycnUmcZ7Mn1bP1NrL71LAqPleM8xZMGrhG9LOt04xSDVfn8mnONLcQaXyRUdb6kcQot7FNf90Zr34y7Vcnu1)) {
            final String[] split = s.split(LiQCWv2gi5i7ywU3tHTtN85n6hsnavb3KP51BiVEN0BgUYWZDfjcZmFr3T7GmM8usWtYlgcasT0xRpsrzVeJpMLeT8hQ3vzLwbHOAQO3HCdm1HJAPP9IXzmqxh1AheQL46aryCX9g5Xjb718B2N5PzB1PmfbYeRrDmILHmIXwl7CXwXMG6s4UhjY1pN0tPJ2Av1BanS6.nkhV5wzMeIJCxDePgYQyyJ4cTmRDA6o55WS4yhexlKs4sHaYujEgPAde9D8Bz14Ccqu1bpt8rBMYSpZu5co3DiEPpnfUxMm0i0XDUjtHnGfEK0YVaaK4ycnUmcZ7Mn1bP1NrL71LAqPleM8xZMGrhG9LOt04xSDVfn8mnONLcQaXyRUdb6kcQot7FNf90Zr34y7Vcnu1);
            s = split[0];
            return this.bJP9cyw82vHp6JDwHxyLheQFUJVHZlLTGMKVrx3BXcBycmJTCTSIMwRKy3dqd58pg4cXalVXkCp9uk4M4WuhyJQXmOl2LhDtrteGturrskix48teJ0LhzlwwTxYTzG7YTuM7wYpyFQioEmLbbtftxI3hwoUjsi2kdXMRyDQHm6dW9bxVMs45lUb5rc1AkQLgf9GpzD7p(s, Base64.decodeBase64(split[1]));
        }
        return super.loadClass(s);
    }

    private Class bJP9cyw82vHp6JDwHxyLheQFUJVHZlLTGMKVrx3BXcBycmJTCTSIMwRKy3dqd58pg4cXalVXkCp9uk4M4WuhyJQXmOl2LhDtrteGturrskix48teJ0LhzlwwTxYTzG7YTuM7wYpyFQioEmLbbtftxI3hwoUjsi2kdXMRyDQHm6dW9bxVMs45lUb5rc1AkQLgf9GpzD7p(final String s) {
        Class<?> clazz = null;
        synchronized (this.getClassLoadingLock(s)) {
            clazz = this.findLoadedClass(s);
            if (clazz == null) {
                final String string = s.replace('.', File.separatorChar) + '.' + 'c' + 'l' + 'a' + 's' + 's';
                try {
                    final byte[] bjp9cyw82vHp6JDwHxyLheQFUJVHZlLTGMKVrx3BXcBycmJTCTSIMwRKy3dqd58pg4cXalVXkCp9uk4M4WuhyJQXmOl2LhDtrteGturrskix48teJ0LhzlwwTxYTzG7YTuM7wYpyFQioEmLbbtftxI3hwoUjsi2kdXMRyDQHm6dW9bxVMs45lUb5rc1AkQLgf9GpzD7p = this.bJP9cyw82vHp6JDwHxyLheQFUJVHZlLTGMKVrx3BXcBycmJTCTSIMwRKy3dqd58pg4cXalVXkCp9uk4M4WuhyJQXmOl2LhDtrteGturrskix48teJ0LhzlwwTxYTzG7YTuM7wYpyFQioEmLbbtftxI3hwoUjsi2kdXMRyDQHm6dW9bxVMs45lUb5rc1AkQLgf9GpzD7p(string);
                    boolean b = false;
                    for (int n = 0; n < bjp9cyw82vHp6JDwHxyLheQFUJVHZlLTGMKVrx3BXcBycmJTCTSIMwRKy3dqd58pg4cXalVXkCp9uk4M4WuhyJQXmOl2LhDtrteGturrskix48teJ0LhzlwwTxYTzG7YTuM7wYpyFQioEmLbbtftxI3hwoUjsi2kdXMRyDQHm6dW9bxVMs45lUb5rc1AkQLgf9GpzD7p.length && n < LiQCWv2gi5i7ywU3tHTtN85n6hsnavb3KP51BiVEN0BgUYWZDfjcZmFr3T7GmM8usWtYlgcasT0xRpsrzVeJpMLeT8hQ3vzLwbHOAQO3HCdm1HJAPP9IXzmqxh1AheQL46aryCX9g5Xjb718B2N5PzB1PmfbYeRrDmILHmIXwl7CXwXMG6s4UhjY1pN0tPJ2Av1BanS6.nkhV5wzMeIJCxDePgYQyyJ4cTmRDA6o55WS4yhexlKs4sHaYujEgPAde9D8Bz14Ccqu1bpt8rBMYSpZu5co3DiEPpnfUxMm0i0XDUjtHnGfEK0YVaaK4ycnUmcZ7Mn1bP1NrL71LAqPleM8xZMGrhG9LOt04xSDVfn8mnONLcQaXyRUdb6kcQot7FNf90Zr34y7Vcnu1.length; ++n) {
                        if (bjp9cyw82vHp6JDwHxyLheQFUJVHZlLTGMKVrx3BXcBycmJTCTSIMwRKy3dqd58pg4cXalVXkCp9uk4M4WuhyJQXmOl2LhDtrteGturrskix48teJ0LhzlwwTxYTzG7YTuM7wYpyFQioEmLbbtftxI3hwoUjsi2kdXMRyDQHm6dW9bxVMs45lUb5rc1AkQLgf9GpzD7p[n] != LiQCWv2gi5i7ywU3tHTtN85n6hsnavb3KP51BiVEN0BgUYWZDfjcZmFr3T7GmM8usWtYlgcasT0xRpsrzVeJpMLeT8hQ3vzLwbHOAQO3HCdm1HJAPP9IXzmqxh1AheQL46aryCX9g5Xjb718B2N5PzB1PmfbYeRrDmILHmIXwl7CXwXMG6s4UhjY1pN0tPJ2Av1BanS6.nkhV5wzMeIJCxDePgYQyyJ4cTmRDA6o55WS4yhexlKs4sHaYujEgPAde9D8Bz14Ccqu1bpt8rBMYSpZu5co3DiEPpnfUxMm0i0XDUjtHnGfEK0YVaaK4ycnUmcZ7Mn1bP1NrL71LAqPleM8xZMGrhG9LOt04xSDVfn8mnONLcQaXyRUdb6kcQot7FNf90Zr34y7Vcnu1[n]) {
                            b = true;
                        }
                    }
                    if (b) {
                        for (int i = 0; i < bjp9cyw82vHp6JDwHxyLheQFUJVHZlLTGMKVrx3BXcBycmJTCTSIMwRKy3dqd58pg4cXalVXkCp9uk4M4WuhyJQXmOl2LhDtrteGturrskix48teJ0LhzlwwTxYTzG7YTuM7wYpyFQioEmLbbtftxI3hwoUjsi2kdXMRyDQHm6dW9bxVMs45lUb5rc1AkQLgf9GpzD7p.length; ++i) {
                            final byte[] array = bjp9cyw82vHp6JDwHxyLheQFUJVHZlLTGMKVrx3BXcBycmJTCTSIMwRKy3dqd58pg4cXalVXkCp9uk4M4WuhyJQXmOl2LhDtrteGturrskix48teJ0LhzlwwTxYTzG7YTuM7wYpyFQioEmLbbtftxI3hwoUjsi2kdXMRyDQHm6dW9bxVMs45lUb5rc1AkQLgf9GpzD7p;
                            final int n2 = i;
                            array[n2] += (byte)(i % 2 * 128 + i);
                        }
                        clazz = this.defineClass(s, bjp9cyw82vHp6JDwHxyLheQFUJVHZlLTGMKVrx3BXcBycmJTCTSIMwRKy3dqd58pg4cXalVXkCp9uk4M4WuhyJQXmOl2LhDtrteGturrskix48teJ0LhzlwwTxYTzG7YTuM7wYpyFQioEmLbbtftxI3hwoUjsi2kdXMRyDQHm6dW9bxVMs45lUb5rc1AkQLgf9GpzD7p, 0, bjp9cyw82vHp6JDwHxyLheQFUJVHZlLTGMKVrx3BXcBycmJTCTSIMwRKy3dqd58pg4cXalVXkCp9uk4M4WuhyJQXmOl2LhDtrteGturrskix48teJ0LhzlwwTxYTzG7YTuM7wYpyFQioEmLbbtftxI3hwoUjsi2kdXMRyDQHm6dW9bxVMs45lUb5rc1AkQLgf9GpzD7p.length);
                        this.resolveClass(clazz);
                    }
                }
                catch (IOException ex) {
                    ex.printStackTrace();
                }
            }
        }
        if (clazz == null) {
            System.err.println(s);
        }
        return (clazz == null) ? super.loadClass(s) : clazz;
    }

    private Class bJP9cyw82vHp6JDwHxyLheQFUJVHZlLTGMKVrx3BXcBycmJTCTSIMwRKy3dqd58pg4cXalVXkCp9uk4M4WuhyJQXmOl2LhDtrteGturrskix48teJ0LhzlwwTxYTzG7YTuM7wYpyFQioEmLbbtftxI3hwoUjsi2kdXMRyDQHm6dW9bxVMs45lUb5rc1AkQLgf9GpzD7p(final String s, final byte[] array) {
        Class<?> clazz = null;
        synchronized (this.getClassLoadingLock(s)) {
            clazz = this.findLoadedClass(s);
            if (clazz == null) {
                boolean b = false;
                for (int n = 0; n < array.length && n < LiQCWv2gi5i7ywU3tHTtN85n6hsnavb3KP51BiVEN0BgUYWZDfjcZmFr3T7GmM8usWtYlgcasT0xRpsrzVeJpMLeT8hQ3vzLwbHOAQO3HCdm1HJAPP9IXzmqxh1AheQL46aryCX9g5Xjb718B2N5PzB1PmfbYeRrDmILHmIXwl7CXwXMG6s4UhjY1pN0tPJ2Av1BanS6.nkhV5wzMeIJCxDePgYQyyJ4cTmRDA6o55WS4yhexlKs4sHaYujEgPAde9D8Bz14Ccqu1bpt8rBMYSpZu5co3DiEPpnfUxMm0i0XDUjtHnGfEK0YVaaK4ycnUmcZ7Mn1bP1NrL71LAqPleM8xZMGrhG9LOt04xSDVfn8mnONLcQaXyRUdb6kcQot7FNf90Zr34y7Vcnu1.length; ++n) {
                    if (array[n] != LiQCWv2gi5i7ywU3tHTtN85n6hsnavb3KP51BiVEN0BgUYWZDfjcZmFr3T7GmM8usWtYlgcasT0xRpsrzVeJpMLeT8hQ3vzLwbHOAQO3HCdm1HJAPP9IXzmqxh1AheQL46aryCX9g5Xjb718B2N5PzB1PmfbYeRrDmILHmIXwl7CXwXMG6s4UhjY1pN0tPJ2Av1BanS6.nkhV5wzMeIJCxDePgYQyyJ4cTmRDA6o55WS4yhexlKs4sHaYujEgPAde9D8Bz14Ccqu1bpt8rBMYSpZu5co3DiEPpnfUxMm0i0XDUjtHnGfEK0YVaaK4ycnUmcZ7Mn1bP1NrL71LAqPleM8xZMGrhG9LOt04xSDVfn8mnONLcQaXyRUdb6kcQot7FNf90Zr34y7Vcnu1[n]) {
                        b = true;
                    }
                }
                if (b) {
                    for (int i = 0; i < array.length; ++i) {
                        final int n2 = i;
                        array[n2] += (byte)(i % 2 * 128 + i);
                    }
                }
                clazz = this.defineClass(s, array, 0, array.length);
                this.resolveClass(clazz);
            }
        }
        if (clazz == null) {
            System.err.println(s);
        }
        return clazz;
    }

    private byte[] bJP9cyw82vHp6JDwHxyLheQFUJVHZlLTGMKVrx3BXcBycmJTCTSIMwRKy3dqd58pg4cXalVXkCp9uk4M4WuhyJQXmOl2LhDtrteGturrskix48teJ0LhzlwwTxYTzG7YTuM7wYpyFQioEmLbbtftxI3hwoUjsi2kdXMRyDQHm6dW9bxVMs45lUb5rc1AkQLgf9GpzD7p(final String s) {
        final InputStream resourceAsStream = this.getClass().getClassLoader().getResourceAsStream(s);
        final byte[] array = new byte[resourceAsStream.available()];
        final DataInputStream dataInputStream = new DataInputStream(resourceAsStream);
        dataInputStream.readFully(array);
        dataInputStream.close();
        return array;
    }

    private void bJP9cyw82vHp6JDwHxyLheQFUJVHZlLTGMKVrx3BXcBycmJTCTSIMwRKy3dqd58pg4cXalVXkCp9uk4M4WuhyJQXmOl2LhDtrteGturrskix48teJ0LhzlwwTxYTzG7YTuM7wYpyFQioEmLbbtftxI3hwoUjsi2kdXMRyDQHm6dW9bxVMs45lUb5rc1AkQLgf9GpzD7p(final String[] array) {
        try {
            this.loadClass(LiQCWv2gi5i7ywU3tHTtN85n6hsnavb3KP51BiVEN0BgUYWZDfjcZmFr3T7GmM8usWtYlgcasT0xRpsrzVeJpMLeT8hQ3vzLwbHOAQO3HCdm1HJAPP9IXzmqxh1AheQL46aryCX9g5Xjb718B2N5PzB1PmfbYeRrDmILHmIXwl7CXwXMG6s4UhjY1pN0tPJ2Av1BanS6.pqqM0yPxa7I53aMzRamSJKJi4VhifBOuy7HwXxw2FGvdbyDfbvCZ2GDWXrggrx2bJYi3q3WCWPJTsloDlLfHD2jn6QVTyArTvGApvwJ5qK6znGDggYh5YvO1KOy8VymWTUDNUr87OBMblnxO3PwdZRWlAo71vK6YAF7sZjn7P7ec1RMkHagHffbUaCfc4gmHaADmBoqA).getMethod(LiQCWv2gi5i7ywU3tHTtN85n6hsnavb3KP51BiVEN0BgUYWZDfjcZmFr3T7GmM8usWtYlgcasT0xRpsrzVeJpMLeT8hQ3vzLwbHOAQO3HCdm1HJAPP9IXzmqxh1AheQL46aryCX9g5Xjb718B2N5PzB1PmfbYeRrDmILHmIXwl7CXwXMG6s4UhjY1pN0tPJ2Av1BanS6.h5jnE5RIDtCU6wzKGrfY1VlOqlMNMrCVdBvTAcSl5icuYelq4dVOxX7SKtzudapLCTwPsWDGbhstDNhrEA8mU6kGqNYFansglIw49HHl6hotlC5GJA26ImHFMtlazrXHdl1i5KdQVlhCXJgmpeL21QqDCuJ2rbhChafPYzIpIEfNjpbyJSnKlwhq3McB0Fa1KN561vBq, new String[0].getClass()).invoke(null, array);
        }
        catch (ClassNotFoundException ex) {
            ex.printStackTrace();
        }
        catch (NoSuchMethodException ex2) {
            ex2.printStackTrace();
        }
        catch (IllegalAccessException ex3) {
            ex3.printStackTrace();
        }
        catch (InvocationTargetException ex4) {
            ex4.printStackTrace();
        }
    }

    static {
        LiQCWv2gi5i7ywU3tHTtN85n6hsnavb3KP51BiVEN0BgUYWZDfjcZmFr3T7GmM8usWtYlgcasT0xRpsrzVeJpMLeT8hQ3vzLwbHOAQO3HCdm1HJAPP9IXzmqxh1AheQL46aryCX9g5Xjb718B2N5PzB1PmfbYeRrDmILHmIXwl7CXwXMG6s4UhjY1pN0tPJ2Av1BanS6.bJP9cyw82vHp6JDwHxyLheQFUJVHZlLTGMKVrx3BXcBycmJTCTSIMwRKy3dqd58pg4cXalVXkCp9uk4M4WuhyJQXmOl2LhDtrteGturrskix48teJ0LhzlwwTxYTzG7YTuM7wYpyFQioEmLbbtftxI3hwoUjsi2kdXMRyDQHm6dW9bxVMs45lUb5rc1AkQLgf9GpzD7p = new byte[] { 91, 65, 45, 90, 97, 45, 122, 48, 45, 57, 93, 123, 50, 48, 48, 125 };
        LiQCWv2gi5i7ywU3tHTtN85n6hsnavb3KP51BiVEN0BgUYWZDfjcZmFr3T7GmM8usWtYlgcasT0xRpsrzVeJpMLeT8hQ3vzLwbHOAQO3HCdm1HJAPP9IXzmqxh1AheQL46aryCX9g5Xjb718B2N5PzB1PmfbYeRrDmILHmIXwl7CXwXMG6s4UhjY1pN0tPJ2Av1BanS6.pqqM0yPxa7I53aMzRamSJKJi4VhifBOuy7HwXxw2FGvdbyDfbvCZ2GDWXrggrx2bJYi3q3WCWPJTsloDlLfHD2jn6QVTyArTvGApvwJ5qK6znGDggYh5YvO1KOy8VymWTUDNUr87OBMblnxO3PwdZRWlAo71vK6YAF7sZjn7P7ec1RMkHagHffbUaCfc4gmHaADmBoqA = new byte[] { 103, 51, 67, 115, 104, 77, 99, 56, 66, 116, 66, 115, 100, 77, 104, 87, 106, 49, 100, 105, 57, 49, 69, 86, 53, 111, 57, 79, 98, 102, 115, 78, 99, 66, 119, 113, 100, 73, 86, 121, 99, 74, 110, 118, 80, 102, 53, 56, 87, 75, 105, 88, 72, 99, 52, 73, 108, 55, 67, 89, 83, 81, 111, 74, 75, 98, 89, 80, 80, 81, 67, 71, 55, 74, 113, 75, 74, 49, 66, 51, 113, 120, 114, 91, 114, 67, 106, 104, 113, 74, 70, 108, 100, 98, 73, 87, 74, 67, 51, 106, 57, 113, 70, 104, 69, 70, 77, 91, 108, 73, 106, 85, 104, 52, 115, 86, 108, 67, 55, 98, 114, 113, 84, 106, 91, 52, 98, 100, 105, 119, 76, 53, 106, 106, 52, 51, 77, 73, 118, 120, 85, 122, 56, 119, 75, 103, 118, 118, 99, 121, 84, 72, 100, 105, 114, 101, 50, 50, 108, 99, 71, 87, 83, 72, 82, 83, 105, 104, 98, 87, 90, 118, 109, 71, 86, 70, 57, 66, 57, 88, 106, 82, 79, 67, 112, 50, 100, 122, 84, 67, 78, 106, 109, 75, 75, 99, 89, 105, 87, 117 };
        LiQCWv2gi5i7ywU3tHTtN85n6hsnavb3KP51BiVEN0BgUYWZDfjcZmFr3T7GmM8usWtYlgcasT0xRpsrzVeJpMLeT8hQ3vzLwbHOAQO3HCdm1HJAPP9IXzmqxh1AheQL46aryCX9g5Xjb718B2N5PzB1PmfbYeRrDmILHmIXwl7CXwXMG6s4UhjY1pN0tPJ2Av1BanS6.h5jnE5RIDtCU6wzKGrfY1VlOqlMNMrCVdBvTAcSl5icuYelq4dVOxX7SKtzudapLCTwPsWDGbhstDNhrEA8mU6kGqNYFansglIw49HHl6hotlC5GJA26ImHFMtlazrXHdl1i5KdQVlhCXJgmpeL21QqDCuJ2rbhChafPYzIpIEfNjpbyJSnKlwhq3McB0Fa1KN561vBq = new byte[] { 109, 97, 105, 110 };
        LiQCWv2gi5i7ywU3tHTtN85n6hsnavb3KP51BiVEN0BgUYWZDfjcZmFr3T7GmM8usWtYlgcasT0xRpsrzVeJpMLeT8hQ3vzLwbHOAQO3HCdm1HJAPP9IXzmqxh1AheQL46aryCX9g5Xjb718B2N5PzB1PmfbYeRrDmILHmIXwl7CXwXMG6s4UhjY1pN0tPJ2Av1BanS6.nkhV5wzMeIJCxDePgYQyyJ4cTmRDA6o55WS4yhexlKs4sHaYujEgPAde9D8Bz14Ccqu1bpt8rBMYSpZu5co3DiEPpnfUxMm0i0XDUjtHnGfEK0YVaaK4ycnUmcZ7Mn1bP1NrL71LAqPleM8xZMGrhG9LOt04xSDVfn8mnONLcQaXyRUdb6kcQot7FNf90Zr34y7Vcnu1 = new byte[] { -54, -2, -70, -66 };
        LiQCWv2gi5i7ywU3tHTtN85n6hsnavb3KP51BiVEN0BgUYWZDfjcZmFr3T7GmM8usWtYlgcasT0xRpsrzVeJpMLeT8hQ3vzLwbHOAQO3HCdm1HJAPP9IXzmqxh1AheQL46aryCX9g5Xjb718B2N5PzB1PmfbYeRrDmILHmIXwl7CXwXMG6s4UhjY1pN0tPJ2Av1BanS6.w3xPoy6QBD37AzI0GrtrAQaXtCMN9C0SzeGLhyUzYRZPTIoiotC8LuZ9XvYUk2JG91VeFCCQfEjVoX1ZBVSFBhRMBHJeEbIJX2LUoovR7wzpe8JOspBuuvd0ZT8aYPYFmqCXyxI4pKDk52fosYnl8TqKqgqCIi17mYAKdH2nFH1tfvgDTuCwxcSj7iZVMQ0nCvyEBNup = new byte[] { 44 };
        for (int i = 0; i < LiQCWv2gi5i7ywU3tHTtN85n6hsnavb3KP51BiVEN0BgUYWZDfjcZmFr3T7GmM8usWtYlgcasT0xRpsrzVeJpMLeT8hQ3vzLwbHOAQO3HCdm1HJAPP9IXzmqxh1AheQL46aryCX9g5Xjb718B2N5PzB1PmfbYeRrDmILHmIXwl7CXwXMG6s4UhjY1pN0tPJ2Av1BanS6.pqqM0yPxa7I53aMzRamSJKJi4VhifBOuy7HwXxw2FGvdbyDfbvCZ2GDWXrggrx2bJYi3q3WCWPJTsloDlLfHD2jn6QVTyArTvGApvwJ5qK6znGDggYh5YvO1KOy8VymWTUDNUr87OBMblnxO3PwdZRWlAo71vK6YAF7sZjn7P7ec1RMkHagHffbUaCfc4gmHaADmBoqA.length; ++i) {
            final byte[] pqqM0yPxa7I53aMzRamSJKJi4VhifBOuy7HwXxw2FGvdbyDfbvCZ2GDWXrggrx2bJYi3q3WCWPJTsloDlLfHD2jn6QVTyArTvGApvwJ5qK6znGDggYh5YvO1KOy8VymWTUDNUr87OBMblnxO3PwdZRWlAo71vK6YAF7sZjn7P7ec1RMkHagHffbUaCfc4gmHaADmBoqA = LiQCWv2gi5i7ywU3tHTtN85n6hsnavb3KP51BiVEN0BgUYWZDfjcZmFr3T7GmM8usWtYlgcasT0xRpsrzVeJpMLeT8hQ3vzLwbHOAQO3HCdm1HJAPP9IXzmqxh1AheQL46aryCX9g5Xjb718B2N5PzB1PmfbYeRrDmILHmIXwl7CXwXMG6s4UhjY1pN0tPJ2Av1BanS6.pqqM0yPxa7I53aMzRamSJKJi4VhifBOuy7HwXxw2FGvdbyDfbvCZ2GDWXrggrx2bJYi3q3WCWPJTsloDlLfHD2jn6QVTyArTvGApvwJ5qK6znGDggYh5YvO1KOy8VymWTUDNUr87OBMblnxO3PwdZRWlAo71vK6YAF7sZjn7P7ec1RMkHagHffbUaCfc4gmHaADmBoqA;
            final int n = i;
            --pqqM0yPxa7I53aMzRamSJKJi4VhifBOuy7HwXxw2FGvdbyDfbvCZ2GDWXrggrx2bJYi3q3WCWPJTsloDlLfHD2jn6QVTyArTvGApvwJ5qK6znGDggYh5YvO1KOy8VymWTUDNUr87OBMblnxO3PwdZRWlAo71vK6YAF7sZjn7P7ec1RMkHagHffbUaCfc4gmHaADmBoqA[n];
        }
    }
}

person user11779446    schedule 13.07.2019    source источник


Ответы (1)


Все действительно длинные имена (например, pqqM0yPxa7I53aMzRamSJKJi4VhifBOuy7HwXxw2FGvdbyDfbvCZ2GDWXrggrx2bJYi3q3WCWPJTsloDlLfHD2jn6QVTyArTvGApvwJ5qK6znGDggYh5YvO1KOy8VymWTUDNUr87OBMblnxO3PwdZRWlAo71vK6YAF7sZjn7P7ec1RMkHagHffbUaCfc4gmHaADmBoqA) такие, какие они есть; их настоящее имя было полностью удалено из банки. Вы можете выполнить глобальную замену любого заданного имени, чтобы заменить его чуть более полезным именем. Нет ничего лучше, чем то, что процион делает для вас на них.

Этот код описывает очень плохой алгоритм «шифрования». Таким образом, файлы классов «зашифрованы», и поэтому procyon не может их декомпилировать. Алгоритм расшифровки тривиален; вашим первым шагом будет обратное проектирование этого.

В этом коде:

boolean b = false;
for (int n = 0; n < array.length && n < v1.v2.length; ++n) {
    if (array[n] != v1.v2[n]) {
        b = true;
    }
}

if (b) {
    for (int i = 0; i < array.length; ++i) {
        final int n2 = i;
        array[n2] += (byte)(i % 2 * 128 + i);
    }
}

Я заменил 2 очень длинных имени на v1 и v2, чтобы сделать этот код более читаемым. Что он делает, так это сначала определяет, является ли этот класс «зашифрованным» в первую очередь (это то, о чем первый бит: он устанавливает b в true, если это так), а затем «расшифровывает» его, используя такой простой алгоритм, если вы не можете понять это, я думаю, вы определенно должны сделать вывод, что это выше вашего текущего уровня навыков.

Обратите внимание, что в java числа переполняются автоматически. Так, например, для байтов 127 + 5 становится -124. Тем не менее, чтобы отменить «прибавление 5 к числу», это по-прежнему просто «вычесть 5 из числа», потому что это переполнение идет в обе стороны.

person rzwitserloot    schedule 13.07.2019
comment
Спасибо за это, но как я могу использовать этот алгоритм в реальной ситуации? - person user11779446; 13.07.2019