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

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

Проще написать серверный античит (который будет дружить с модами) и не париться. А лаунчеры ломают как семечки (на mmoru.com валяются). По сути, задачей лаунчера является: авторизация, скачивание/обновление клиента, запуск игры. Всё!
Я это и пытаюсь донести до этого "супир java программиста",связь сервера и программы компьютера,так как программа будет чекать каждый шаг и сообщать серверу об этом,а там уже все ясно.Но мы же "самые умные".
 
Программу, исполняемую на машине пользователя всегда можно взломать.
Главное, что байт код элементарно раскомпиливается и Java защита обходится на порядок проще, чем защита в бинарниках.


Люди и раньше ведь говорили что джава - это огромная дыра, но не верили.

image.jpg
 
Уже многие зафиксились, при замене rt.jar ничего не работает. Не долго прожил обход :).
Я это и пытаюсь донести до этого "супир java программиста",связь сервера и программы компьютера,так как программа будет чекать каждый шаг и сообщать серверу об этом,а там уже все ясно.Но мы же "самые умные".
Достаточно просто серверного античита...
 
Разработчики "защит" просто занимаются выкачиванием денег.
Не все, но большинство - да.
С другой стороны бомжи которые не могут включить даже антиксрй потому что их дно машина не тянет заслужили такого.
 
Программу, исполняемую на машине пользователя всегда можно взломать.
Главное, что байт код элементарно раскомпиливается и Java защита обходится на порядок проще, чем защита в бинарниках.




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

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

Ну и в завершение хочу сказать, что систему такого рода я в данный момент разрабатываю, обёртки над сокетами готовы (многопоточность, все дела), лаунчер готов, пишу серверную обвязку.
 
Последнее редактирование:
Забыл про саму джаву, её ведь тоже можно замодить как надо.

И да, сокеты на джаве пишутся быстро и легко, и никаких проблем с утечками нет.
 
Забыл про саму джаву, её ведь тоже можно замодить как надо.
Вряд ли кто-то всерьёз будет этим заниматься. Школьники не осилят, а мастерам не по статусу с читами играть. Хотя ради профессионального интереса... Но всё равно, не тот масштаб.
И да, сокеты на джаве пишутся быстро и легко, и никаких проблем с утечками нет.
Не знал. Да это и не важно, я саму суть описал, как реализовывать - дело каждого. Но всё-таки, не понимаю, почему все упираются в джаву? Есть С/C++, Паскаль и ассемблер, в конце концов. Все 4 кроссплатформенные, и при этом программы на них так просто не взломаешь.
 
А почему ко мне этот вопрос?
Меня как опенсорсника не волнует сокрытие кода моих программ и их защита.
 
А почему ко мне этот вопрос?
Меня как опенсорсника не волнует сокрытие кода моих программ и их защита.
Да не в опенсорсе дело. Исходники лаунчера открывай, всё в порядке, но фактически, всем откроешь алгоритм генерации уникального ключа. Как технологию для создания - пожалуйста, но с припиской "алгоритм изменить под себя".
 
Ещё раз, я то причём? Меня вообще клиентская защита не волнует ну никак.
 
Вряд ли кто-то всерьёз будет этим заниматься. Школьники не осилят, а мастерам не по статусу с читами играть. Хотя ради профессионального интереса... Но всё равно, не тот масштаб.

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

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

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

Назад
Верх