Как улучшить сверку больших файлов?

  • Автор темы Автор темы Maksim
  • Дата начала Дата начала
  • Теги Теги
    с++
Не стоит с этим сильно заморачиваться, так как если захотят - в любом случае ломанут.
именно поэтому "прихрдкоривание" никогда не должно быть в одном месте и не должно быть таким простым

на клиент можно поставить 3-4 растяжки - нечто вроде что делает ТС, код интерфейса (как минимум md5\примитивные привязки), флажок сервер>клиент, защиты типа сг\аа и всё это переплетено друг с другом (по возможности)
такая связка не то, что бы что-то исключит подмены, но создаст хороший клубок из зависимостей
 

Запихай файлы в экзешник и накрой какой-нибудь колбасой чтобы анпакать задолбались.
 
Можно еще чекать хэши только это когда реально необходимо, т.е. когда размер или время у файла поменялись.
А данные о ранее вычисленном хэше и корректном времени хранить в потоке файла.
Ну и для большей надежности для больших файлов к примеру можно какой-то кусок/куски из всего объема проверять каждый раз на тему изменения их хэша.
 
именно поэтому "прихрдкоривание" никогда не должно быть в одном месте и не должно быть таким простым

на клиент можно поставить 3-4 растяжки - нечто вроде что делает ТС, код интерфейса (как минимум md5\примитивные привязки), флажок сервер>клиент, защиты типа сг\аа и всё это переплетено друг с другом (по возможности)
такая связка не то, что бы что-то исключит подмены, но создаст хороший клубок из зависимостей
Именно поэтому и говорю - зачем париться? Лучше на стороне клиента сделать базовые вещи (проверки по хэшу файлов/рандомных блоков, шифрование файлов данных нестандартным ключом и т.п.). А уже остальные вещи хэндлить на стороне сервера. Например, если задача ограничить использование интерфейсов с автозаточкой и т.п. - сетапим троттлинг для пакетов, отвечающих за это.
 
Именно поэтому и говорю - зачем париться? Лучше на стороне клиента сделать базовые вещи (проверки по хэшу файлов/рандомных блоков, шифрование файлов данных нестандартным ключом и т.п.). А уже остальные вещи хэндлить на стороне сервера. Например, если задача ограничить использование интерфейсов с автозаточкой и т.п. - сетапим троттлинг для пакетов, отвечающих за это.
С таким же успехом можно сделать свой бэк подменив банально в хостах адрес и валидировать это на стороне клиента как валидную дату и потом передавать управление на реальный адрес для подключения на порты.
Т.е. данный оратор шарит о чем говорит.
 
Последнее редактирование:
С таким же успехом можно сделать свой бэк подменив банально в хостах адрес и валидировать это на стороне клиента как валидную дату и потом передавать управление на реальный адрес для подключения на порты.
Т.е. данный оратор шарит о чем говорит.
Может ты не мое сообщение прочитал? Никак не могу сопоставить твой написанный текст к своему. Зачем писать свой бэк, если можно обойти все это просто переходя сразу в блок с обработкой валидного респонса? Я и вел к тому, что эту часть в любом случае можно ломануть, так чего над ней сильно заморачиваться? Просто защиту от дурачка сделать и все.

По поводу подмены бэка не понял прикола. Просвети несведущего. :unsure:
 
По поводу подмены бэка не понял прикола. Просвети несведущего. :unsure:
Ты серьезно ? Подымаешь локально допустим тот же веб, берем в учет что верификация на веб сервере. Предварительно получаем валидные ответы с "официального сервера", пишем аналог и хостим у себя, прописываем в хосты "оф. сервак". Этот вариант вообще для дуболомов, которые не уметь в реверс.
Профит ?
 
Ты серьезно ? Подымаешь локально допустим тот же веб, берем в учет что верификация на веб сервере. Предварительно получаем валидные ответы с "официального сервера", пишем аналог и хостим у себя, прописываем в хосты "оф. сервак". Этот вариант вообще для дуболомов, которые не уметь в реверс.
Профит ?
Хах) я таким образом пейн тим «хакал»
 
Ты серьезно ? Подымаешь локально допустим тот же веб, берем в учет что верификация на веб сервере. Предварительно получаем валидные ответы с "официального сервера", пишем аналог и хостим у себя, прописываем в хосты "оф. сервак". Этот вариант вообще для дуболомов, которые не уметь в реверс.
Профит ?
А при чем здесь это к тому, что я сказал? :) Я ни слова не обмолвил об обработке на стороне сервера кроме троттлинга запросов.
Под базовыми вещами я имел в виду базовые проверки client only. Без какого либо бэка, уж тем более веб. :)

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

Ну а если брать самую эффективную защиту - хостить файлы с данными, кроме текстур/моделей/анимаций/звуков/роликов, и таким образом получится что-то вроде лайтвэйт "твич" стрима :pandaredlol: Ну или вообще все данные хранить на сервере, а юзеру возвращать видеопоток :pandaredlol:

Вообщем, на профессиональность и правильность не претендую, лишь расписал как я считаю и чего придерживаюсь. Поэтому буду рад почитать опровержение, если оно будет. :Coffee:
 
Написал по алгоритму пока читал книгу по шифрации и прочее, здесь crc32.
В своей версии далеко ушел и там уже все на сокетах + xxHash.

Настройка простая переключаете на true конфиг в самом верху, закидываете в папку system от игры и генерируете файл.
Далее в исходниках заменяем кусок кода в самом низу и переключаем на false в верху.
После компиляции собираем и тестим меняя байты у файлов в System или Maps, только обязательно положите в папку System.
 

Вложения

Написал по алгоритму пока читал книгу по шифрации и прочее, здесь crc32.
В своей версии далеко ушел и там уже все на сокетах + xxHash.

Настройка простая переключаете на true конфиг в самом верху, закидываете в папку system от игры и генерируете файл.
Далее в исходниках заменяем кусок кода в самом низу и переключаем на false в верху.
После компиляции собираем и тестим меняя байты у файлов в System или Maps, только обязательно положите в папку System.
Выглядит крайне странно, но видно что стараешься.
 
Назад
Сверху Снизу