Так все, разобрался с этим lua, не нужно было лезть в vm вообще, оказалось там создается все так же как на обычном движке (ООП), просто все это не подписано и неизвестно как перебирать классы
, и где они хранятся. Если в деталях, то после того как инициализировался интерфейс, надо обратится к адресу интерфейса на доступ, выбрать любую понравившуюся инструкцию и передать вызову функции по виртуальной таблицы любой индекс, так мы получим адрес на какой-то класс, после этого осталось просто найти в поиске значений, где используется этот адрес, так мы найдем к примеру все оружие на карте, обращаясь к классу CWeapon. А дальше, все как по учебнику, ищем какую-нибудь инструкцию работающую с массивами и использующую адрес оружия, и восстанавливаем смещения.
Инициализация класса:
Класс:
Ах, да из проблем нашлось то, что наверное 60% функции декомпилируются не правильно, а от этого приходится декомпилировать все самому, снеговик и r2dec бесполезны.