Добавлен , опубликован
Алгоритмы, Наработки и Способности
Способ реализации:
Jass
Тип:
Наработка
Версия Warcraft:
1.26a

Внимание!

Все последующие обновления моих ресурсов будут делаться в моей вк группе, которую можно найти в профиле.

Внимание!

При скачивании, Вам будет доступна тестовая карта, открываемая в JNPG World Editor.
Вы можете как тестировать хаки на этой карте, так и в целом скопировать все триггеры к себе в карту и тестировать в своей карте.
Мой совет, лучше в начале проверьте всё на моей карте, чтобы убедиться в том, что всё работает для ВАС как надо, а затем уже начинайте заниматься переносом.
Тем, кому WE неудобен как мне, можете смело брать war3map,j и из него переносить код, только надо будет немного очистить от ненужного кода WE.
Спасибо за внимание!

Что делает Антихак:

Антихак проверяет валидность байтов по заданным адресам и в случае не соответствия, в зависимости от флага в переменной bIsHackKick решает, что делать. Если хак можно запатчить (отключить), то будет вызвана функция PatchMemory, которая восстановит валидные байты в памяти, которые были изменены хаком. Если же АнтиХак не может запатчить хак, то игрок будет кикнут вне зависимости от флага bIsHackKick.
Кик определяется выделением невыделяемого обычными мерами юнита, благодаря которому, вызывается триггер TriggerRegisterPlayerUnitEvent с ивентом EVENT_PLAYER_UNIT_SELECTED. Что позволяет нам посылать в общий чат сообщение о том, что тот или иной игрок был выкинут за хаки.
Спидхак и в целом изменения системных .dll всегда приводят к выкидыванию нарушителя, так как восстановить системные .dll, а точнее детуры или хуки не является возможным.

Содержит:

  1. 120 адресов, которые потенциально используются хаками.
  2. 30 VТаблиц, которые потенциально используются хаками.
  3. Обнаружение Unreal MapHack от Karaul0v.
  4. Практически полное обнаружение хака W3SH.
  5. Практически полное обнаружение хака RGC Hack.
  6. Практически полное обнаружение TFTLocal.
  7. Обнаружение SpeedHack.

Требования:

  1. JNPG и знания работы с кодом.
  2. Warcraft 3 версии 1.26а и только 1.26а.
  3. Открыть карту в JNPG или же вытащить war3map.j код с помощью MPQ Editor.
Если открыли в JNPG:
  1. Скопируйте все триггеры в вашу карту.
  2. Вызовите функцию Init_MemoryHack ровно 1 раз.
Если открыли в Notepad++
  1. Вставить natives из кода над globals.
  2. Вставить переменные из globals в Вашу карту.
  3. Вставить остальной код сохраняя целостность в любое выбранное Вами место.
  4. Не забыть вызвать функцию Init_MemoryHack (желательно из main функции).
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
20
5 лет назад
Отредактирован Unryze
0
quq_CCCP:
Не драколич этот код и придумал, чтобы его дота не фаталила при сейве игры, это был самый простой способ - запретить сейв, вот этот кусок с хайва, обьем меньше в разы, нет не триггеров, не таймеров, вовсе хендлов.
Однако, чтобы этот код вызывать нужно вставлять мемхак, а мой код можно вставить в карты без мемхака, непривычно досконально пояснять банальную информацию.
Я и не говорил, что он его придумал, я сказал о сорсе, с которого я взял основу.
Пойми уже, пихать везде мемхак - ужасная затея, особенно туда, где он явно не нужен.
П.С. скинул тебе в дискорд версию Антихака с детектом sHack.
2
32
5 лет назад
2
Unryze, смысли, прям из твоего кода, лол, твой детект и есть мемхак который требуется для запуска этого дела... Ничего болье, ну кроме одной переменной - pGetFrameItemAddress = GameDLL + 0x09EF40.
0
20
5 лет назад
Отредактирован Unryze
0
quq_CCCP:
Unryze, смысли, прям из твоего кода, лол, твой детект и есть мемхак который требуется для запуска этого дела... Ничего болье, ну кроме одной переменной - pGetFrameItemAddress = GameDLL + 0x09EF40.
В дискорде отвечал, но сюда ответ закину.
Смысл в том, что удобнее использовать отдельный код, который может работать без мемхака, в этом вся суть. Хотя добавить в АнтиХак это дело вполне логичная тема.
Сообщение просто для пояснения, не более.
0
29
5 лет назад
0
Смысл в том, что удобнее использовать отдельный код, который может работать без мемхака
Мемхак может работать без мемхака, это как-то странно.
0
20
5 лет назад
0
NazarPunk:
Смысл в том, что удобнее использовать отдельный код, который может работать без мемхака
Мемхак может работать без мемхака, это как-то странно.
Чего...? Речь о коде для антисейва, читайте внимательно.
1
16
5 лет назад
1
не понял, нафига в антихаке ряд повторяющихся бессмысленных проверок
		call CheckAddrData(   7, 0x36143C, 0x00000001 ) //							|
		call CheckAddrData(   8, 0x36143D, 0x00000001 ) //							|
		call CheckAddrData(   9, 0x36143E, 0x00000001 ) //							|
		call CheckAddrData(  10, 0x36143F, 0x00000001 ) //__________________________|
4 подряд на один и тот же адрес, потому что чтения нечетных адресов нет
0
20
5 лет назад
Отредактирован Unryze
0
DracoL1ch:
не понял, нафига в антихаке ряд повторяющихся бессмысленных проверок
		call CheckAddrData(   7, 0x36143C, 0x00000001 ) //							|
		call CheckAddrData(   8, 0x36143D, 0x00000001 ) //							|
		call CheckAddrData(   9, 0x36143E, 0x00000001 ) //							|
		call CheckAddrData(  10, 0x36143F, 0x00000001 ) //__________________________|
4 подряд на один и тот же адрес, потому что чтения нечетных адресов нет
Ну, эти адреса были в ZodCraft и шли они вот так подряд, я исходил из этого, ну и похожее было в Neon хаке (не Xenon), просто я думал, что раз они по ним делают изменения, то должен же быть смысл - это одни из первых адресов, которые я вписывал, тогда считай на абум добавлял, если реально это бессмысленно и тому есть прямое подтверждение, то убрать не проблема.
Но тогда спрашивается почему разработчики хаков это делают? :D
Так же если их читать через GameDll а не через мемхак по GameBase то получается вот это:
CheckMHData( 7, 0x36143C, 0x00000001 );
CheckMHData( 8, 0x36143D, 0xD3000000 );
CheckMHData( 9, 0x36143E, 0xE8D30000 );
CheckMHData( 10, 0x36143F, 0x3BE8D300 );
Не исключено, что чтение через C++ идёт в разрез с чтением через мемхак, но адреса выдают же значения, а не пустышки, хотя они нечётные.
3
16
5 лет назад
3
так ты когда офсет на 4 делишь, у тебя падают все 4 к "36143C/4", три последующих не имеют смысла, поэтому и сказал
0
20
5 лет назад
0
DracoL1ch:
так ты когда офсет на 4 делишь, у тебя падают все 4 к "36143C/4", три последующих не имеют смысла, поэтому и сказал
А, точно, вот с этим я затупил (мы же делим целочисленные), спасибо, а то я в глаза долбился, 2 + за наводку :)
0
16
5 лет назад
0
а в 79/80 у тебя будет ложное срабатывание, если GameDLL окажется не на 6F000000
0
20
5 лет назад
0
DracoL1ch:
а в 79/80 у тебя будет ложное срабатывание, если GameDLL окажется не на 6F000000
На удивление ещё ни разу не было, но, как вариант, что нужно сделать, чтобы GameDLL был не на 6F000000? Просто это чудо уже отслужило в FOA/MVB/AFB/NL/NWU и ещё паре карт, но вот когда я VTables проверял тупо как адреса, вот там ложных срабатываний была уйма :(
Кстати, я по твоей подсказке зачистил от лишних адресов, думаю позже апдейтнуть. И такой вопрос, можно ли как-то Мемхаком как в С взять и "реверсить" хак? Ну, возвращать оригинальное значение? В С вышло, а вот на Джассе не хочет падла, фаталит :(
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.