Защита приложения от измнения

Тема в разделе "WASM.WIN32", создана пользователем umberto, 26 дек 2011.

  1. umberto

    umberto New Member

    Публикаций:
    0
    Регистрация:
    26 дек 2011
    Сообщения:
    22
    Приветствую, форумчане.

    Знаю, эта тема уже сильно избита и разжевана, но я все же еще раз спрошу.

    Есть клиент игры, который надо защитить от изменения. Игра запускается от администратора. Игра сетевая.
    Нужно написать античит, но с условием что все должно работать без всяких служб и драйверов, т.к. игру могут запускать на win7 x64. Предположим, что злоумышленники тоже будут использовать ring3 only.

    Из моих способов защиты в голове крутятся только запрет SeDebugPrivilege всем открытым процессам и мониторинг процесса на целостность путем хэширования и отправки на сервер для проверки.

    Скорей всего это ламерские способы :), поэтому хотелось бы услышать ваши советы или ссылки, где это все есть.


    Заранее благодарю.
     
  2. newbie

    newbie New Member

    Публикаций:
    0
    Регистрация:
    2 дек 2008
    Сообщения:
    1.246
    ВМпрот юзай чтобы в твой бинарь рыло не сували :)
     
  3. h0t

    h0t Member

    Публикаций:
    0
    Регистрация:
    3 апр 2011
    Сообщения:
    735
    противоречие) но может приемлемое.
     
  4. K10

    K10 New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2008
    Сообщения:
    1.590
    Как это поможет от инжекта в процесс?
     
  5. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    umberto

    А как насчет того чтобы отправить игру на сервер через собственный прокси?
     
  6. umberto

    umberto New Member

    Публикаций:
    0
    Регистрация:
    26 дек 2011
    Сообщения:
    22
    Это, конечно, хорошо, но лучше самому написать. Пусть это будет много проще, но это будет свое и можно будет самому дорабатывать со временем.

    Можно немного по-подробней? Немного не понял, что вы имели ввиду..
     
  7. ip_man

    ip_man New Member

    Публикаций:
    0
    Регистрация:
    7 июн 2011
    Сообщения:
    43
    Это ваше "своё", будет ломаться в 2 минуты (в отличии от вмпрота).
    Немного тоже не понял, отправлять всю игру на прокси сервер? O_o
    Так или иначе снифером можно проспуфить практически всё что угодно.
    Против читов поможет адекватная и правильная проверка вход. данных на стороне сервера.
    Большинство действий так же должно отыгриваться на стороне сервера, а не клиента. (доп нагруз на серв)

    upd:
    только что дошло что возможно требуется защита от автоклика и прочего.
     
  8. Flasher

    Flasher Member

    Публикаций:
    0
    Регистрация:
    31 янв 2004
    Сообщения:
    640
    И на x64 можно запускать драйвер, правда совсем чуток надо будет подтужится. Ну или купить сертификат, за около 100$ в год.

    Ну а вообще, и на уровне ring3 можно вполне достойную защиту организовать. UCP тому доказательство.
     
  9. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    umberto
    Я имею ввиду следующее: пишем прокси-сервер и поднимаем его локально на компе геймера. Игра идет на прокси, прокси форвардит на сервер. Попутно подменяя одни байты на другие.
     
  10. umberto

    umberto New Member

    Публикаций:
    0
    Регистрация:
    26 дек 2011
    Сообщения:
    22
    Я, видимо, плохо объяснил чего хотелось бы достичь :)

    Есть клиент игры, написан не мной, исходников игры нет. Есть плохие люди, которые через WriteProcessMemory затирают кой-какие байты по известным оффсетам и делают себя мегаигроками. Так вот, надо как то защититься от этого или, если это уже произойдет, сказать серверу, что этот редиска взломал игру.

    Инжекта может и не быть, достаточно WriteProcessMemory.

    Из предложенных мной выше вариантов - это превентивная мера - отрубать SeDebugPrivilege всем запущенным приложениям. Но тут меня смущает пара моментов - насколько это этично и процесс может быть скрытым, что потребует усиленного поиска таких процессов.
    И как противомера, если процесс уже был взломан, считывать те же байты по тем же известным оффсетам и отправлять серверу в виде хэша. Но, думаю, это будет довольно легко обойти..

    ip_man, да, я знаю, что это будет ломаться за 2 минуты в умелых руках. Но цель - написать защиту, в которой сам буду разбираться и сумею подправить, когда будет найдена уязвимость. Сервер не большой, так что особо взламывать не будут (надеюсь :)).
    Защита от автоклика не требуется.

    _DEN_, в потоке до сервера ничего менять не надо, надо защитить сам процесс. Или я опять что-то не понял?)
     
  11. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Не понимаю всей этой возни. Разве нужен мега интеллект чтобы определить, что игрок читер?
     
  12. umberto

    umberto New Member

    Публикаций:
    0
    Регистрация:
    26 дек 2011
    Сообщения:
    22
    Booster, как? До словам других игроков? А если он реально хорошо играет? А если другие просто хотят его подставить? А вдруг читер аккуратно юзает читы и не палится, но в то же время всех выигрывает? Вопросов много, ответов меньше. Лучше сделать слабый античит, чем доверять словам игроков, тем более что никто не отменял использование обоих вариантов вместе.
     
  13. Flasher

    Flasher Member

    Публикаций:
    0
    Регистрация:
    31 янв 2004
    Сообщения:
    640
    Если клиент игры не запакован и не закриптован ничем - берём vmprotect и виртуализируем все процедуры, в которых потенциальный читер может внести изменения.

    p.s. чтобы писать в процесс дебаг привилегии не нужны, следовательно относительно ловли SeDebugPrivilege не прокатит.

    p.p.s. может тогда лучще ловить WriteProcessMemory во всех процессах? :)
     
  14. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    Flasher
    может изняеться не код процедуры, а данные с которыми работает код. хотя я не знаю на что способен вмпрот, говорят вещь код в кашу превращает =)
     
  15. T800

    T800 Member

    Публикаций:
    0
    Регистрация:
    7 дек 2006
    Сообщения:
    293
    Адрес:
    Moscow
    umberto
    Вы вообще смотрели Cheat Engine ? Там, вроде бы, через ring0 память меняют.
    Да и в последнем ArtMoney есть драйвер уровня ring0. Так что вы идёте лесом!
     
  16. umberto

    umberto New Member

    Публикаций:
    0
    Регистрация:
    26 дек 2011
    Сообщения:
    22
    T800, описание Cheat Engine:
    Функции ArtMoney аналогичны Cheat Engine'у.

    Они здесь никаким боком.
     
  17. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    umberto
    даже в вове в старых версиях писался телепорт с помощью артмоней, так что не надо ляля. А они написали так чтобы их не доставали тупыми вопросами школьники, потому что многое в онлайн играх проверяется на сервере.
     
  18. umberto

    umberto New Member

    Публикаций:
    0
    Регистрация:
    26 дек 2011
    Сообщения:
    22
    spa, даже если и так, проблемы это не снимает. Я писал выше, что на данный момент не стоит задача написать уберантичит, который бы работал в ring -1 и знал все, что делается в ОС.

    И я знаю что нельзя написать такую защиту, которую нельзя будет сломать. Вопрос цены. На данный момент "цена" не так высока, но со временем, мб, будет увеличиваться.

    От знатоков сего форума хотелось бы услышать предпочтительные способы защиты, которые бы создавали достаточную защищенность приложений. Конечно, если вас не затруднит поделиться такими знаниями. Своими способы я предложил, но видимо они фиговые, если их никто даже не рассматривал :)
     
  19. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    umberto
    можно просто читать данные самому, и поверять на изменения. Конечно еще зависит от того насколько эти изменения видны ( если код, то все сразу понятно )
     
  20. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Всему есть предел. Человек не может стрелять сквозь стены, сразу получать опыт бога и т.д.