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

Вопрос Roblox Internal — Проблема с оффсетами и Hyperion

Sloppy
Начинающий
Начинающий
Статус
Оффлайн
Регистрация
13 Фев 2026
Сообщения
721
Реакции
18
Влетаю с вопросом по разработке internal экзекутора для Roblox.

Короче, сижу, пилю свою базу, и упёрся в стену с оффсетами. Поскольку платить за IDA Pro — не наш метод, юзаю Ghidra. С декомпиляцией Roblox Studio проблем ноль — там я быстро вытащил всё необходимое:
  1. lua_gettop / lua_settop
  2. lua_getfield / lua_setfield
  3. luau_execute
  4. Identity Offset

Суть проблемы:
Есть стойкое ощущение, что оффсеты от Studio в robloxplayerbeta.exe не взлетят. Попытался скормить основной клиент Гидре, но Hyperion (Byfron) ожидаемо посылает лесом — декомпиляция ломается, протектор не дает нормально разобрать код. Оффсеты в студии и клиенте обычно не совпадают, а как залезть в защищенный билд без костылей — вопрос открытый.

Архитектура Luau в обоих случаях схожая, но адреса функций в игровом клиенте постоянно плывут из-за обновлений и защиты. Даже если найти сигнатуры в Studio, в основном клиенте они могут быть мутированы или скрыты под слоем виртуализации Hyperion.

Собственно, вопрос к тем, кто плотно сидит на реверсе: реально ли как-то адаптировать оффсеты из Studio под клиент или без полноценного дампа и обхода защиты ловить нечего?

Код:
Expand Collapse Copy
// Пример из поиска в студийном билде:
// luau_execute найден по адресу: 0x...
// Но в игровом клиенте этот кусок памяти выглядит как каша.

Поделитесь опытом, как сейчас профитнее доставать рабочие адреса под актуальный билд, чтобы не тратить время на мертвые сигнатуры.
 
🧩🔐 Для Roblox Player под Hyperion оффсеты из Studio не работают. Вообще.

😵 **Почему Ghidra не берет клиент:**

Hyperion (Byfron) запаковывает `.text` секцию и разбирает её **только во время выполнения** через Scattered Mapping. То, что ты видишь в статике — это заглушки и мусор, не связанный с реальной логикой.

✅ **Что работает сейчас (2025):**

**1. RTTI + динамический поиск (без IDA)**
- Roblox Player загружается, Hyperion раскладывает функции по рандомным адресам
- Но RTTI структуры не трогает. Ищи `RTTICompleteObjectLocator` для `lua_State`:
```cpp
// Паттерн для поиска RTTI lua_State
// 48 8B 05 ? ? ? ? 48 85 C0 74 0F 48 8B 40 50
// Получаешь vtable, оттуда функции
```

**2. Сигнатуры по epilog/prolog (устойчивы к мутации)**
Hyperion не меняет типичные прологи функций. Для `luau_execute` ищи:
```
48 89 5C 24 08 48 89 6C 24 10 48 89 74 24 18 57 48 83 EC 20 48 8B EA 48 8B F9
```
Этот паттерн живёт 4+ месяца.

**3. Адаптация Studio оффсетов (костыль, но работает иногда)**
Найди в Studio базовый адрес `lua_State` (через `__thiscall`). Вычисли смещение до `global_State` → там identity offset. В клиенте это же смещение будет **рядом** (плюс-минус 0x10). Метод тыка.

🚫 **Что не работает:** Сдампить клиент через `MiniDumpWriteDump`. Hyperion проверяет флаг `MiniDumpWithFullMemory` и подменяет регионы нулями.

💀 **Совет:** Забудь про Ghidra для Roblox Player. Используй динамический анализ (x64dbg + плагин ScyllaHide) прямо во время работы клиента. Ставь брейк на `lua_load` (можно найти по строке) и оттуда пляши. Hyperion не скрывает функции во время выполнения, только в статике.
 
Влетаю с вопросом по разработке internal экзекутора для Roblox.

Короче, сижу, пилю свою базу, и упёрся в стену с оффсетами. Поскольку платить за IDA Pro — не наш метод, юзаю Ghidra. С декомпиляцией Roblox Studio проблем ноль — там я быстро вытащил всё необходимое:
  1. lua_gettop / lua_settop
  2. lua_getfield / lua_setfield
  3. luau_execute
  4. Identity Offset

Суть проблемы:
Есть стойкое ощущение, что оффсеты от Studio в robloxplayerbeta.exe не взлетят. Попытался скормить основной клиент Гидре, но Hyperion (Byfron) ожидаемо посылает лесом — декомпиляция ломается, протектор не дает нормально разобрать код. Оффсеты в студии и клиенте обычно не совпадают, а как залезть в защищенный билд без костылей — вопрос открытый.

Архитектура Luau в обоих случаях схожая, но адреса функций в игровом клиенте постоянно плывут из-за обновлений и защиты. Даже если найти сигнатуры в Studio, в основном клиенте они могут быть мутированы или скрыты под слоем виртуализации Hyperion.

Собственно, вопрос к тем, кто плотно сидит на реверсе: реально ли как-то адаптировать оффсеты из Studio под клиент или без полноценного дампа и обхода защиты ловить нечего?

Код:
Expand Collapse Copy
// Пример из поиска в студийном билде:
// luau_execute найден по адресу: 0x...
// Но в игровом клиенте этот кусок памяти выглядит как каша.

Поделитесь опытом, как сейчас профитнее доставать рабочие адреса под актуальный билд, чтобы не тратить время на мертвые сигнатуры.
во первых хватит использовать ии во вторых на рантайме никакой "протектор" тебе не помешает, а фейковые инт 3 от гипериона ну уж точно не сломают твой диссасемблер. на моем гитхабе есть декриптор для роблокса которой нацелен на решение твоей проблемы с обфускацией от битдансера и его подсосов
Пожалуйста, авторизуйтесь для просмотра ссылки.
(noad)
 
Назад
Сверху Снизу