Приветствую, форумчане. Знаю, эта тема уже сильно избита и разжевана, но я все же еще раз спрошу. Есть клиент игры, который надо защитить от изменения. Игра запускается от администратора. Игра сетевая. Нужно написать античит, но с условием что все должно работать без всяких служб и драйверов, т.к. игру могут запускать на win7 x64. Предположим, что злоумышленники тоже будут использовать ring3 only. Из моих способов защиты в голове крутятся только запрет SeDebugPrivilege всем открытым процессам и мониторинг процесса на целостность путем хэширования и отправки на сервер для проверки. Скорей всего это ламерские способы , поэтому хотелось бы услышать ваши советы или ссылки, где это все есть. Заранее благодарю.
Это, конечно, хорошо, но лучше самому написать. Пусть это будет много проще, но это будет свое и можно будет самому дорабатывать со временем. Можно немного по-подробней? Немного не понял, что вы имели ввиду..
Это ваше "своё", будет ломаться в 2 минуты (в отличии от вмпрота). Немного тоже не понял, отправлять всю игру на прокси сервер? O_o Так или иначе снифером можно проспуфить практически всё что угодно. Против читов поможет адекватная и правильная проверка вход. данных на стороне сервера. Большинство действий так же должно отыгриваться на стороне сервера, а не клиента. (доп нагруз на серв) upd: только что дошло что возможно требуется защита от автоклика и прочего.
И на x64 можно запускать драйвер, правда совсем чуток надо будет подтужится. Ну или купить сертификат, за около 100$ в год. Ну а вообще, и на уровне ring3 можно вполне достойную защиту организовать. UCP тому доказательство.
umberto Я имею ввиду следующее: пишем прокси-сервер и поднимаем его локально на компе геймера. Игра идет на прокси, прокси форвардит на сервер. Попутно подменяя одни байты на другие.
Я, видимо, плохо объяснил чего хотелось бы достичь Есть клиент игры, написан не мной, исходников игры нет. Есть плохие люди, которые через WriteProcessMemory затирают кой-какие байты по известным оффсетам и делают себя мегаигроками. Так вот, надо как то защититься от этого или, если это уже произойдет, сказать серверу, что этот редиска взломал игру. Инжекта может и не быть, достаточно WriteProcessMemory. Из предложенных мной выше вариантов - это превентивная мера - отрубать SeDebugPrivilege всем запущенным приложениям. Но тут меня смущает пара моментов - насколько это этично и процесс может быть скрытым, что потребует усиленного поиска таких процессов. И как противомера, если процесс уже был взломан, считывать те же байты по тем же известным оффсетам и отправлять серверу в виде хэша. Но, думаю, это будет довольно легко обойти.. ip_man, да, я знаю, что это будет ломаться за 2 минуты в умелых руках. Но цель - написать защиту, в которой сам буду разбираться и сумею подправить, когда будет найдена уязвимость. Сервер не большой, так что особо взламывать не будут (надеюсь ). Защита от автоклика не требуется. _DEN_, в потоке до сервера ничего менять не надо, надо защитить сам процесс. Или я опять что-то не понял?)
Booster, как? До словам других игроков? А если он реально хорошо играет? А если другие просто хотят его подставить? А вдруг читер аккуратно юзает читы и не палится, но в то же время всех выигрывает? Вопросов много, ответов меньше. Лучше сделать слабый античит, чем доверять словам игроков, тем более что никто не отменял использование обоих вариантов вместе.
Если клиент игры не запакован и не закриптован ничем - берём vmprotect и виртуализируем все процедуры, в которых потенциальный читер может внести изменения. p.s. чтобы писать в процесс дебаг привилегии не нужны, следовательно относительно ловли SeDebugPrivilege не прокатит. p.p.s. может тогда лучще ловить WriteProcessMemory во всех процессах?
Flasher может изняеться не код процедуры, а данные с которыми работает код. хотя я не знаю на что способен вмпрот, говорят вещь код в кашу превращает =)
umberto Вы вообще смотрели Cheat Engine ? Там, вроде бы, через ring0 память меняют. Да и в последнем ArtMoney есть драйвер уровня ring0. Так что вы идёте лесом!
umberto даже в вове в старых версиях писался телепорт с помощью артмоней, так что не надо ляля. А они написали так чтобы их не доставали тупыми вопросами школьники, потому что многое в онлайн играх проверяется на сервере.
spa, даже если и так, проблемы это не снимает. Я писал выше, что на данный момент не стоит задача написать уберантичит, который бы работал в ring -1 и знал все, что делается в ОС. И я знаю что нельзя написать такую защиту, которую нельзя будет сломать. Вопрос цены. На данный момент "цена" не так высока, но со временем, мб, будет увеличиваться. От знатоков сего форума хотелось бы услышать предпочтительные способы защиты, которые бы создавали достаточную защищенность приложений. Конечно, если вас не затруднит поделиться такими знаниями. Своими способы я предложил, но видимо они фиговые, если их никто даже не рассматривал
umberto можно просто читать данные самому, и поверять на изменения. Конечно еще зависит от того насколько эти изменения видны ( если код, то все сразу понятно )