Подписывайтесь на наш Telegram и не пропускайте важные новости! Перейти

Вопрос Хук функций через JNI

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
14 Дек 2024
Сообщения
12
Реакции
0
Каким образом в гостах по типа вейпа4 хукают функции по типу renderIngameGui() и рендарят внутри них?
1773221066335.png
 
Каким образом в гостах по типа вейпа4 хукают функции по типу renderIngameGui() и рендарят внутри них?
Посмотреть вложение 330003

обычно просто хукают/инжектят renderIngameGui() или соседний HUD-метод и в момент его вызова дорисовывают свой оверлей поверх стандартного GUI чаще всего через mixin/asm, реже подменой HUD-класса
 
У тебя же есть возможность гетнуть класслоадер, гетнуть нужный класс и метод по маппингам
да полнучить jmethodID вообще не проблема... просто не понимаю как они рендерят что то именно в нем без wglSwapBuffers
хз, с экспы спасти
:roflanEbalo: точно! а хукнуть как
 
Чувак есть enchanche client отуда спасти
я посмотрел, там так же свапбаферы используются и весь рендер тоже через него, но смотря на его код пришла идея об использовании JNIHook_Attach (как в вырезанном оттуда бектреке) и в head метода renderIngameGui() вставлять рендер из нативного контекста майнкрафта (fontrendererobj, Gui.drawRect). спасибо за зацепку
 
обычно просто хукают/инжектят renderIngameGui() или соседний HUD-метод и в момент его вызова дорисовывают свой оверлей поверх стандартного GUI чаще всего через mixin/asm, реже подменой HUD-класса
1773240073859.png
ну я почти сделал это просто хукнув функцию напрямую из класса

hook:
Expand Collapse Copy
jnihook_result_t res = JNIHook_Attach(
    renderMethod,
    (void*)hkGuiRender,
    &originalRenderMethod
);
но остается пофиксить баг, что хук кушает остальной худ :/
 
Посмотреть вложение 330026ну я почти сделал это просто хукнув функцию напрямую из класса

hook:
Expand Collapse Copy
jnihook_result_t res = JNIHook_Attach(
    renderMethod,
    (void*)hkGuiRender,
    &originalRenderMethod
);
но остается пофиксить баг, что хук кушает остальной худ :/
Через MinHook хукай wglSwapBuffers , и не парься
 
уже решил, да и есп боксы в инвентаре как то не очень
Можно получать currentscreen, если он null, то есть игрок не в шалкере или в сундуке, может в своем инвентаре допустим, то ничего не рисовать
 
Посмотреть вложение 330026ну я почти сделал это просто хукнув функцию напрямую из класса

hook:
Expand Collapse Copy
jnihook_result_t res = JNIHook_Attach(
    renderMethod,
    (void*)hkGuiRender,
    &originalRenderMethod
);
но остается пофиксить баг, что хук кушает остальной худ :/
Че бы не сделать систему ивентов для своего же удобства и хуком вешать в метод вызов твоего рендер ивента. А там по прямым рефференсам класса вызывай майнкрафтовский рендер
 
Можно получать currentscreen, если он null, то есть игрок не в шалкере или в сундуке, может в своем инвентаре допустим, то ничего не рисовать
Ну, это просто костыль.
Можно по сути, раз уж на то пошло, пример с Forge 1.16.5 - есть ивент RenderGameOverlayEvent, который привязан к определённым слоям. То есть ты можешь реализовать у себя точно такой же ивент для отрисовки на нужном тебе слое. Думаю мысль понятна
 
Все, ребят, я хукнул метод рендера зелий из renderIngameGui и получается что то по типу фордж инджекта в head функции при помощи jnihook.h и уже там рендерить буду drawRect() и drawString для esp. всем спасибо за помощь
 
зачем ты напомнил про этот клиент, я спать не мог нормально после 1 его запуска, там столько багов 😔
Ну как база пойдет,есле пофиксить более мение
 
Ну, это просто костыль.
Можно по сути, раз уж на то пошло, пример с Forge 1.16.5 - есть ивент RenderGameOverlayEvent, который привязан к определённым слоям. То есть ты можешь реализовать у себя точно такой же ивент для отрисовки на нужном тебе слое. Думаю мысль понятна
Почему костыль?
 
Почему костыль?
Зачем делать чек на текущий screen, когда ты можешь грамотно просто отрендерить всë на слой ниже чем оверлей гуи. Ну типо зачем ему делать так, чтобы пр открытом инвентаре условно пропадал весь интерфейс софта
 
Назад
Сверху Снизу