1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
  2. Данный раздел создан исключительно для релизов! Вопросы по лаунчеру или обвязке задавайте ТОЛЬКО в соответсвующей теме автора. Любые другие темы будут удалены, а авторы понесут наказание.

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

Идея Система зашиты от читеров

Тема в разделе "Веб-обвязки и лаунчеры", создана пользователем Alastar, 6 ноя 2012.

  1. nexus_mc

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

    Баллы:
    68
    Я это и пытаюсь донести до этого "супир java программиста",связь сервера и программы компьютера,так как программа будет чекать каждый шаг и сообщать серверу об этом,а там уже все ясно.Но мы же "самые умные".
     
  2. Holod

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

    Баллы:
    93
    Программу, исполняемую на машине пользователя всегда можно взломать.
    Главное, что байт код элементарно раскомпиливается и Java защита обходится на порядок проще, чем защита в бинарниках.


    image.jpg
     
  3. Shevchik

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

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    Достаточно просто серверного античита...
     
  4. Lord_of_the_Rings_Online

    Lord_of_the_Rings_Online Новичок Заблокирован

    Баллы:
    23
    Имя в Minecraft:
    Lord_of_the_Rings_On
    Против лома нет приёма OpenJDK
     
  5. saharin94

    saharin94 Старожил Пользователь Заблокирован

    Баллы:
    173
    Разработчики "защит" просто занимаются выкачиванием денег.
     
  6. Shevchik

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

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    Не все, но большинство - да.
    С другой стороны бомжи которые не могут включить даже антиксрй потому что их дно машина не тянет заслужили такого.
     
  7. nexus_mc

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

    Баллы:
    68
    В этом и тема.
    На компьютере юзера исполняемая программа,к примеру я могу написать на плюсах или vb.net (на плюсах опыта толком нет,но на вб в легкую).
    А java программа,работающая сообща с самим сервером и программой на машине юзера уже делает всю защиту.
    По сути,программа на машине юзера лишь сборщик нужной информации,которую все время игры будет чекать сам сервер.
     
  8. saharin94

    saharin94 Старожил Пользователь Заблокирован

    Баллы:
    173
    Но ничто не мешает его выпилить, либо посылать ложную информацию, что "всё ок". :)
    // суть: никогда нельзя полностью доверять клиенту, нужно проверять всё, что от него приходит.
     
  9. nexus_mc

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

    Баллы:
    68
    Опять же вернемся к гепотезе о программистах: программист есть комбинация лени и логики.
    Если напилить свору проверок и т.д. то большенство просто сдуется. это и нужно, 90% игроков уже слиты.
    Остальные 2% слишком ленивые и им это не нужно.Ну и 8% тех,кто желает заработать.Но вот незадача,я могу изменить пару функций и тем самым пофиксить,мне это не влом,а вот 8% уйдут.
    Ну,в общем-то,античит системой является администратор,который устраивает "магию защиты" с помощью программ и примочек ;)
     
  10. Holod

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

    Баллы:
    93
    82.7% Всех данных статистики берутся "с потолка".
     
    HoShiMin нравится это.
  11. nexus_mc

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

    Баллы:
    68
    хорошо
     
    Сникерсни нравится это.
  12. HoShiMin

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

    Баллы:
    173
    Предложу свой вариант системы. Возможно, кому-то покажется экзотическим (я тоже считаю его слегка вычурным, если так можно выразиться в отношении защиты), но всё же: пишем серверную обвязку на чистых сокетах, в лаунчере, соответственно, тоже. Никаких PHP-скриптов или чего-то общепринятого не используем, всё будет реализовываться напрямую между программами. Делаем двунаправленную связь так, чтобы сервер мог общаться с лаунчером, а лаунчер - с сервером. Дальше делаем стандартные проверки (рассчитываем, скажем, контрольные суммы - что угодно), устанавливаем соединение, посылаем данные серверу. Лучше всего посылать единую контрольную сумму, в которую войдут контрольные суммы файлов, лаунчера, соль (например, время её генерации), чтобы можно было проверить её правильность. Сервер, в свою очередь, обрабатывает данные, всё сверяет, после этого подключается напрямую к серверу, заносит игрока в белый список в зависимости от правильности данных, после этого посылает клиенту ответ, типа, можешь заходить. Клиент подключается, сервер это видит и как только игрок присоединился, вышвыривает игрока из белого списка. Пока игрок на сервере, удаление его из белого списка никак на нём не отразится, но стоит ему выйти с сервера - и больше он не зайдёт. Согласен, немного неудобно перезаходить через лаунчер, если вышел с сервера чтобы не убили, пока отлучился до ветру, но это всё мелочи. И на лаунчер навесить защиту. Тут, конечно, прорекламирую свой Периметр, раз уж такая пляска пошла. Авторизация и регистрация делается по тому же принципу (через сокеты), личный кабинет в лаунчере. Впрочем, это уже по выбору. Регистрация и работа с личным кабинетом ни на что не влияет, просто для единообразия - если делать через сокеты, то всё сразу.
    Что нам это даёт:
    1) Намного более быстрое общение между лаунчером и сервером
    2) Нет HTTP, перехватить тем же HTTPAnalyzer'ом данные не получится (но перехватить можно)
    3) Клиенту не нужна сессия
    4) Возможность слать любые данные по каналу, которые переслать в обычном (бесфайловом) POST-запросе не получится - даёт простор для алгоритмов шифрования
    5) Перехват данных не будет иметь смысла, т.к. перехват данных идёт уже "по факту", когда авторизация состоялась, а на подмену файлов не будет времени, да и лаунчер некоторое время после авторизации ещё сможет проверять данные, прежде чем его закроют. А если лаунчер не закроют, то можно проверять контрольные суммы файлов в автономном режиме или по запросу с сервера. А если при закрытии лаунчера закрывать процесс с майном (хэндл процесса джавы у нас есть, никаких проблем - делаем с процессом что угодно: свободно читаем и изменяем любой участок процесса), то можно в процессе игры сканировать память джавы на предмет внедрения какого-либо стороннего кода. Тут уже вопрос к знающим - по каким признакам можно определить внедрённый в процесс чужеродный код или подключенный отладчик? Да и можно ли?
    6) Сложность в определении алгоритма генерации контрольной суммы, так как алгоритмы хэширования (сделанные вручную), занимают большое количество кода даже на языках высокого уровня и даже там логика зачастую непонятна, про ассемблерный листинг и говорить нечего. Это даст гарантию, что никто не напишет генератор верных контрольных сумм
    7) Уникальность каждого захода на сервер - нельзя подключиться по одному нику (IP'у - неважно) дважды
    8) Сложно обойти, а чтобы поиграть с читами, использовать AttachAPI никто всерьёз не будет

    Минусы:
    1) Сложность реализации клиент-серверного взаимодействия через сокеты, особенно для школьников\си-диезщиков\джавистов, которые сокеты никогда "в руках не держали".
    2) Даже если предоставить вышеупомянутым кодерам готовую библиотеку, написать, как её грузить в память из ресурсов основного приложения, не таская отдельно с собой, чуть менее, чем всем будет лень писать собственные базы.
    3) Сложность в непосредственной отправке команд управления серверу (внесение и удаление игроков из белого списка).
    4) Наверняка вышеупомянутые кодеры сделают кривой велосипед, либо попытаются сделать программу такого вида на своём любимом шарпике\джавочке
    5) Так как сокеты - штука, требующая многопоточности (имею в виду синхронный режим), вангую многочисленные утечки памяти\незакрытые соединения.

    Ну и в завершение хочу сказать, что систему такого рода я в данный момент разрабатываю, обёртки над сокетами готовы (многопоточность, все дела), лаунчер готов, пишу серверную обвязку.
     
    Последнее редактирование: 27 дек 2013
    ПриветОтЛайки и OsipXD нравится это.
  13. Shevchik

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

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    Забыл про саму джаву, её ведь тоже можно замодить как надо.

    И да, сокеты на джаве пишутся быстро и легко, и никаких проблем с утечками нет.
     
  14. HoShiMin

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

    Баллы:
    173
    Вряд ли кто-то всерьёз будет этим заниматься. Школьники не осилят, а мастерам не по статусу с читами играть. Хотя ради профессионального интереса... Но всё равно, не тот масштаб.
    Не знал. Да это и не важно, я саму суть описал, как реализовывать - дело каждого. Но всё-таки, не понимаю, почему все упираются в джаву? Есть С/C++, Паскаль и ассемблер, в конце концов. Все 4 кроссплатформенные, и при этом программы на них так просто не взломаешь.
     
    Сникерсни и BleaZzZ нравится это.
  15. Shevchik

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

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    А почему ко мне этот вопрос?
    Меня как опенсорсника не волнует сокрытие кода моих программ и их защита.
     
    slavik123123123 нравится это.
  16. HoShiMin

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

    Баллы:
    173
    Да не в опенсорсе дело. Исходники лаунчера открывай, всё в порядке, но фактически, всем откроешь алгоритм генерации уникального ключа. Как технологию для создания - пожалуйста, но с припиской "алгоритм изменить под себя".
     
    DavidShabaev нравится это.
  17. Shevchik

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

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    Ещё раз, я то причём? Меня вообще клиентская защита не волнует ну никак.
     
  18. nexus_mc

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

    Баллы:
    68
    Я это все и пытался вам объяснить.
    Связь лаунчера,сервера и хост машины(как подрядчика между заходом пользователя и чеком).
    У меня уже есть лаунчер со всей этой херней,в том числе и ЛК в лаунчере находится.
    Единственное различие твоего от моего - белый лист.
    Я хочу написать плагин,который,получив от серверной программы положительный отзыв,ничего не делает,а получив отрицательный - кикает игрока с сообщением "читер ахтунг".
    Вот и все дела,товарищи.В режиме реального времени лаунчер будет смотреть и отсылать на сервер данные юзверя.А если зайти на сервер с выключенным лаунчером(тобишь батники и т.д.) То плагин НА СЕРВЕРЕ(тут его фиг ломанешь) Кикнет читера.

    Ну что,кто найдет лазейку,чтобы мне опять искать путь ее фикса?
     
  19. HoShiMin

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

    Баллы:
    173
    Вряд ли кто-то найдёт лазейку. Как ты эту систему взломаешь? Не совсем вдавался в подробности твоей системы, но мою можно взломать только узнав алгоритм генерации уникальной контрольной суммы, а для этого нужно взламывать лаунчер. А против взлома лаунчера есть хорошие инструменты, типа того же Периметра (самореклама, ага), или какие-нибудь другие... аналогичные... штуки. Но лаунчер надо писать на нормальных языках, а не на .NET/Java
     
  20. HoShiMin

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

    Баллы:
    173
    Что именно? И в чём минус? Игрокам не всё ли равно, как внутри всё устроено? Ввёл логин, пароль и играй на здоровье.
     
    Сникерсни нравится это.

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