Возможно ли обращаться и вызывать Jass функции из другого приложения?
Очень интересна работа с фреймами, обращение к ним и вызов подобной функции:
native BlzGetOriginFrame takes originframetype frameType, integer index returns framehandle
Предположим есть некое самописное приложение, неважно на чем написаное, С, python, java etc. И хотелось бы в независимости от карты варика обращаться к фреймам, которые общие практически для любой карты, таким как: ORIGIN_FRAME_GAME_UI, ORIGIN_FRAME_WORLD_FRAME, ORIGIN_FRAME_HERO_BUTTON, ORIGIN_FRAME_UNIT_PANEL_BUFF_BAR, ORIGIN_FRAME_MINIMAP_BUTTON и так далее.
В мемхаке есть функции по работе с фреймами, но тогда для вызова этих функций придется переделывать каждую карту и вызывать их непосредствеено внутри карты, а хотелось бы вызывать их извне, независимо от карты.
Подскажите, такое вообще возможно реализовать?

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

в 1.26 так делал xgm.guru/p/wc3/163817
Ща mix убраны и архитектура wc переделана, но идея таже - внедриться в процесс варкрафта и найти оффсеты функций.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
23
3 года назад
0
раздутое эго
1
2
3 года назад
1
pro100master, Вот у вас оно может и раздутое, раз такое пишите. А я всего лишь спрашиваю у более знающих людей.
2
32
3 года назад
2
Офк можно, весь софт для вара так делает, адреса нативок в game.dll давно выложены, ну приложение - это библиотека которая будет висеть в процессе вара. Работа с фреймами возможна на любом патче, если речь о сторонней либе.
1
37
3 года назад
1
Можно было устроить обмен данными через файлы и preload exploit без внедрения извне, но теперь вроде чтение из файла ограничили одним разом за игру.
2
2
3 года назад
2
quq_CCCP, Спасибо, СССР, ты всегда даешь дельные, лаконичные ответы. Я погуглил, но максимум что нашел, только это
но я так и искал "адреса нативок в game.dll", увы не густо :)
ScorpioT1000, Благодарю за ответ, для меня это совсем что-то новое, буду изучать
2
7
3 года назад
2
в 1.26 так делал xgm.guru/p/wc3/163817
Ща mix убраны и архитектура wc переделана, но идея таже - внедриться в процесс варкрафта и найти оффсеты функций.
Принятый ответ
2
37
3 года назад
2
по прелоаду можно еще в исходник заглянуть от этого xgm.guru/p/scc
1
2
3 года назад
1
Zetox, там приложены функции
это функции и их адреса (оффсеты ) из game.dll и т.е. к ним можно обращаться, например GameDll + 0x2de2a0 ?
или я совсем что-то перепутал?
2
7
3 года назад
Отредактирован Zetox
2
Если использовать preload + карта на lua, можно загрузить любой код на исполнение, в том числе переопределить функции. Единственный нюанс - если прочесть файл прелоада повторно, он прочитает данные из озу, а не из файла.
Кстати, тот факт, что он читает из озу при повторном чтении, можно найти область памяти, где находится этот прелоад и переписывать как тебе угодно.

Rejuvenation:
Zetox, там приложены функции
это функции и их адреса (оффсеты ) из game.dll и т.е. к ним можно обращаться, например GameDll + 0x2de2a0 ?
или я совсем что-то перепутал?
Да, вот только это актуально было для 1.26, для 1.32 надо заново искать, только с новым патчем все смениться
2
32
3 года назад
2
Ну с новыми патчами все сложно, т.к стабильной версии на года нету, а во вторых близзарды все перелопатили, придется все искать с нуля и искать способ как залезть в варкравт.

Rejuvenation:
quq_CCCP, Спасибо, СССР, ты всегда даешь дельные, лаконичные ответы. Я погуглил, но максимум что нашел, только это
но я так и искал "адреса нативок в game.dll", увы не густо :)
ScorpioT1000, Благодарю за ответ, для меня это совсем что-то новое, буду изучать
Я имел ввиду мемхак, и его модифицации, рендер едж, и открытый софт вроде мапхаков, кеев, всяких интерфейсов улучшенных, ибо они делают все тоже самое, берут адресс дефолтных функций вара и вызывают их, рисуя то или иное, лишь 1 китайская наработка работает напрямую с директХ, могу кинуть, но там нет и не будет исходников, лишь готовая демо длл.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.