- Статус
- Оффлайн
- Регистрация
- 13 Фев 2026
- Сообщения
- 514
- Реакции
- 13
Очередной завоз обнов в Roblox и очередные приколы с оффсетами. Пилю UNC экзекутор под билд version-26c90be22e0d4758. Module stomping через SEC_IMAGE в mfcore.dll залетает отлично, получение L (lua_State) через цепочку ScriptContext -> ExtraSpace тоже стабильное (через L+0x18 глобал валидируется).
Но сейчас уперся в стену: не могу выловить таблицу _G, чтобы регать новые UNC функции через luaH_set.
Что уже пробовал:
Из того, что уже накопал и вытащил:
Дампер пасует на поиске lua_setfield и lua_pushcclosurek, так как анкор-строки типа "not enough memory to allocate C closure" в .rdata тупо стерли. Из выживших якорей остались только стринги ошибок рантайма и залоченных метатаблиц.
Собственно, вопрос к тем, кто ковыряет актуальный движок: куда они могли увести gt в lua_State? Есть ли альтернативный путь достучаться до глобалов через уже известные структуры или живая сигна под lua_setfield?
Готов обменяться оффсетами, если кто-то тоже сейчас сидит над этим билдом.
Но сейчас уперся в стену: не могу выловить таблицу _G, чтобы регать новые UNC функции через luaH_set.
Что уже пробовал:
- L+0x48 (стандартный LuaState::gt) — поинтер читается, но по адресу в первом байте 0x00 вместо 0x06 (LUA_TTABLE).
- index2adr(L, -10002) по RVA 0x41B0950 — возвращает TValue, где в поле value лежит global_State (G), а не сама таблица _G.
- Closure.env (+0x10) на всех найденных CClosures (нашел 13 штук) — там либо нули, либо tt=0x00.
Из того, что уже накопал и вытащил:
- ptrenckey offset:
Код:
0x4B8 - Полностью разобраны структуры: Closure, TValue, Proto, TString.
- Живые функции: luaF_newCclosure, luaS_newlstr, luaH_set/setstr.
Дампер пасует на поиске lua_setfield и lua_pushcclosurek, так как анкор-строки типа "not enough memory to allocate C closure" в .rdata тупо стерли. Из выживших якорей остались только стринги ошибок рантайма и залоченных метатаблиц.
_VERSION (x11)
The metatable is locked
delay function requires
runtime error
attempt to index
The metatable is locked
delay function requires
runtime error
attempt to index
Собственно, вопрос к тем, кто ковыряет актуальный движок: куда они могли увести gt в lua_State? Есть ли альтернативный путь достучаться до глобалов через уже известные структуры или живая сигна под lua_setfield?
Готов обменяться оффсетами, если кто-то тоже сейчас сидит над этим билдом.