Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Проверка на наличие пакета в jar файле

Тема в разделе "Модификации клиента", создана пользователем sashabelii, 22 мар 2014.

  1. Автор темы
    sashabelii

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

    Баллы:
    123
    Имя в Minecraft:
    sashabelii
    Доброго времени суток.
    Нужно сделать проверку наличия пакета внутри jar файла.

    Код:
    Код:
               
    ZipInputStream zip=new ZipInputStream(new FileInputStream(... + "/bin/minecraft.jar"));
                for(ZipEntry entry=zip.getNextEntry();entry!=null;entry=zip.getNextEntry())
    // if (....isпакет) ...
    // if (entry.getName() == "net") ...
    // System.out.println("Check!");
            System.out.println(entry.getName());
    
    Почему-то net не считается за пакет, хотя в пути(getName()) он присутствует:
    net/minecraft/client/ClientBrandRetriever.class
    Если это из-за обусификации, то как тогда искать?
     
  2. Хостинг MineCraft
    <
  3. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    К чему все это? А так ты найдешь java -cp jar.jar;minecraft.jar ?
     
  4. Автор темы
    sashabelii

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

    Баллы:
    123
    Имя в Minecraft:
    sashabelii
    Разве можно через сашка запускать Minecraft батником? Или я не до конца понимаю флаг -cp.
    Чтобы проверять наличие чит-пакетов(позже классов) и закрывать клиент + репорт на сайт.
     
  5. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Так универсалку еще никто не отменял.[DOUBLEPOST=1395469458,1395469347][/DOUBLEPOST]Тут нужна проверка уже совсем на другом уровне. А именно, нам нужно прверить urlclassloader нормальный ли он или с левой модификацией.
     
  6. Автор темы
    sashabelii

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

    Баллы:
    123
    Имя в Minecraft:
    sashabelii
    Код:
    String fileName = "C:\\a.jar";
    
    ...

    Код:
        // УО
       
            if ((new File(fileName)).exists()) {
              report = true;
              reason = 1;
            }
    
    Глупо, но людей, которые делают все по туториалу должно остановить.
     
  7. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Остановит на первый рас и только. Потом поменяют. От первой универсалки у меня есть нормальная проверка, от 2й еще нет.
     
  8. Автор темы
    sashabelii

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

    Баллы:
    123
    Имя в Minecraft:
    sashabelii
    Сейчас я даже с трудом понимаю, как сделать такую проверку. Я только учусь, и сейчас мне хватит проверки пакетов в корне jar файла. Если человек хоть раз пытался читерить - репорт на сайт и бан по ip.[DOUBLEPOST=1395469855][/DOUBLEPOST]
    Для этого у меня и есть репорт. Один раз остановит, я об этом узнаю и дам бан.
     
  9. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Это от первой универсалки.
    Код:
    -------------------------------------------------------------------------------------
            int t = 0;
            URLClassLoader ucl = (URLClassLoader)getClass().getClassLoader();
            java.net.URL[] urLs = ucl.getURLs();
            URL urls[] = ucl.getURLs();
            ArrayList<String> list = new ArrayList<String>();
            for (int i = 0; i < urLs.length; i++) {
                t++;
                list.add(urls[i].toString());
            }
            System.out.println("----------  "+t+"  -------------");
            System.out.println(list);
    -------------------------------------------------------------------------------------
    [DOUBLEPOST=1395469973,1395469929][/DOUBLEPOST]
    Смысл банить? Кнопочку креат аккаунт еще никто не отменял.
     
    sashabelii нравится это.
  10. Автор темы
    sashabelii

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

    Баллы:
    123
    Имя в Minecraft:
    sashabelii
    Бан по IP?
     
  11. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Ахах насмешил :D. Укажи хоть одного кто не с динамическим айпи и не юзает прокси.
    Или ты сразу всего провайдера банишь :D. Пол города в бан из за одного читака :D.
     
  12. Автор темы
    sashabelii

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

    Баллы:
    123
    Имя в Minecraft:
    sashabelii
    У среднестатистического читера не хватит мозгов, чтобы использовать прокси, поверь :)
     
  13. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Это ты так думаешь. А провайдер и динамический айпи? Для такого мозгов ненужно.
    Хотя это не мое дело, у вас же останется 5-10 игроков в конце таких банов. Я то пытаюсь устранить саму проблему, а не игроков.[DOUBLEPOST=1395470960,1395470769][/DOUBLEPOST]С одной стороны я даже рад что есть такие как вы. Нам больше игроков останется!
     
  14. Автор темы
    sashabelii

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

    Баллы:
    123
    Имя в Minecraft:
    sashabelii
    Как я уже писал, чтобы сделать хороший фикс, мне нужны опыт и знания, которых у меня сейчас нет. То, что я описывал выше - временное решение.
     
  15. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Самое простое решение это как майн онли. Качают свою жабу несмотря на то что лаунчер на жабе и ее проверяют.
     
  16. Автор темы
    sashabelii

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

    Баллы:
    123
    Имя в Minecraft:
    sashabelii
    Так я и хочу сделать в будущем.[DOUBLEPOST=1395472923,1395471711][/DOUBLEPOST]
    Код:
                int t = 0;
            URLClassLoader ucl = (URLClassLoader)getClass().getClassLoader();
            java.net.URL[] urLs = ucl.getURLs();
            URL urls[] = ucl.getURLs();
            ArrayList<String> list = new ArrayList<String>();
            for (int i = 0; i < urLs.length; i++) {
                t++;
                list.add(urls[i].toString());
            }
            System.out.println("----------  "+t+"  -------------");
            System.out.println(list);
    Дает путь до всех подгружаемых библиотек? Т.е. от сюда можно наблюдать за a.jar?
     
  17. Konstantin773

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

    Баллы:
    153
    Skype:
    Konstantin77313
    Имя в Minecraft:
    K773
    Данным способом можно заметить a.jar только в первой универсалке.
    Во второй нужно прибегать к рефлексии или ProtectionDomain классов.
     
  18. DragoSFire

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

    Баллы:
    123
    Skype:
    dragosfire2012
    Имя в Minecraft:
    DragoSFire
    Тоскать с собой jvm - это харкдор, но битоно не пробьют.
     
  19. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Напили в лс 2й способ проверки.
     
  20. Автор темы
    sashabelii

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

    Баллы:
    123
    Имя в Minecraft:
    sashabelii
    Можно ссылочку на второй обход?(видео или что там)[DOUBLEPOST=1395475070,1395473950][/DOUBLEPOST]Нагуглил[DOUBLEPOST=1395488534][/DOUBLEPOST]
    Спасибо за код, работает на ура.
     
  21. Defilak

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

    Баллы:
    78
    Имя в Minecraft:
    Defilak
    А Class.forName не работает чтоль?
     

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