Начну с того, что это мне нужно, потому что мой проект содержит довольно много эксклюзивных материалов, на создание которых я потратил много времени, и которые я не хотел бы видеть в других проектах (эксклюзив же).
Собственно что я имел ввиду под "максимальной защитой". Это как минимум защита от 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", но если функция хеширования достаточно хороша, то он скорее начнет рвать волосы на жопе и визжа кататься по полу, чем у него это получится
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
16
слишком специфичная задача. сколько занимаюсь, а защитой карт никогда не интересовался. не думаю, что здесь вообще есть спецы по такому уровню.
32
DracoL1ch, ну пусть берет и пакует модели или обьектные данные в отдельный архив с паролем а с помощью мемхака вызывает дллку для распаковки и функцию чтения мпк, но опять же то что архиваторами не доберутся до данных их не остановит выудят из оперативки или пойдут путем реверс инженеринга.
16
ну нет, чтоб из оперативки читать, эти модели должны иметь такую стоимость на рынке. Да и даже с мемхаком - весь код-то на ладони
32
DracoL1ch, байткоды не на руках, длл с шифрованием - ассемблер, разбираться придется долго, геморно - мамины читоры сразу сдуются, а те кто шарит разумеется сможет обойти.
28
8gabriel8, это все понятно, но я выше объяснил, что в моей карты используются коды на визуальные плюшки (маски, спреи, крылья, насмешки, альтернативные скины). Все модели и скины у меня в миксе, а вот коды в карте. Хотелось бы коды защитить от взлома.
DracoL1ch, два года назад Ванек в своем блоге две статьи выложил, в которых я пытаюсь разобраться. Его кстати тогда тоже забили за то, что он развивает эту тему и никому защита не нужна.
Просто я сейчас проезжают кучу деревень, а у всех заборы. У кого-то шатающиеся ветхие, а у кого-то огромные железные. Через любой из этих заборов при желании можно пройти на участок. Но тогда вопрос: зачем люди их ставят? Разве изначальная мотивация "для красоты"?
24
Aws, коды в виде команд или генерируемый индивидуальный лоадкод?
Если коды фиксированные, то один из вариантов - запилить алгоритм необратимого хеширования вроде md5, можно и по проще, а в карте хранить только хеши от этих кодов и сравнивать с хешами от введенной игроком команды.
Тогда вскрытие карты не будет иметь никакого значения т.к. необратимый хеш превратить в правильный код это геморой которым никто не будет заниматься. Офк, работает только если коды передаются тестерам напрямую, а не получаются из карты. Главный недостаток фиксированных кодов - нужно приучать тестеров вводить их так чтобы никто не видел.
25
защита карты - это рак
Защита карты - защита от неофф версий и читосов, которые вскрывают карту и делают триггеры уровня:
Игрок красный ввел в чат -1
действие: Игрок красный получил 999999999999 голды.
26
sleep, это да, если мультиплеерная карта популярна. Но зачем защищать кампании?
28
prog, коды в виде команд, которые выдаются индивидуально тестерам после того, как они подтверждают прохождение ивента скринами или реплеем (либо за другие заслуги). Я их уже приучил не вводить их в общий чат.
8gabriel8, так у меня не кампания, а мультиплеерная карта, которая использует микс с ресурсами.
24
Aws, тогда мой вариант тебе идеально подходит, осталось решить какой необратимый хеш одновременно достаточно хорош и не слишком сложен в реализации. Я помню кто-то даже md5 на jass выкладывал тут на xgm, но, имхо, это изврат.
Принцип примерно такой:
  • игрок вводит команду вида "-code qwerty", где code это или универсальное ключевое слово для ввода кодов или уникальное для каждого кода, в зависимости от реализации, а qwerty это ключевое слово для конкретного кода
  • триггер отлавливает ввод первого ключевого слова "-code" и выделяет из строки второе ключевое слово "qwerty"
  • ключевое слово "qwerty" прогоняется через необратимую хеш-функцию и превращается в хеш "123456"
  • хеш "123456" сравнивается с записаным в карте хешем, циклом если команда "-сode" универсальная, или напрямую если у каждого кода есть своя команда
  • если хеш совпал, то выдаем плюшки, ну а если нет, то шлем нах
  • при попытке вскрыть карту кулхацкер обнаружит только "-code" и "123456", но не "qwerty", а значит не сможет правильно ввести команду в официальной версии карты
  • наличие алгоритма хеширования в карте не спасает кулхацкера т.к. алгоритм необоратимый и не может из "123456" получить "qwerty"
  • кулхацкер может поробовать подобрать ключевое слово, хеш которого совпадет с "123456", но если функция хеширования достаточно хороша, то он скорее начнет рвать волосы на жопе и визжа кататься по полу, чем у него это получится
Принятый ответ
28
prog, огромное спасибо! Буду использовать этот вариант.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.