Показать сообщение отдельно

  #22  
Старый 03.10.2023, 15:48
F0RQU1N and
Познавший АНТИЧАТ
Регистрация: 29.09.2018
Сообщений: 1,292
С нами: 4012500

Репутация: 138


По умолчанию

Цитата:
Сообщение от RTD  

Нет, это не верно. То что ты нашел это какие-то внутренности для sol2.
Все луа функции это lua_CFunction -> int (__cdecl*)(lua_State* L)
Переходить нужно по этому

Далее идешь на lua_pushcclosure и видишь функцию которая туда передается

sub_10072F70 это и есть "setFixedCameraPosition"
Вот, достает аргументы с луа стека и вызывает установку позиции камеры

Вызвать это будет не так-то просто, потому что надо получить lua_State* от moonloader, в котором зарегистрированы эти функции. Уже пахнет насилием и хуками мунлоадера или луа скриптом заглушкой который по братски сделает require плагина и не будет выгружаться, а в плагине конечно должна быть точка входа lualib_open, сам плагин измазан глобальной переменной и с заряженным патроном в револьвере, ждать момента когда можно будет прострелить колено

Ладно построили велосипед с палками вместо колес, вызываем луа функцию из С без враперов

Lua:





Код:
lua_getglobal
(
L
,
"setFixedCameraPosition"
)
;
lua_pushnumber
(
L
,
x
)
;
lua_pushnumber
(
L
,
y
)
;
lua_pushnumber
(
L
,
z
)
;
lua_pushnumber
(
L
,
rx
)
;
lua_pushnumber
(
L
,
ry
)
;
lua_pushnumber
(
L
,
rz
)
;
lua_pcall
(
L
,
6
,
0
,
0
)
;


Красота...

Но можно же вызвать сразу нормальную С функцию, вот же указатель в v1 и this в v2, а остальное наши аргументы. Окей, сидите под дебагерами и реверсите

В любом случае если и получится, то запах не очень. В первом случае обмазались калом чтобы получить lua_State* и потом заюзали враперы на lua api, получилось







C++:





Код:
lua
[
"setFixedCameraPosition"
]
(
1
,
2
,
3
,
4
,
5
,
6
)


и ждем выстрела в колено
Во втором случае захардкодили кое-как одну функцию и все равно обмазались калом во время процесса реверсинга
понятно, увидел что кол-во аргументов похожее кроме первого что я и подумал либо стейт либо контекст какой-то
 
Ответить с цитированием