Начну с того, что это мне нужно, потому что мой проект содержит довольно много эксклюзивных материалов, на создание которых я потратил много времени, и которые я не хотел бы видеть в других проектах (эксклюзив же).
Собственно что я имел ввиду под "максимальной защитой". Это как минимум защита от xdepa и возможности открыть в других программах. То есть оптимизатор-протектор Векса мне точно не подойдет.
Многие китайские карты не взламываются хдепом (ошибка с открытием war3map.w3i), крашат модел эдитор при попытке открыть через mpq браузер, а в mpq editor Ладика отображают только файлы .xxx и некоторые модели с текстурами с битыми названиями. Пример такой карты - Focs3 Another.
Я понимаю, что и это можно как-то ломануть, но мне нужно знать, как замутить такую защиту (на хгм были какие-то статьи про замену строчек, но я не особо понял, в какой именно файл карты это вставлять).

Принятый ответ

Aws, тогда мой вариант тебе идеально подходит, осталось решить какой необратимый хеш одновременно достаточно хорош и не слишком сложен в реализации. Я помню кто-то даже md5 на jass выкладывал тут на xgm, но, имхо, это изврат.
Принцип примерно такой:
  • игрок вводит команду вида "-code qwerty", где code это или универсальное ключевое слово для ввода кодов или уникальное для каждого кода, в зависимости от реализации, а qwerty это ключевое слово для конкретного кода
  • триггер отлавливает ввод первого ключевого слова "-code" и выделяет из строки второе ключевое слово "qwerty"
  • ключевое слово "qwerty" прогоняется через необратимую хеш-функцию и превращается в хеш "123456"
  • хеш "123456" сравнивается с записаным в карте хешем, циклом если команда "-сode" универсальная, или напрямую если у каждого кода есть своя команда
  • если хеш совпал, то выдаем плюшки, ну а если нет, то шлем нах
  • при попытке вскрыть карту кулхацкер обнаружит только "-code" и "123456", но не "qwerty", а значит не сможет правильно ввести команду в официальной версии карты
  • наличие алгоритма хеширования в карте не спасает кулхацкера т.к. алгоритм необоратимый и не может из "123456" получить "qwerty"
  • кулхацкер может поробовать подобрать ключевое слово, хеш которого совпадет с "123456", но если функция хеширования достаточно хороша, то он скорее начнет рвать волосы на жопе и визжа кататься по полу, чем у него это получится
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
26
6 лет назад
0
sleep, это да, если мультиплеерная карта популярна. Но зачем защищать кампании?
0
28
6 лет назад
0
prog, коды в виде команд, которые выдаются индивидуально тестерам после того, как они подтверждают прохождение ивента скринами или реплеем (либо за другие заслуги). Я их уже приучил не вводить их в общий чат.
8gabriel8, так у меня не кампания, а мультиплеерная карта, которая использует микс с ресурсами.
4
24
6 лет назад
4
Aws, тогда мой вариант тебе идеально подходит, осталось решить какой необратимый хеш одновременно достаточно хорош и не слишком сложен в реализации. Я помню кто-то даже md5 на jass выкладывал тут на xgm, но, имхо, это изврат.
Принцип примерно такой:
  • игрок вводит команду вида "-code qwerty", где code это или универсальное ключевое слово для ввода кодов или уникальное для каждого кода, в зависимости от реализации, а qwerty это ключевое слово для конкретного кода
  • триггер отлавливает ввод первого ключевого слова "-code" и выделяет из строки второе ключевое слово "qwerty"
  • ключевое слово "qwerty" прогоняется через необратимую хеш-функцию и превращается в хеш "123456"
  • хеш "123456" сравнивается с записаным в карте хешем, циклом если команда "-сode" универсальная, или напрямую если у каждого кода есть своя команда
  • если хеш совпал, то выдаем плюшки, ну а если нет, то шлем нах
  • при попытке вскрыть карту кулхацкер обнаружит только "-code" и "123456", но не "qwerty", а значит не сможет правильно ввести команду в официальной версии карты
  • наличие алгоритма хеширования в карте не спасает кулхацкера т.к. алгоритм необоратимый и не может из "123456" получить "qwerty"
  • кулхацкер может поробовать подобрать ключевое слово, хеш которого совпадет с "123456", но если функция хеширования достаточно хороша, то он скорее начнет рвать волосы на жопе и визжа кататься по полу, чем у него это получится
Принятый ответ
0
28
6 лет назад
0
prog, огромное спасибо! Буду использовать этот вариант.
2
24
6 лет назад
2
Aws, пара уточнений, просто на всякий случай
  • обфускация кода не обязательна для этого метода, но дополнительно усложнит жизнь кулхацкерам своим наличием
  • не уверен годится ли варовский хеш строки для этих целей т.к. не помню одинаков ли он в разных сессиях и нет ли к нему готового обратного алгоритма где-то в сети
  • у каждого кода должно быть свое уникальное ключевое слово "qwerty", хеш которого не должен совпадать с хешами других ключевых слов (случается если хеш-функция не самая удачная)
  • настоящее имя использованого хеш-алгоритма не должно попасть в руки кулхацкеру, если это не что-то вроде md5 т.к. многие необратимые алгритмы по проще уже были взломаны и на них есть обратная функция которая подбирает по хешу подходящую строку
  • ключевое слово "qwerty" нигде не должно появляться в карте, ни в строках, ни в комментариях, ни в коде, ни выложеное из кучек говна в комнате главного босса
  • ключевое слово "qwerty" должно быть невозможно угадать по названию того с чем оно связано, в идеале это должен быть случайный набор букв
  • не забудь поменять все коды при переходе на новую систему, чтобы те кто их узнал не честным путем не могли продолжать ими пользоваться (я бы, например, после добавления новой системы кодов на какое-то время оставил старые коды в карте, но с предупреждением что они скоро перестанут работать)
  • все кулхацкеры могут слать потоки ненависти в мой адрес, мне какраз немного не хватает для захвата мира
0
23
6 лет назад
0
а не проше через get http запрос делать если данные вернул успех значит верный код и данные если нет то выводит ошибка
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.