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

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

Ответ
 
ScorpioT1000
Работаем
offline
Опыт: отключен
а по-твоему я должен рассказать, что есть такая функция main и что в нему можно перегрузить количество вызовов итп ? это самые основы. и всеравно есть уязвимость. в любом случае он просто может потереть твой вызов и вставить туда свой
ScorpioT1000 добавил:
кстати от этого тоже есть хитрости, что-то типа транзакций при подгрузке
Старый 10.11.2009, 17:40
Hellfim
Новичок
offline
Опыт: 79,707
Активность:
Если Вася Пупкин попытается вставить ГУИ-читы, то от этого надо просто пустой blizzard.j импортировать, однако, ваша карта должна быть полностью на джассе (не использовать функций из bj во всяком случае).
Старый 10.11.2009, 22:06
ScorpioT1000
Работаем
offline
Опыт: отключен
он и common может подсунуть)
Старый 11.11.2009, 14:05
Peer

offline
Опыт: 1,400
Активность:
Ох и быстро разрастаются топики на вечную тему протекта/депротекта...
Я полностью согласен с ребятами, пишущими: "защитить карту так, чтобы никто не открыл невозможно" и фраза: "если варкрафт открывает карту то и человек может" ранее звучавшая в похожей теме абсолютно правильная.
От себя могу добавить, что под защитой руками может подразумеваться:
  1. Обфускация кода (все функции, переменные и сами триггеры называть неадекватно или по своей системе. Например триггер A01, переменная Gk2, функция ЕН3. Только автор будет знать расшифровку. Даже профи хорошо читающий джасс не будет ковырять 20000 строк твоей писанины и расшифровывать твои сокращения)
  2. Поставить проверку чего-либо на карте: ресурса, юнита, региона (если кто-то добавит и заюзает читы - твой кусок кода это словит и дальше делай что хошь, пиши мессаг с именем поганца или выкидывай его из игры, или возвращай ресурсы как было, или клозай игру)
  3. Поставить проверку чего-либо в самом коде (здесь по ситуации, смотря что хочешь ловить)
Старый 12.11.2009, 07:22
Ranger21
I love beatiul days XD
offline
Опыт: 13,274
Активность:
Peer,
Первый метод на самом деле не очень подходит, ибо грамотный человек будет искать по имени функции( а карта без НАТИВНЫХ функций не будет работать).
:)
Сам так искал
Старый 12.11.2009, 09:20
ScorpioT1000
Работаем
offline
Опыт: отключен
какая разница, есть функция main ) ничего не надо искать
Старый 12.11.2009, 12:00
Anufis

offline
Опыт: 6,290
Активность:
А такой вопрос. Вот код карты содержится в war3map.j. Можно как-нить сделать, что например я этот файл переименовал в lol.mdx, но чтобы карта читала скрипты именно из него?
Старый 12.11.2009, 18:01
S

offline
Опыт: 43,833
Активность:
Поставить проверку чего-либо на карте: ресурса, юнита, региона (если кто-то добавит и заюзает читы - твой кусок кода это словит и дальше делай что хошь, пиши мессаг с именем поганца или выкидывай его из игры, или возвращай ресурсы как было, или клозай игру)
true
самый дельный метод, только ничего писать не надо - надо просто крашить игру (а вот это найти в большой куче кода будет очень сложно, ибо executefunc'ов может быть много) после того, как данные не совпали с исходными
а вообще, по идее никакие программы от хороших читов не спасут - любая программная защита - не защита, ибо просто вставляешь в war3map.j чит, ежели там уже на уровне кода - то ищешь защитные функции (а они находятся очень просто, ибо разработчики любят написать что-то вроде "CHEATER", что в коде находится прекрасно) и удаляешь их (ессно, аккуратно - если на функциях будет завязано пол-игровых систем, то можно сфэйлить всё что можно) или подменяешь вызовы функций, которые так или иначе помешают читам (выброс игрока, изменение уровня на 1 итп)
S добавил:
А такой вопрос. Вот код карты содержится в war3map.j. Можно как-нить сделать, что например я этот файл переименовал в lol.mdx, но чтобы карта читала скрипты именно из него?
Нет.
S добавил:
Если Вася Пупкин попытается вставить ГУИ-читы, то от этого надо просто пустой blizzard.j импортировать, однако, ваша карта должна быть полностью на джассе (не использовать функций из bj во всяком случае).
Я этим промышлял еще когда только-только в варкрафт играть начал - но это таки бред, ибо это всё будет неоптимизированно и нетру) А пустой b.j - это к toadcop'y, я думаю, таких авторов, которые смогут весь b.j переписать на свой лад - единицы
Старый 12.11.2009, 18:39
Anufis

offline
Опыт: 6,290
Активность:
Еще предлагали открывать w3x-файл в hex-редакторе. и там какое-то значение менять. MPQEditor тогда крашит, а всякие x-dep'ы это обходят.
Старый 12.11.2009, 18:39
S

offline
Опыт: 43,833
Активность:
а по-твоему я должен рассказать, что есть такая функция main и что в нему можно перегрузить количество вызовов итп ? это самые основы. и всеравно есть уязвимость. в любом случае он просто может потереть твой вызов и вставить туда свой
Кэп, вы не учли одну вещь - можно найти функцию main, найти функцию, вызываемую из функции main и из неё уже вызвать инициализацию читов (а это - самый тру вариант, ибо обычно чит делается для одного игрока и с инициализацией типа "I must win" в зрители)
S добавил:
Еще предлагали открывать w3x-файл в hex-редакторе. и там какое-то значение менять. MPQEditor тогда крашит, а всякие x-dep'ы это обходят.
Зато какой-то другой очень старый MPQ-эдитор на всё это дело смотрит с большим непониманием. X-dep насколько я знаю не находит совмещенные названия aka "переменная+"текст"", что дает большой простор для эксперимента с функциями, в случае отсутствующего файла для исполнения которых (изображения напр) запускают вертолет
Старый 12.11.2009, 18:43
XOR

offline
Опыт: 38,159
Активность:
S,
Xdep насколько я знаю не находит совмещененные названия
вар как то понимает дело с переменная +текст, значит хдеп читает это дело, нужно проверить:) ИМХО

Отредактировано XiMiKs, 15.11.2009 в 22:17.
Старый 12.11.2009, 19:17
S

offline
Опыт: 43,833
Активность:
вар как то понимает дело с переменная +текст, значит хдеп читает это дело, имхо, нужно проверить:)
хдеп это не читает по той причине, что когда хдеп собирает листфайл, он проверяет код на целые тексты ака "Путь к файлу", а если у нас будет local string s "Путь " и текст к "к файлу", то хдеп не найдет s+"к файлу" файл, который находится по вышеуказанному пути переменная+текст
на этом основан общий принцип защиты от хдепа
S добавил:
Паралельный вопрос по теме - есть ли точные средства ловли названия карты, её размера, количества триггеров?
Можно поймать насколько я помню количество функций - на этом и основан вышеуказанный способ защиты с помощью ретурнбага, ибо если количество функций изменится (читы), то можно производить определенные действия
Старый 12.11.2009, 19:27
ScorpioT1000
Работаем
offline
Опыт: отключен
Саша ты матчасть не учил, следовательно, мало чего знаешь о защите карт :) да-да )
Я имел ввиду перегрузку главного потока
Старый 14.11.2009, 18:06
S

offline
Опыт: 43,833
Активность:
Я имел ввиду перегрузку главного потока
Гг, не на пользу пошло тебе тоадкопа ученье, о падаван
Незачем так извращаться, совершенно незачем, есть более простые и не менее эффективные способы
Саша ты матчасть не учил, следовательно, мало чего знаешь о защите карт :)
Троллинг незащитан. Саша 3 года (омг, я угрохал на это 3 года. Хотя нет, всё-таки два с половиной, первые полгода я по большей мере ломал карты) занимался взломом и защитой карт, посему знает про это практически всё. По крайней мере не встречал еще ни одну карту, которая не могла быть бы взломанной.
А насчёт защиты карт - единственная расово верная защита - через returnbug, который отменили.
Старый 15.11.2009, 13:41
Скайнет
Kicked by ZlaYa1000
offline
Опыт: 8,234
Активность:
(омг, я угрохал на это 3 года.)
это стоило того?
Старый 15.11.2009, 21:16
_Red

offline
Опыт: 4,095
Активность:
Пожалуйста подтвердите или опровергните мои догадки)
Где нибудь в коде, примерно после создания стартовых юнитов, инициации и обьявления переменных можно проверить хэндлы
на примере проще рассказать
на карте создан 1 триггер и 1 юнит
в карте присутствует триггер типа
function test takes nothing returns nothing
local unit u = CreateUnit(Player(0),'hffo',1,1,1)
call BJDebugMsg(I2S(GetHandleId(u)))
endfunction
Результат будет примерно таким 1045670
если на карту добавить еще юнитов то значение будет изменятся, т.е. перед протектом зафиксировать это число и провести проверку чтото типо такой
function test takes nothing returns nothing
local unit u = CreateUnit(Player(0),'hffo',1,1,1)
if GetHandleId(u)!=1045670 then
call ExecuteFunc("!")
endif
endfunction
извиняюсь за возможные ошибки в коде, но суть понятна

Отредактировано _Red, 15.11.2009 в 22:13.
Старый 15.11.2009, 21:38
DmCreator

offline
Опыт: 3,205
Активность:
_Red, сомневаюсь, думаю, что хендлы сами раскидываются неведомым способом при запуске игры
а вообще мог бы и проверить, совпадают ли они сам
Старый 15.11.2009, 21:42
_Red

offline
Опыт: 4,095
Активность:
DmCreator, я проверил, это число при любом создани хендла(триггер, звук, юнит, любая переменная) это число увеличивалось на 1, мне просто нужно подтверждение "старичков" :)
+ всем кто будет искать на подобную тему этот код пригодится
Старый 15.11.2009, 21:55
XOR

offline
Опыт: 38,159
Активность:
_Red это принцип РБ, какое нужно подтверждение?
XiMiKs добавил:
Ну а к хендлам относятся и триггеры и функции, и т.д. Полный список в common.j
Старый 15.11.2009, 22:22
S

offline
Опыт: 43,833
Активность:
Цитата:
это стоило того?

Это того стоило - защиту на ретурнбаге никто не мог взломать, вплоть до камрадов с вц3эдит, а они там занимаются этим профессионально.


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

Хэндл надо будет проверять всего 2 раза (дабы быть стопроцентно уверенным, на всякий случай как говорится (угу, трата времени, но всё же)), тобишь чтобы он был одинаковым, - просто после запуска игры выводить хэндл на экран, а потом уже сверять, и ессно убрать display.
Теперь, если будет добавлен любой новый юнит или функция, то игра будет крашиться без вопросов, что введёт читера в ступор - "что я не так сделал", а обычно 95% вылетов после инжекта читов именно от того, что код был вставлен криво\был криво написан.
Самое главное - всё это незаметно вплести где-нибудь по центру кода и сделать 5-6 проверок на переменную, допустим, тобишь если после этого всего игрок будет всё еще играть - проводить еще какое-нибудь интересное действие, например, отображение несуществующего изображения (путь к файлу написать наугад).


Но бтв, разве ретурнбаг не упразднили?

Отредактировано S, 15.11.2009 в 22:32.
Старый 15.11.2009, 22:27
Ответ

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

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

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

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



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