mimgui пониз текстдравов

Winstаl

Известный
Автор темы
787
289
Версия MoonLoader
.026-beta
Пишу свои неймтеги на mimgui. Нужен способ отрисовывать mimgui пониз консоли, текстдравов, и всей самповской ерунды. Как это можно сделать?
 
Решение
Если вдруг кому-то понадобится, проблема с крашами решилась отлючением jit-компиляции для хука. Просто пропишите jit.off(D3D9Device, false) до local D3D9Device = hook.vmt.new(ffi.cast('intptr_t*', 0xC97C28)[0]), и краш исчезнет.

ChаtGPT

Активный
403
97
 

Winstаl

Известный
Автор темы
787
289
Видел это, и пытался применить на практике, но кроме кучи крашей ничего не получил. Как этот хук правильно использовать?
 
  • Нравится
  • Грустно
Реакции: sizeoftrickster и ChаtGPT

wojciech?

Известный
Проверенный
390
289
Видел это, и пытался применить на практике, но кроме кучи крашей ничего не получил. Как этот хук правильно использовать?
в мейне ставил?
Lua:
local D3D9Device = hook.vmt.new(ffi.cast('intptr_t*', 0xC97C28)[0]) --эти строчки вынести в main или куда там хотите чтобы хукалось самым последним
hkPresent = D3D9Device.hookMethod('long(__stdcall*)(void*, void*, void*, void*, void*)', hkPresent, 17) --эти строчки вынести чтобы хукалось самым последним
 
  • Нравится
Реакции: sizeoftrickster

Winstаl

Известный
Автор темы
787
289
в мейне ставил?
Lua:
local D3D9Device = hook.vmt.new(ffi.cast('intptr_t*', 0xC97C28)[0]) --эти строчки вынести в main или куда там хотите чтобы хукалось самым последним
hkPresent = D3D9Device.hookMethod('long(__stdcall*)(void*, void*, void*, void*, void*)', hkPresent, 17) --эти строчки вынести чтобы хукалось самым последним
Да, ставил в мейне. Вообще ничего не менялось
 

Winstаl

Известный
Автор темы
787
289
Если вдруг кому-то понадобится, проблема с крашами решилась отлючением jit-компиляции для хука. Просто пропишите jit.off(D3D9Device, false) до local D3D9Device = hook.vmt.new(ffi.cast('intptr_t*', 0xC97C28)[0]), и краш исчезнет.
 
  • Эм
Реакции: #Northn

Tema05

Известный
1,494
456
Если вдруг кому-то понадобится, проблема с крашами решилась отлючением jit-компиляции для хука. Просто пропишите jit.off(D3D9Device, false) до local D3D9Device = hook.vmt.new(ffi.cast('intptr_t*', 0xC97C28)[0]), и краш исчезнет.
Это фигня. Даже сам автор библиотеки для этих хуков говорит в этой же теме, что отключение jit компиляции помогает, но не решает проблему. Я кучу времени тестировал различные хуки на дистанции и они всегда рано или поздно ломают нахуй поток из-за сдвига регистров. Они кране ненадёжны при частых вызовах, параллельном выполнении или каких-либо экстремальных ситуациях с залагами.

Если хочется нормально делать в lua хуки то к сожалению только на C. Благо сейчас не обязательно выносить часть функционала в dll, есть решение в виде LuaJIT libtcc. Это библиотека позволяющая хоть и ограниченно, но выполнять код написанный на C внутри lua скрипта и взаимодействовать с ним. Это подходящий вариант для хуков и я видел успешные реализации подобного через данную библиотеку.

Иным же вариантом будет патчить память вписывая байты нужны ассемблеровских команд тем самым меняя логику работы программы нативно. Если не проебаться с регистрами и стеком при этих изменениях можно получить на 100% стабильный результат.
 
Последнее редактирование:
  • Нравится
Реакции: Winstаl