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

Вопрос Rust — Фильтрация BaseNetworkable и чтение данных BasePlayer

Sloppy
Начинающий
Начинающий
Статус
Оффлайн
Регистрация
13 Фев 2026
Сообщения
394
Реакции
7
Здорово, реверсеры. Решил плотно поковырять Rust на C#, но наткнулся на классические грабли с итерацией объектов. Потихоньку переползаю на C++, но пока проект живет на шарпе, пытаюсь выжать максимум из того, что есть.

Суть проблемы: успешно зацепился за список объектов через BaseNetworkable, но кроме ClassName и prefabID вытащить ничего не получается. При обновлении адресов после патча потратил кучу времени на FOV и фикс самого списка, но данные игрока (имя, SteamID) упорно не хотят читаться, хотя флаги типа IsWounded или IsAlive залетают на ура.

Текущая логика итерации:

Код:
Expand Collapse Copy
public void Demo(ulong baseNetworkableStr, int Index)
{
 ulong data = ReadPtr(baseNetworkableStr + 0x10); 
 ulong entityBaseStr = ReadPtr(data + 0x20 + ((ulong)Index * 8));
 ulong prefabID = ReadPtr(entityBaseStr + 0x30); 
 ulong pKlass = ReadPtr(entityBaseStr); 
 ulong classNameStr = ReadPtr(pKlass + 0x10);
 string className = ReadCString(classNameStr);
}

На данный момент из интересного тянутся только базовые сущности:
  1. BasePlayer (Prefab: 4108440852)
  2. LootContainer (Prefab: 966676416)
  3. MapMarkerCH47 (Prefab: 5138185490)
  4. VendingMachineMapMarker

Главный затык — это BasePlayer. Почти все логические функции отрабатывают (вижу, кто спит, кто ранен, позиции), но попытка прочитать _displayName или userID заканчивается ничем. Есть подозрение на шифрование строк или я просто юзаю битые оффсеты для этих полей.

Код:
Expand Collapse Copy
public static class BasePlayer
{
 public const ulong playerModel = 0x508;
 public const ulong playerEyes = 0x630;
 public const ulong playerInventory = 0x390;
 public const ulong clActiveItem = 0x4e8;
 public const ulong baseMovement = 0x2b8;
 public const ulong playerFlags = 0x630;
 public const ulong playerInput = 0x350;
 public const ulong _displayName = 0x358;
 public const ulong clothingMoveSpeedReduction = 0x718;
 public const ulong lifestate = 0x270;
 public const ulong currentTeam = 0x4b8;
 public const ulong userID = 0x678;
 public const ulong UserIDString = 0x5d0;
}

Кто сталкивался с подобным в Unity/IL2CPP играх? Возможно, я упускаю какой-то уровень вложенности при чтении строк или в Rust ввели дополнительные проверки на доступ к данным игрока.

Кто уже фиксил получение имен в последних патчах, отпишите в тред.
 
Назад
Сверху Снизу