Memory Hack: Загрузчик native функций

» опубликован
» Предназначение: Прочее
Версия игры: 1.26a
Этот ресурс позволяет добавлять native функции, не обязывая каждого игрока самостоятельно скачивать дополнительные файлы.
» Демонстрационные нативки
//type strings extends handle
// Если у вас нет cjass'а, то замените вручную все "strings" на "handle".
define strings = handle

native BitwiseAnd takes integer a, integer b returns integer
native BitwiseOr takes integer a, integer b returns integer
native BitwiseXor takes integer a, integer b returns integer
native BitwiseNot takes integer value returns integer
native BitwiseShl takes integer value, integer offset returns integer
native BitwiseShr takes integer value, integer offset returns integer

native IntToHex takes integer value, integer digits returns string
native Ord takes string s returns integer
native Chr takes integer i returns string

// Единицей измерения, в отличии от оригинальных функций, являются символы, а не байты.
native UTF8Length takes string s returns integer
native UTF8CharLength takes string s returns integer
native UTF8LowerCase takes string s returns string
native UTF8UpperCase takes string s returns string
native UTF8Replace takes string s, string old, string new, boolean replaceAll, boolean ignoreCase returns string
native UTF8Pos takes string s, string substr, integer start returns integer
native UTF8Copy takes string s, integer start, integer count returns string

native CreateStrings takes nothing returns strings
native DestroyStrings takes strings whichStrings returns nothing
native StringsSet takes strings whichStrings, integer index, string value returns nothing
native StringsGet takes strings whichStrings, integer index returns string
native SetStringsCount takes strings whichStrings, integer count returns nothing
native GetStringsCount takes strings whichStrings returns integer
native Split takes string s, string delimiter, integer limit returns strings
Установка:
  • Распаковать скачанный архив.
  • Переместить функцию config из оригинального скрипта, и все для неё необходимое, в распакованный "scripts\war3map.j".
  • Импортировать все файлы в карту.
  • Переименовать оригинальный скрипт в "script.j".
Проводить эти действия следует над копией карты и только перед релизом.
Для быстрого теста в редакторе, достаточно поместить файл natives.dll в папку с игрой, предварительно сменив расширение на ".mix".
Файл "libraries.txt" содержит список загружаемых библиотек, предоставляющих native функции.
» Как это работает
Игра запускает мой скрипт, который использует критическую уязвимость в движке игры, редактирует стек, тем самым перехватывая управление, и исполняет произвольный код.
Этот код загружает библиотеку loader.dll, которая, в свою очередь, читает файл libraries.txt, распаковывает и загружает все перечисленные там библиотеки, после чего компилирует и запускает оригинальный скрипт.
» Для разработчиков библиотек
Все библиотеки выгружаются по выходу из карты, следовательно, во избежание краша, они должны убрать за собой все hook'и и прочий мусор.
При желании узнать, производит ли загрузку loader.dll, или же сама игра подхватила .mix файл, можно проверить наличие события "Warcraft III Memory Hack Loader".
Проблемы:
  • vJass препроцессор игнорирует конструкцию "type A extends B", из-за чего невозможно добавить новые типы.
  • При выходе из игры, в некоторых случаях, распакованные библиотеки не удаляются.


Просмотров: 194

quq_CCCP #1 - 2 недели назад 0
Что маловато нативок чтобы так заморачиватся...
IceFog #2 - 2 недели назад (отредактировано ) 0
quq_CCCP, они лишь для демонстрации работоспособности загрузчика.
Если появится полноценная библиотека с множеством нативок, то её можно будет использовать вместе с этой системой.
Хотя, конечно же, можно обойтись и без них вовсе.
quq_CCCP #3 - 2 недели назад 0
Нет ну понятно что нативки быстрее, но я ожидал увидеть всякие хуки и прочие тяжолые функции а не всякие "или" которые делаются в мх на коленке из скрипта.
Сделайте хотя-бы список стандартных функций вара - отправить в кд способность юнита, наложить сало на способность, оглушить юнита, снять оглушение с юнита, нанести урон по области UnitDamagePoint обрезана, её же юзают спеллы, там должен быть бульекспр (кого бить) и группа (кого исключить).
Надеюсь тема получит развитие.
JaBeN_Симфер #4 - 2 недели назад 0
А можно ли сделать с помощью этой системы демо-карту, которая скачивала бы mix-файлы для ключевой карты?
IceFog #5 - 1 неделю назад 0
JaBeN_Симфер, очевидно, что нет. Она лишь позволяет добавлять нативки перед компиляцией скрипта.
С такими потребностями, тебе следует зайти в тему мемхака. Возможно, там есть сетевые функции.