Всем привет. Буду краток.
Подскажите, если подложить самописный dll в архив mpq, то можно ли как-то использовать его функции внутри war3map.j?
И запустится ли вообще карта?
Версия игры 1.27b.

Принятый ответ

Нужна функция ExportAndInjectDLL (название примерное), она есть в первом и втором мемхаке расчитанным на 126, не осведомлён о возможностях 127b, если там только чтение памяти без записи, то ничего не получится.
Так что если вы думаете, что мемхаки одинаковые то это не так. Хотя могу использовать одну и ту же библиотеку
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
32
3 года назад
0
Нужна функция ExportAndInjectDLL (название примерное), она есть в первом и втором мемхаке расчитанным на 126, не осведомлён о возможностях 127b, если там только чтение памяти без записи, то ничего не получится.
Так что если вы думаете, что мемхаки одинаковые то это не так. Хотя могу использовать одну и ту же библиотеку
Принятый ответ
0
32
3 года назад
0
Ну в теории возможно, на практике - нужно найти LoadLibraryA c помощью мемхака, а также найти функции для работы с мпк, нужно выгрузить библиотеку из архива карты, проверить есть ли она, потом если процесса с этой либой в варе нету, загрузить, ну а потом еще и найти в потоке либы эти функции которые ты там хочешь юзать, это все должно быть рассчитано на 1.27б ибо твоей либе без знаний оффсетов на функции Game.dll делать нечего. Вариант не очень то надежный, да и может напоротся на
  1. библиотека не найдена
  2. не удалось распаковать библиотеку
  3. процесс не отвечает.
Ну и твоя библиотека будет мозолить глаза юзерам в папке с варом...
Там вроде были пути покруче, как полностью код карты в дллке, а wa3map,j имеет урезаный мемхак как у китайцев и альтернативный вариант запуска либы. Ну и работает, там решают проблемы чтобы твои патчи и либы не мешали работать другим картам, ибо просто так ты их не выгрузишь и до перезапуска игры они висят в памяти игры.
0
32
3 года назад
0
ибо просто так ты их не выгрузишь и до перезапуска игры они висят в памяти игры
с выгрузкой всё хорошо, даже на 1 мемхаке я делал когда подшивал wfe в карту, я выгружал библиотеку при наведении на инвентарь, и обратно загружал, кароче туда сюда дёргал, вообще не было проблем даже в мультиплеере

Вспомнил, по моему для выгрузки из памяти мне отдельно Алексей делал функцию, это не коробочное решение
0
2
3 года назад
Отредактирован Rejuvenation
0
Да я просто все про античит для 1.27b парюсь, уже весь xgm наверное вкурсе)
Анрайз же выкатил свой мемхак 1.5 версии, там добавил поддержку для 1.27b и 1.28f и ушел в закат. У меня не получилось все это сделать для своей карты, а помочь пока что никто не может.
Думал может как-то можно без мемхака обойтись и через самописный dll это проверять с WinAPI. Но если без мемхака никак не подружить dll с jass, то понятно.
Спасибо за советы, я нашел и ExportAndInjectDLL, и LoadLibraryA
0
32
3 года назад
0
Rejuvenation, ну вот ты их нашел, они не работают или не знаешь как использовать?
0
2
3 года назад
0
Не получается настроить, они так или иначе используют std_call, а там в свою очередь идет WriteRealMemory. Это чистой воды мемхак уже.
Но у меня не получается его засэтапить для 27 версии.
0
32
3 года назад
0
Rejuvenation, так возьми тот самый мемхак Анрайза который "работает", если там нет этой функции значит она не работает в 127 из за специфики его работы. Ну а если есть, то просто используй её
0
2
3 года назад
Отредактирован Rejuvenation
0
Bergi_Bear, Я так и пытался сделать, но наверное криво переношу, карта просто не создается

И вроде как все необходимое перенес:
call Init_APITypecast() API for general value typecasting, required by some of the functions!
call Init_APIMemory() API for general memory read/write management, everything else depends on this!
call Init_APIMemoryCalls() API for tapping into std/this/cdecl calls and much more, pretty much core of everything.
call Init_APIMemoryBitwise() API for bitwise operations many other functions use this.
call Init_APIMemoryKernel() API for accessing some of the WinAPI functions, mostly needed for VirtualProtect.
call Init_APIMemoryRestorer() API that is responsible for cleaning up all memory modifications after exiting the map.
call Init_APIMemoryString() API for getting/setting strings from/into memory, most functions use this!
call Init_AntiHack() Not required, this only works on 1.26a and a bit on 1.27b, as it states it counters hacks.
И глобальные переменные, которые нужны для работы. Но все равно где-то накосячил
Загруженные файлы
0
32
3 года назад
0
Rejuvenation, что за не создаётся? выкидывает из лобби? ну так у тебя просто проблемы с использованием jass кода, а не с самим мемхаком, его обрезать крайне сложно, если не понимаешь, используй вообще весь. Или у вас там лимиты в 127 по 8 метров?
0
2
3 года назад
0
Bergi_Bear, Да, выкидывает из лобби. Нет, лимитов по 8 метров нет.
0
32
3 года назад
0
Rejuvenation, только не говори что у тебя распротекченная карта и ты не можешь её сохранить в WE
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.