Всем привет! Хотелось бы увидеть в этом вопросе комментарии опытных мапмейкеров. Вопрос в том, как наиболее эффективно защитить карту от взлома и встраивания различных чит-паков. Поделитесь своим опытом, может как то код по особенному писать или еще чего, любая мелочь будет полезна! И хорошо бы, чтоб вопрос повисел здесь подольше.

Tumart:
quq_CCCP, а можно поподробнее? И это защитит карту от инжекта?
Подробно - это сделай за меня?
Суть:
 call  BJDebugMsg( I2Sx( 100500  ) )
Выдаст разные значения в депротектнутой и нормальной картах, пока это теория но возьмите и проверьте.
I2Sx - фольклорная функция ретурн бага, суть преобразует хеш от строки в строку. именно хеш а не инт. т.е адрес в таблице строк на строку.
вот RetunrBug ( www.hiveworkshop.com/threads/accessing-memory-from-the-script-it... )
функция в либе Typecast - I2SH
Ну кароче проверил:
function Trig_J_Test_Actions takes nothing returns nothing
    local integer i = 486
    local string str = null
    set str = S2S( I2SH( i ) )
    call BJDebugMsg( str )
    set str = null
endfunction

//===========================================================================
function InitTrig_J_Test takes nothing returns nothing
    set gg_trg_J_Test = CreateTrigger(  )
    call TriggerRegisterPlayerEventEndCinematic( gg_trg_J_Test, Player(0) )
    call TriggerAddAction( gg_trg_J_Test, function Trig_J_Test_Actions )
endfunction
При добавлении, удалении 3 функций сменяется строка по этому адресу, самое главное найти последнюю строку (ну или как я от балды ввел число) хотя я не уверен что прокатит с числом от балды, нужно найти последнюю строку на момент загрузки карты и смотреть её адрес, а после смотреть что будет записано по этому адресу в таблице строк.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
12
Не без известный здесь человек-статья говорит делать проверку на хендлы объектов. Наверное это сейчас единственный нормальный способ. Протектить карту непосредственно с расчетом на то, что не вскроют сам архив - пустая трата времени.
6
Кстати у сударя карта то уже готова?
quq_CCCP, да я пока другой картой занят.
32
Astra:
Не без известный здесь человек-статья говорит делать проверку на хендлы объектов. Наверное это сейчас единственный нормальный способ. Протектить карту непосредственно с расчетом на то, что не вскроют сам архив - пустая трата времени.
Щяс снова доступен ретурн баг, щяс думаю а получится ли проверить хещтаблицу срок, после депротекта и инжекта поедет таблица строк (ибо в хештаблицу попадают даже имена функций, кастомных разумеется ).
6
Так же гробим архив корейскими тулами, можно еще малость руками - открыть откроют, но не инжектнут.
quq_CCCP, а руками это что конкретно? Я вот делал так: 1. Прогнал W3COpt 2 Прогнал через Тулы Векса 3. Прошелся спазлером, потом патчером после новым мпкушником удалил лист файл полностью.
12
quq_CCCP, ну пока это теория без практики.
Tumart, Спазлеры, патчи, векс - это все давно открывается без особого труда. Забудь про способ закрыть архив. Только чеками внутри карты можно что то сделать, во всяком случае при защите от дилетантов.
6
Astra, так в том то и дело, что не от дилетантов(. Так то оно понятно, что нужно протектить с помощью самого кода, но как наиболее эффективно это сделать.
32
Tumart:
Так же гробим архив корейскими тулами, можно еще малость руками - открыть откроют, но не инжектнут.
quq_CCCP, а руками это что конкретно? Я вот делал так: 1. Прогнал W3COpt 2 Прогнал через Тулы Векса 3. Прошелся спазлером, потом патчером после новым мпкушником удалил лист файл полностью.
В хекс редакторе, ищищь нужные байты и меняешь, сначала гадим заголовок, потом отрец значение в хештаблицу архива или как тут уже делали умельны лже war3map.j файл в хештаблицу.
Если кто в танке, то в мпк может быть 100500 файлов разных версий, с одим и тем же именем - особенность фомата, игра всегда берет последний из списка, а мпк редактор первый - это баг публичного софта.
6
quq_CCCP, а можно поподробнее? И это защитит карту от инжекта?
32
Tumart:
quq_CCCP, а можно поподробнее? И это защитит карту от инжекта?
Подробно - это сделай за меня?
Суть:
 call  BJDebugMsg( I2Sx( 100500  ) )
Выдаст разные значения в депротектнутой и нормальной картах, пока это теория но возьмите и проверьте.
I2Sx - фольклорная функция ретурн бага, суть преобразует хеш от строки в строку. именно хеш а не инт. т.е адрес в таблице строк на строку.
вот RetunrBug ( www.hiveworkshop.com/threads/accessing-memory-from-the-script-it... )
функция в либе Typecast - I2SH
Ну кароче проверил:
function Trig_J_Test_Actions takes nothing returns nothing
    local integer i = 486
    local string str = null
    set str = S2S( I2SH( i ) )
    call BJDebugMsg( str )
    set str = null
endfunction

//===========================================================================
function InitTrig_J_Test takes nothing returns nothing
    set gg_trg_J_Test = CreateTrigger(  )
    call TriggerRegisterPlayerEventEndCinematic( gg_trg_J_Test, Player(0) )
    call TriggerAddAction( gg_trg_J_Test, function Trig_J_Test_Actions )
endfunction
При добавлении, удалении 3 функций сменяется строка по этому адресу, самое главное найти последнюю строку (ну или как я от балды ввел число) хотя я не уверен что прокатит с числом от балды, нужно найти последнюю строку на момент загрузки карты и смотреть её адрес, а после смотреть что будет записано по этому адресу в таблице строк.
Принятый ответ
12
Смысл по сути тот же что и сравнивать значения заголовков от первой до последней строки через хэш-таблицу. Так и без РБ можно сделать.
32
Astra:
Смысл по сути тот же что и сравнивать значения заголовков от первой до последней строки через хэш-таблицу. Так и без РБ можно сделать.
Без рб низя залезть в именя функций, хеш от сроки (именно хеш а не всякое гно) можно тока через рб.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.