__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
в теории подмени карту нагло заменив без манипуляций зайди на xashds и должно пройти)
если не прет лезем в исходник и палим как Дядя Миша верифицирует файлы клиента и сервака, форсируем на свой даст2 контрольную сумму оригинала ну и читерим)
ну сдампить checksum оригинала, ну а потом в условие вычесление чексумы по названию файла вернуть сумму оригинала, сервер сверит данные скажет все ок заходите.
А мне в голову первой мыслью пришла подделка пакета, отправляемого серверу с другой контрольной суммой . Вот правда я не знаю на сколько это возможно...
И да, очередной раз убеждаемся в том, что встроенный функционал по снятию скнимков экрана и их передачи просто обязан быть в сетевых играх.
Цитата:
Дядя Миша писал: Не знаю как в халфе, а в ксаше валидация ресурсов происходит, собственно уже после загрузки карты в память.
То есть там чота подменить не получится.
qpAHToMAS писал: А мне в голову первой мыслью пришла подделка пакета, отправляемого серверу с другой контрольной суммой
дык серверу ничего не отправляется. Клиент сравнивает чексумму от сервера с тем, что у него получилось и обрывает соединение.
Можно похитрее сделать - рассчитать чексумму два раза.
Первый раз - при приходе svc_serverdata, когда мы уже имеем имя карты и чексумму. Если она не совпадет, делаем вид что всё в порядке, а сами беспаливно шлем на сервер информацию про читёра. Ну и продолжаем процесс соединения. А затем уже по окончанию загрузки сравниваем CRC еще раз и дисконнектим клиента. Впрочем даже если его не дисконнектить, то он через 60 секунд он отвалится сам, поскольку заранее предупрежденный сервер попросту не будет слать ему апдейты.
Впрочем подобные защиты хороши только проектах с закрытыми сорцами.
Практика показывает что это самый надежный и устойчивый метод от взлома - когда в программу изначально закладывается возможность того, что её взломают в каком-то месте. В этом случае она делает вид, что хакер задачу выполнил, а скажем, через 15 минут работы начинает сыпать адскими полурандомными глюками в совершенно постороннем месте. И пока ты сообразишь в чём же там на самом деле было дело - уйдет немало времени.
Дядя Миша писал: дык серверу ничего не отправляется. Клиент сравнивает чексумму от сервера с тем, что у него получилось и обрывает соединение.
А я то думал, что клиент отсылает серверу CRC своей карты, а сервер уже после сравнения отвечает вердиктом, пускать его на сервер или нет .
Цитата:
Дядя Миша писал: Практика показывает что это самый надежный и устойчивый метод от взлома - когда в программу изначально закладывается возможность того, что её взломают в каком-то месте. В этом случае она делает вид, что хакер задачу выполнил, а скажем, через 15 минут работы начинает сыпать адскими полурандомными глюками в совершенно постороннем месте. И пока ты сообразишь в чём же там на самом деле было дело - уйдет немало времени.
Ну, на сколько я знаю, так VAC (VALVe Anti-Cheat) действует. Находит читера-клиента и банит его после random'ного промежутка времени.
И еще, если заменить карту как в том "туториале", то внешне карта будет отличаться, но конечно же бегать ты будешь по прежнему в карте-оригинале. Это получается, что клиент принимает "материальность" карты себе и использует ее?
Добавлено 27-11-2011 в 13:14:
А почему MD5 не используется, а именно CRC? Быстрее?
qpAHToMAS писал: Это получается, что клиент принимает "материальность" карты себе и использует ее?
только для предиктинга. То есть если в ложной карте будет проём, а на оригинальной - стена, то попытавшись пройти в этот проём получим глюк предиктинга, когда игрока швырнет обратно.
Как глюки предиктинга способствуют читёрству - это отдельный интересный вопрос.
Цитата:
qpAHToMAS писал: А почему MD5 не используется, а именно CRC? Быстрее?
А вообще, я тут позабавился с отправкой клиентских пакетов игры на HLDS, получилось интересно, ведь можно несколькими сообщениями добавить в таблицу игроков на сервере нового игрока с желаемым никнеймом, буд-то тот подключается к серверу.
Если в цикле добавить несколько таких "игроков", то к серверу вообще ни кто не сможет подключиться некоторое время (пока фейков по тайм-ауту не выкинет с сервера).
PS:
Я не много знаю о UDP, но меня глючит, либо возможна ситуация отправки UDP пакетов при остутствии (закрытии) процесса-отправителя как такового?