Добавлен , опубликован
Алгоритмы, Наработки и Способности
Способ реализации:
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 лет назад
0
quq_CCCP:
Unryze, был и в оригинале, темболее у тебя так или иначе мх на запись, т.е сломанный массив, так что тут уже глупо отнекиватся. На хайве GetFraemAdress есть под 1.26, кстати мб тебе мемхак кинуть под 1.27+?
Мемхак мне толком не интересен, потому это бесполезно, да и при желании я и сам смогу это сделать, если разберу game.dll новых версий, но это бесполезно.
Про "отнекивание" речь шла о том, что это бесполезный код и можно решить эту проблему менее затратным результатом, про "оригинал" я о том, что выложил Драколич, когда я его брал - это было года 3 назад, может и больше.
0
32
5 лет назад
0
Не драколич этот код и придумал, чтобы его дота не фаталила при сейве игры, это был самый простой способ - запретить сейв, вот этот кусок с хайва, обьем меньше в разы, нет не триггеров, не таймеров, вовсе хендлов.
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 + за наводку :)
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.