Сейчас 10:02:35 Пятница, 29 марта, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » GUI / Jass » [Статья] Шифрование методом хэширования
[Статья] Шифрование методом хэширования
ZonneryДата: Четверг, 18 Июля 2013, 12:57:19 | Сообщение # 1
3 уровень
Группа: Проверенные
Сообщений: 42
Награды: 0
Репутация: 95
Блокировки:
Эта статья, в нарушение сложившейся традиции, пойдёт на пользу не сколько взломщикам, сколько мапмейкерам. Впрочем, и взломщикам будет что здесь почерпнуть.
Этот материал поможет вам повысить уровень защиты информации в вашей карте весьма оригинальным способом.
Начнём с теории. Многие уже знают что из себя представляет хэш-сумма. Так или иначе, в данном случае, хэш-сумма рассматривается как результат выполнения алгоритма шифрования информации. Алгоритм этот выполняется с учётом некоторых аргументов. В данном случае, мы шифруем строки, поэтому наше шифрование будет отталкиваться от манипуляций с символами, составными частями строкового типа. К примеру, у нас есть строковая переменная со значением "Слово". Наш алгоритм создаёт для каждой буквы свой уникальный код, складывает значения всех кодов каждой буквы во всём слове, умножает это значение на количество символов в строке и вуаля - Наше "Слово" превратилось в целочисленное -85156128.

Конечно, любой человек с развитым логическим мышлением скажет: "Шифруй сколько угодно, весь исходник твоего шифрующего алгоритма прописан у тебя в карте, при желании его можно анализировать и подобрать ключ."
И тут возникает два "НО".

1) Вероятность того, что кто-то будет этим заниматься КРАЙНЕ МАЛА. Среднестатический читер Вован может вскрыть карту, найти в ней чит-пак, с помощью спуфера подделать себе ник, чтобы сойти за автора и использовать оставленные для себя им читы. Но вряд ли он станет копаться с шифрованием.
2) А самого алгоритма шифрования-то в карте нет. Мы будем использовать стандартные средства шифрования строк варкрафта, а именно функцию StringHash().

Разберем практическое применение в протекте.
1.Создаём триггер, который активируется сообщением в чат, содержащим символ '-'.
2.Придумываем любую строку, начинающуюся на '-', через функцию StringHash в работающем варкрафте узнаем хэш-сумму этой строки.
3.Создаём условие на проверку этой хэш-суммы. Выглядит примерно так:
Код
if(StringHash(GetEventPlayerChatString())==-952139146){
BJDebugMsg("Читы активированы")
}

4.PROFIT

Теперь, если человек введёт в чат строку "-slon", то условие выполнится.
Заметьте! В коде карты нигде нет и упоминания о строке "-slon", есть только активация триггера через символ '-' и хэш-сумма всей строки.
Таким образом, читер, открыв вашу карту, найдёт ваши читы, но никогда не сможет ими воспользоваться. Он просто не сможет узнать, какую строчку ему нужно ввести в чат, для их активации.
Для тех кто уверен, что можно случайно найти эту строку методом тыка... Это в сотни раз хуже, чем искать иголку в стоге сена. Кроме того, автор может наложить ряд ограничений. Например, строка обязательно должна содержать такие символы, как "A","8","*". Это делает случайное обнаружение практически неосуществимым.
Аналогичным образом читеры могут вставлять свои чит-паки, с захэшированными активаторами и никами.

Если вам нечего делать, то можете попробовать узнать, что нужно прописать в этой карте, чтобы сработало условие.


Мир, как зеркало, отражает ваше отношение к нему. Когда боретесь с миром, он борется с вами. Когда прекращаете свою битву, мир идет навстречу.(В.Зеланд)
vk.com/zonnery
 

ImpregnableДата: Четверг, 18 Июля 2013, 18:54:32 | Сообщение # 2
6 уровень
Группа: Проверенные
Сообщений: 231
Награды: 0
Репутация: 92
Блокировки:
Кроме как скрывать свои читы, делая себя королем в своей же карте, есть еще применения?

Если долго мучиться, то может,
все равно нихуя не получится.
 

NaturekidДата: Четверг, 18 Июля 2013, 20:25:36 | Сообщение # 3
Группа: Заблокированные
Сообщений: 4982
Награды: 3
Репутация: 3347
Блокировки:
какая на редкость бесполезная чушь

 

ZonneryДата: Пятница, 19 Июля 2013, 07:47:12 | Сообщение # 4
3 уровень
Группа: Проверенные
Сообщений: 42
Награды: 0
Репутация: 95
Блокировки:
Цитата (Naturekid)
какая на редкость бесполезная чушь


Однако, в карте Metastasis, FelFox-у удалось скрыть этим способом ото всех секретный способ получения чёрной дыры.
Кроме того, я неделю проводил опыты на баттле - хостил взломанную карту с шифрованным активатором и смотрел, кто же попробует его активировать.
Ни у кого так это и не получилось. Знакомый читер вообще сказал, что чит-пак фейковый. Однако, работал он на ура, если знать пароль.

Добавлено (19 Июля 2013, 07:47:12)
---------------------------------------------

Цитата (Impregnable)
Кроме как скрывать свои читы, делая себя королем в своей же карте, есть еще применения?


Фактически, само шифрование подразумевает сокрытие информации. Можно это применить везде, где это нужно.


Мир, как зеркало, отражает ваше отношение к нему. Когда боретесь с миром, он борется с вами. Когда прекращаете свою битву, мир идет навстречу.(В.Зеланд)
vk.com/zonnery
 

NaturekidДата: Пятница, 19 Июля 2013, 11:02:41 | Сообщение # 5
Группа: Заблокированные
Сообщений: 4982
Награды: 3
Репутация: 3347
Блокировки:
Цитата (Zonnery)
Однако, в карте Metastasis, FelFox-у удалось скрыть этим способом ото всех секретный способ получения чёрной дыры.

Цитата (Impregnable)
Кроме как скрывать свои читы, делая себя королем в своей же карте, есть еще применения?

nate
Цитата (Zonnery)
Фактически, само шифрование подразумевает сокрытие информации. Можно это применить везде, где это нужно.

например? Допустим я делаю рпг, аос, арену... зачем мне это там?


 

ZonneryДата: Пятница, 19 Июля 2013, 11:17:06 | Сообщение # 6
3 уровень
Группа: Проверенные
Сообщений: 42
Награды: 0
Репутация: 95
Блокировки:
Цитата (Naturekid)
например? Допустим я делаю рпг, аос, арену... зачем мне это там?


Вот тебе другой пример использования хэша.

Код
void lol(){
     timer t = CreateTimer()
     BJDebugMsg(I2S(GetHandleId(t)))
}


Этот код работает как хэш-сумма всех созданных в карте объектов. Т.е. если изменить что-то в твоей карте, эта сумма изменится. Как это применить в твоей карте? Добавляем проверку на хэш, (если кто-то добавил читы, то хэш изменился) в таком случае мы выполняем функцию типа этой:

Код
void lol(){
    ExecuteFunc("lol")
}

Карта просто вырубится после запуска.


Мир, как зеркало, отражает ваше отношение к нему. Когда боретесь с миром, он борется с вами. Когда прекращаете свою битву, мир идет навстречу.(В.Зеланд)
vk.com/zonnery


Сообщение отредактировал Zonnery - Пятница, 19 Июля 2013, 11:17:34
 

NaturekidДата: Пятница, 19 Июля 2013, 11:31:21 | Сообщение # 7
Группа: Заблокированные
Сообщений: 4982
Награды: 3
Репутация: 3347
Блокировки:
понятно.
Вот тольо не каждый из нас айсфрог и едва ли это пригодится действительно по существу.
А для фана пускай корректируют, мне то что с того...


 

Ty3uKДата: Пятница, 19 Июля 2013, 12:10:18 | Сообщение # 8
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Мне кажется, или хэндл может выпасть не по порядку? У нас-то это указатель на ячейку памяти, а на банальном ИД далеко не уедешь, это всего лишь порядковый номер

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

ZonneryДата: Пятница, 19 Июля 2013, 12:34:46 | Сообщение # 9
3 уровень
Группа: Проверенные
Сообщений: 42
Награды: 0
Репутация: 95
Блокировки:
Цитата (Ty3uK)
Мне кажется, или хэндл может выпасть не по порядку? У нас-то это указатель на ячейку памяти, а на банальном ИД далеко не уедешь, это всего лишь порядковый номер


Может. На локальной машине всё работает сносно при каждом запуске, но останется ли айдишник тем же на других машинах? Не факт. Этот момент всё же требует проверки.


Мир, как зеркало, отражает ваше отношение к нему. Когда боретесь с миром, он борется с вами. Когда прекращаете свою битву, мир идет навстречу.(В.Зеланд)
vk.com/zonnery


Сообщение отредактировал Zonnery - Пятница, 19 Июля 2013, 12:35:00
 

Ty3uKДата: Пятница, 19 Июля 2013, 14:12:17 | Сообщение # 10
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Локальная машина совмещаетв себе одинаковый объем оперативной памяти, операционную систему и битность процессора. buba

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

ZonneryДата: Пятница, 19 Июля 2013, 17:13:27 | Сообщение # 11
3 уровень
Группа: Проверенные
Сообщений: 42
Награды: 0
Репутация: 95
Блокировки:
Цитата (Ty3uK)
Локальная машина совмещаетв себе одинаковый объем оперативной памяти, операционную систему и битность процессора.


Фишка в том, что на одной машине айди хэндл один, а на другой машине он изменяется.
Вроде как так) Сегодня проверю.


Мир, как зеркало, отражает ваше отношение к нему. Когда боретесь с миром, он борется с вами. Когда прекращаете свою битву, мир идет навстречу.(В.Зеланд)
vk.com/zonnery


Сообщение отредактировал Zonnery - Пятница, 19 Июля 2013, 17:15:06
 

Форум о Warcraft 3 » Раздел для картостроителей » GUI / Jass » [Статья] Шифрование методом хэширования
  • Страница 1 из 1
  • 1
Поиск:

Copyright © 2006 - 2024 Warcraft3FT.info При копировании материалов c сайта ставьте, пожалуйста, активную обратную ссылку на нас • Design by gReeB04ki ©
Хостинг от uCoz