XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Желтая пресса: обучающие статьи
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

 
_Red

offline
Опыт: 4,095
Активность:
Основы протекта

Вступление

Много людей любят ссылаться на ручной протект, мол иди протекть "ручками", но на ХГМ нет даже мало-мальской статьи по протекту, я решил исправить этот недостаток и сейчас вы прочтете мою статью

Точного ответа на вопрос "как протектить" не существует ибо для каждой карты протект индивидуален и сложно описать процесс протекта в общих чертах, но я попробую
статья расчитана на то что вы знаете jass хотя бы на среднем уровне

Собственно сам протект

  1. Необходимо произвести обфускацию кода (все функции, переменные и сами триггеры называть неадекватно или по своей системе. Например триггер A01, переменная Gk2, функция ЕН3. Только автор будет знать расшифровку. Даже профи хорошо читающий джасс не будет ковырять 20000 строк твоей писанины и расшифровывать сокращения)
» прим.
с этой задачей хорошо справляется Wc3 Text File Optimizer (кнопочка Tweaks)
скачать
  1. Поставить проверку чего-либо на карте: ресурса, юнита, региона, опыта героя (если кто-то добавит и заюзает читы - твой кусок кода это словит и дальше клозай игру)
» прим.
под "клозать" игру подрузамивается использование функций
call ExecuteFunc("!") и подобных которые вызовут вылет игры
  1. Можно использовать следующий код
Функция1:
function test takes nothing returns nothing
local timer t = CreateTimer()
call BJDebugMsg(I2S(GetHandleId(t)))
endfunction
Результат будет примерно таким 1045670
если на карту добавить еще юнитов, (триггеров, или чего другова) то значение будет изменятся, т.е. перед протектом зафиксировать это число и провести проверку чтото типо такой
Функция2:
function test takes nothing returns nothing
local timer t = CreateTimer()
if not(GetHandleId(t)==1045670) then
call ExecuteFunc("!")
endif
endfunction
Поскольку ExecuteFunc в карте может быть очень много то взломщик сразу и не найдет нужный, а если сделать например так
Функция3:
function baybay takes nothing returns nothing
call ExecuteFunc(“baybay”)
endfunction

function test takes nothing returns nothing
local timer t = CreateTimer()
if not(GetHandleId(t)==1045670) then
call ExecuteFunc("baybay")
endif
endfunction
Это вызовет просто вылет игры, не выскочит даже Critical Error
Такая реакция не опытного взломщика поставит в тупик
Самое главное - всё это незаметно вплести где-нибудь по центру кода и сделать 5-6 проверок на переменную, допустим, тобишь если после этого всего игрок будет всё еще играть - проводить еще какое-нибудь интересное действие, например, отображение несуществующего изображения (путь к файлу написать наугад).
Самое главное не забудте удалить функцию1 после протекта

Никогда не выводите сообщений типа "Красный игрок - читер!"
Это только облегчит жизнь взломщику, ибо найти такое сообщение будет легко

Благодарности

Благодарю пользователей которые отвечали в этой теме благодаря которой я написал эту статью
Тема открыта для здравой критики
Старый 08.12.2009, 22:19
Lazdakon
/dev/null
offline
Опыт: 46,270
Активность:
эти способы я слышал и от Vexorian, это не статья, а можно так назвать, советы совсем уж новичкам.
Старый 08.12.2009, 22:39
_Red

offline
Опыт: 4,095
Активность:
что ж, если это так банально почему же никто не описал эти советы... странно, возникает ощущение что знает об этом только узкий круг лиц
Старый 08.12.2009, 22:48
FunkieFoO

offline
Опыт: 7,059
Активность:
Самые простенькие способы, я их месяца 3 назад где то читал, статья короткая, имхо
а как же пример на добавление/изменение/удаление триггера/функции? для начала не плохо, молодец
Старый 08.12.2009, 22:51
Lazdakon
/dev/null
offline
Опыт: 46,270
Активность:
банально потому, что вероятно кроме тех, кто как нибудь не знает Jass, это никто использовать не будет. НА их взгляд, легче воспользоваться программами данного рода.
Старый 08.12.2009, 23:00
FunkieFoO

offline
Опыт: 7,059
Активность:
Ну эти программы же не делают анти-взлом системки, они просто протектят карту от открытия ее в ВЕ, автор же нам поведал о защите от редактирования уже открытой карты... молодец, имхо, но статью нужно дополнить
Старый 08.12.2009, 23:05
Freezen
Тут должен быть бред
offline
Опыт: 1,717
Активность:
_Red, неплохо, как квадрат Малевича. Вроде бы и просто, и банально, но до этого никто не додумался написать статью -).
Старый 08.12.2009, 23:07
Скайнет
Kicked by ZlaYa1000
offline
Опыт: 8,234
Активность:
Первопроходец нашёлся (статья), неплохо, но маловато :).
Старый 09.12.2009, 18:47
YellowStar
poon
offline
Опыт: 15,144
Активность:
Лол. Ты хоть примеры локально синхронизируи. Вылетит не только читер -.- - т.е если пишешь для нупкох, то и пиши грамотные примеры копипаст.

Теперь ближе к делу, читеры - взломают карту все равно, даи мне карту куда я не добавлю свои кастомныи код -.-
Старый 10.12.2009, 16:28
Скайнет
Kicked by ZlaYa1000
offline
Опыт: 8,234
Активность:
narayan, тут кто-то что-то сказал о 100% защите?
Конечно указанное не спасение ни от чего, скорее это сыграет как ещё один этап, который остановит какой-то % читеров.
Старый 10.12.2009, 16:44
YellowStar
poon
offline
Опыт: 15,144
Активность:
Не шарите. Можно сделать защиту 100. Если старатся можно и самых прытких отсеить. Почему бы не сделать просто так.
каждую секунду ставим золото записанное в переменнои. найти почти не реально. переменую апдеитить по времени итд.
Старый 10.12.2009, 16:50
silumin

offline
Опыт: 11,153
Активность:
narayan, а если золото не является игровой ценностью?
_Red, молодец, начало положено. Уверен, что статья будет дополняться.
Старый 10.12.2009, 17:05
RazArt

offline
Опыт: 11,197
Активность:
narayan, угу, можно на все 100% запротектить, тока её вар читать не будет %) Например криптография...

RazArt добавил:
silumin, а разница?
Старый 10.12.2009, 19:07
SRes
1110101000
offline
Опыт: 9,997
Активность:
100% Защиты нету и не бывает в природе. Все что можно прочитать - может прочитать тот, кому это понадобиться. Но отогнать от этой мысли можно и таким протектом.
narayan, Я заметил как ты сильно стал себя восхвалять. А сам-то ничего не сделал, тебя просили в личку отослать - хрен. Ты вирус в варе написал ? Ага, лол, конечно ! :D
Старый 10.12.2009, 19:51
silumin

offline
Опыт: 11,153
Активность:
Цитата:
Сообщение от RazArt
RazArt добавил:
silumin, а разница?
Ты подумал или так, очередной "гениальный" вопрос?
Я просто не представляю зачем в карту встраивать свой читерный триггер для обретения n-ной суммы золота в игре из ниоткуда, если это золото в игре вообще не задействовано?..
В этом и есть бессмысленность написанного narayan'ом.
Старый 10.12.2009, 21:06
bee
vjass.optimizer
offline
Опыт: 16,615
Активность:
_Red, rep ++, хотя все знал.
Старый 10.12.2009, 21:18
RazArt

offline
Опыт: 11,197
Активность:
silumin, причём тут "из ниоткуда". Просто в триггерах не голд давать, а плюсовать значение переменной, затем менять кол-во золота на число в переменной, чтоб всякие малолетки не юзали читы на голд. Собстно по такой же схеме дерево и всё остальное
Старый 10.12.2009, 22:26
Maxidial

offline
Опыт: 93
Активность:
Интересно,но я видел карты, которые редактор не открывает из за отсутствия триггеров - насколько я понял - последняя компиляция карты будет работать, но её уже нельзя будет редактировать,против тех, кто тырит спеллы с чужих карт вполне подойдет...
Старый 29.12.2009, 15:04
Скайнет
Kicked by ZlaYa1000
offline
Опыт: 8,234
Активность:
Спеллов составлены тысячи, их можно найти тут, на помойке хива, на кампах, спеллы давно не являются чем-то особо ценным, тем более что при помощи перечисленных ресурсов можно составить любой по желанию.
Старый 29.12.2009, 16:03
9thNerZul
forum/warcraft3
offline
Опыт: 4,884
Активность:
_Red:
что ж, если это так банально почему же никто не описал эти советы... странно, возникает ощущение что знает об этом только узкий круг лиц
Не обращай внимания, ты всё очень хорошо написал (хвала только за то что решился сделать это)). Не знал что если через ExecuteFunc вызвать ёё же саму то вылетит игра без сообщения об ошибке).Спасибо
Старый 30.12.2009, 15:27

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 01:20.