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

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

Ответ
 
Nerevar
I'll be back!
offline
Опыт: 18,352
Активность:
YellowStar:
Потом выложу когда карту, попытаетесь её поломать
буду ждать^^
Старый 23.08.2012, 19:48
YellowStar
poon
offline
Опыт: 15,144
Активность:
Цитата:
Сообщение от Nerevar
~YellowStar:
> Потом выложу когда карту, попытаетесь её поломать
буду ждать^^

Ну там сложная система хеширования, даже близко не стояла, к тому, что я показывал в примере. Там расчёт идёт, опираясь на хендлы внутренних данных, так что процесс загрузки, выгрузки, очень тяжёлый, ну и контрольная сумма в количестве трёх штук, зашифрованные в 256i
Старый 23.08.2012, 20:57
Anufis

offline
Опыт: 6,290
Активность:
YellowStar:
Ну там сложная система хеширования, даже близко не стояла, к тому, что я показывал в примере. Там расчёт идёт, опираясь на хендлы внутренних данных, так что процесс загрузки, выгрузки, очень тяжёлый, ну и контрольная сумма в количестве трёх штук, зашифрованные в 256i
Что мешает, спрашивается, в карте через slk-таблицы подредактировать разные там значения(хп/урон мобов, перезарядку заклинаний и так далее) и играть в ломаную.
Или точно так же запустить твой процесс сложной кодировки для заранее подобранного массива сейв-данных
Старый 23.08.2012, 21:00
Nerevar
I'll be back!
offline
Опыт: 18,352
Активность:
YellowStar:
Ну там сложная система хеширования, даже близко не стояла, к тому, что я показывал в примере. Там расчёт идёт, опираясь на хендлы внутренних данных, так что процесс загрузки, выгрузки, очень тяжёлый, ну и контрольная сумма в количестве трёх штук, зашифрованные в 256i
это не принципиально) попробовать стоит всегда
Старый 23.08.2012, 21:10
Doc

offline
Опыт: 63,163
Активность:
Дело в том, что я могу не вытаскивать ничего, к примеру я ломал гоблинов так:
сделал отдельный триггер, который выложит игроку итемы и повысит уровень, когда я напишу что-то в чат. А потом просто стандартно сохранял. И никаких отдельных карт.
Старый 23.08.2012, 21:16
Nerevar
I'll be back!
offline
Опыт: 18,352
Активность:
Doc, офк если удастся удачно вставить свой код и сохранить с возможностью последующего запуска,то любая "защита" сосет
Старый 23.08.2012, 21:20
quq_CCCP
Я белый и пушистый!
offline
Опыт: 93,024
Активность:
Anufis, защита карты, да и не всегда всегда юзают slk оптимизацию... В текстовых файлах колупаться будет геморновато...
Старый 24.08.2012, 08:52
YellowStar
poon
offline
Опыт: 15,144
Активность:
Объясняю как строиться нормальная защита.

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

2. LoL, вы не знаете как работать с динамичными описаниями в редакторе, и это прекрасно, все данные не конвертяться в slk, туда конвертяться лишь описания спеллов, многие данные можно оставлять в строковом эквиваленте .wts, что собственно и делается, еще одной софтиной, на тот случай если вы преодолели пункт 1, то увы. В редакторе объктов, грамотно используя <'idid',typetype> можно создать просто очень геморойные описания, в принципе у меня все делает, еще одна рукописная софтина, так что это тоже усложняет метод декодирования.

3. Ну собственно строки у меня работают еще смешнее, там все сообщения выводяться опять же через софтину, которая их кеширует грамотно. Ну то есть, там есть набор из трёх функций, которые принимают значения по типу тоадкоповского UPSUBR ("^bla^data^hui") ну то есть вы поняли, при том, там хещирование символов делает софтина.

4. Все это сжимается всякими вексориан парсерами .j файлов.

5. Все это сжимается .slk фичами...

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

И кстати, добился сигнатуры что карта оффициальная от блиссард. Только тссс.
Старый 24.08.2012, 13:18
Anufis

offline
Опыт: 6,290
Активность:
YellowStar, то есть ты хочешь сказать, что Вася Пупкин в триггер какого-нибудь спелла на основе канала не сможет вставить например AddHeroXP(u,50000)?
Старый 24.08.2012, 13:38
Zonnery

offline
Опыт: 288
Активность:
Anufis:
то есть ты хочешь сказать, что Вася Пупкин в триггер какого-нибудь спелла на основе канала не сможет вставить например AddHeroXP(u,50000)
Для этого нужно пересобрать архив, а раз он доработал спазллер, то нужно будет сначала вскрыть карту MPQ View-ом, потом пересобрать, а уже потом что-то вставлять. Один лишь корруптор архива создаст много проблем. А если уже добавить всяких проверок по хэшу как в ютд или скриптовую защиту как в Saver RPG( автор что-то нахимичил с кастомными библиотеками функций, так что добавить полноценный чит-пак с сохранением работоспособности карты невозможно, хотя отдельные функции добавляются), то человек будет долго мучаться. Но и это рано или поздно обходят.
Старый 26.08.2012, 19:38
YellowStar
poon
offline
Опыт: 15,144
Активность:
Цитата:
Сообщение от Anufis
~YellowStar, то есть ты хочешь сказать, что Вася Пупкин в триггер какого-нибудь спелла на основе канала не сможет вставить например AddHeroXP(u,50000)?

Он нарушит целостность архива, и после его пересборки потеряет официальную иконочку блиссард карты
Старый 26.08.2012, 22:57
ScorpioT1000
Работаем
offline
Опыт: отключен
хеш файла карты хранится на сервере и сверяется с локальным one, после чего он её пропускает или нет
Старый 27.08.2012, 09:46
YellowStar
poon
offline
Опыт: 15,144
Активность:
Именно, это не работает в баттленете после запуска карты, он потом просто перепакует ей архив. Но работает на пиратских серверах, уже проверено.
Старый 27.08.2012, 14:23
Карточка
Kicked by SSrunX
offline
Опыт: 2,017
Активность:
ребятули, кто-нибудь добивался синхронизации данных типа строки?
похоже способ синхронизации строк через SyncStoredString() не работает. однако есть возможность простенького представления integer`а в символьный вид ("00" = a и т.д. т.е. интежер представляет строку, где 2 цифры = 1 знак). int и real сохраняются/загружаются отлично

Отредактировано Карточка, 19.12.2012 в 21:46.
Старый 19.12.2012, 18:39
Карточка
Kicked by SSrunX
offline
Опыт: 2,017
Активность:
бесстыдно апну древнюю тему
товарищ кодер-задрот с хайва, которому не лень ради одной функции написать 10к кода, написал другую синхронизацию загружаемых данных, которая работает как раз на основе строк, которые не синхронизируются предложенным способом
плюс неудачная синхронизация целочисленных переменных из темы примерно с шансом 1 из 100 даёт десинк без дисконнекта (2 игры на 1 хосте)
Старый 28.10.2013, 11:40
ScorpioT1000
Работаем
offline
Опыт: отключен
это всё убийственно для производительности, синк строки как инта - это до 1023 пакетов для всеголишь одной строки. если ты о том чуваке что реализовал аес шифрование в вц3, то он окончательно упоролся, несмотря на мои замечания про неэффективность его "разработок"
Старый 28.10.2013, 12:20
Карточка
Kicked by SSrunX
offline
Опыт: 2,017
Активность:
ты классический пример программиста, которым быть не следует. вся суть в "если я не могу сделать идеально, то делать ничего я не буду". другие делают и получают результаты.
здесь речь о том, что есть способ синхронизации, который является стабильным и безотказным (хоспадеисусе надо чуть пакетов отправить). и есть способ, который вызывает десинки на ровном месте. вывод очевиден. плюс эта синхронизация "на вейтах", что тоже отвечает претензиям "не быстро, не оптимально и вообще говно".
и опять же по скорости (в его ещё медленных алгоритмах синхронизации):
>2500: 9 seconds from 16 seconds
>10000: 1 minute 22 seconds from 2 minutes and 1 second
Старый 28.10.2013, 13:52
ScorpioT1000
Работаем
offline
Опыт: отключен
>2500: 9 seconds from 16 seconds
>10000: 1 minute 22 seconds from 2 minutes and 1 second
Старый 28.10.2013, 13:58
Карточка
Kicked by SSrunX
offline
Опыт: 2,017
Активность:
там строчки нихрена не синхронизируются, у него отдельные системы на синхронизацию, но ёмаё перечитывать и въезжать в его тысячестрочные коды - это никуда не упёрлось. при том что принцип синхронизации в целом тот же самый
вот доработанная функция - правильно синхронизируется, учитывая любые слабые компы и самые отсталые российские интернеты
function ReadInteger2 takes nothing returns nothing
    local integer Cync_i = 0
    local integer Cync_nm = cyn_nm
    local string  Cync_Player_s = GetPlayerName(LoadPlayer)
    local player  Cync_Player = LoadPlayer
    if GetLocalPlayer()==LoadPlayer then
        if GetPlayerTechMaxAllowed(Player(14),Cync_nm)==2 then
            set Cync_i = -GetPlayerTechMaxAllowed(Player(15),Cync_nm)
        elseif GetPlayerTechMaxAllowed(Player(14),Cync_nm)==3 then
            set Cync_i = GetPlayerTechMaxAllowed(Player(15),Cync_nm)
        endif
        call StoreInteger(Cync,Cync_Player_s,I2S(Cync_nm),Cync_i)
    endif
    call TriggerSyncStart()
    if GetLocalPlayer()==Cync_Player then
        call SyncStoredInteger(Cync,Cync_Player_s,I2S(Cync_nm))
    endif
    call TriggerSleepAction(6)
    call TriggerSyncReady() // кстати, есть мнение что это функция-пустышка, т.е. ничего не делает
    call TriggerSleepAction(4)
    call SaveInteger(MyData,GetPlayerId(Cync_Player),Cync_nm,GetStoredInteger(Cync,Cync_Player_s,I2S(Cync_nm)​))
endfunction

// по факту это около 10 секунд. запас времени как раз обеспечивает синхронизацию для конченных вариантов
// если с соединением всё ок, то всё можно делать быстрее, но это не универсально, т.к. игроки разные
причём интересно то, что с медленным инетом игроки синхронизируются односторонне (т.е. он видит стату всех игроков, но все игроки не видят стату первой личности). именно отсюда появляются десинк другого типа, когда 2 игры на одном хосте
+ желательно чтобы в коде ничего не работало, об этом давно ещё говорилось, и очевидно что данные никак нельзя использовать с начала игры, синхронизация будет жрать время. синхронизация большого количества данных будет давать лаг. тут очевидно лучше не иметь по 500 сейв данных на игрока, а завести 5 штук и пользоваться по максимуму, например в одно значение 000001001 - под единицами - такие-то опции включаются
ещё по прелоадеру могу сказать, что не стоит пихать что-то по адресу "С:\" и другие варианты, т.к. если не будет этого диска на машине, то это вылет без лечения. хранение в папке вк3 безопаснее со стороны вылетов, но менее безопасно со стороны любителей почитать джасс код и запилить свой сейв файл с 9999999 статами и т.п. можно шифрование, можно взломы и т.п. в общем как было какашкой так и осталось, но другого нет
близзам только писькой повернуть, чтобы лок файлы были всегда включены, но этого сделано не будет
в целом, если картострой и вк3 хоть как-то проживёт ещё года 2-3, то всё большее число игроков будут уже заведомо иметь включённые лок файлы, т.е. это "перспективно" в некотором плане. хотя тут не картострой, а буквально с десяток лиц, которые имеют свои проекты для онлайн игры и пока не положили гуй на это.
кстати, я так и не понял откуда в вк3 дыра, что прелоадер может скрипт грузить прямо в игре из внешнего файла, как-то это не вяжется с понятием "случайный эксплоит" и наличием функций синхронизации данных. как будто это делали (как банк в ск2) но потом решили "хрен с этим" и забили. и такая же тайна как нараян это "нашёл"
тлен.
Старый 07.11.2013, 00:46
ScorpioT1000
Работаем
offline
Опыт: отключен
а можно просто не трахать труп)
Старый 07.11.2013, 01:03
Ответ

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

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

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

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



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