Гайд Как расшифровать оффсеты Rust

Начинающий
Статус
Оффлайн
Регистрация
26 Ноя 2022
Сообщения
9
Реакции[?]
1
Поинты[?]
1K
Недавно в раст добавили обфускацию оффсетов, и пастеркам сложно зайти на uc (noad) и сделать это по гайду оттуда.

1732441034036.png

1. Для примера возьмем BasePlayer. Сначала нужно получить «TypeInfo» класса, найденного в script.json (сгенерированном il2cppdumper).

1732441273473.png

2. Откройте GameAssembly.dll в IDA и перейдите по адресу классов. Для примера переименовал qword в «base_player_c».

1732441198815.png


3.Здесь мы можем либо нажать X, чтобы просмотреть ссылки на эту переменную. Если нажать F5 для декомпиляции этой функции, то видно что она вызывает список других функций, которые ссылаются на другие qwords.

1732441383345.png

Нам это неинтересно, поэтому мы можем прокрутить изображение дальше вниз, пока не найдем, где юзается переменная base_player_c.

1732441605810.png


Теперь мы видим, что он устанавливает v28 в base_player_c и проверяет, является ли base_player_c + 0xE0(224) действительным, и если нет, то переинициализирует класс. После этого вызывается функция с v28 + некоторыми смещениями в качестве первого параметра и еще одним qword в качестве второго параметра. Мы можем дважды щелкнуть на этой функции, чтобы перейти к ней и декомпилировать.
Поскольку мы уже знаем, что первый параметр (a1) - это наш base_player_c + некоторые смещения, нам просто нужно посмотреть, где используется a1, потому что игра должна сначала расшифровать это значение перед использованием.

То, что я называю «некоторыми смещениями» (base_player_c + 0xB8 ] + 0x958 ), сначала указывает на статические field'ы (0xB8), а затем на VALID экземпляр visiblePlayerList (0x958).

1732441667650.png


4. Дважды нажать на функцию, чтобы перейти к ней и декомпилировать ее. В результате вы получите расшифрованную функцию.

1732442004665.png




И теперь вы научились декомпилить оффсеты, чтобы обновлять свои пасты плюсминуса. Этот процесс по идее можно автоматизировать и делать это быстрее, к тому же репозиторий BlazerDumper больше не обновляют.





UPD: 2 часть скоро
 
Последнее редактирование:
Начинающий
Статус
Оффлайн
Регистрация
26 Ноя 2022
Сообщения
9
Реакции[?]
1
Поинты[?]
1K
Начинающий
Статус
Оффлайн
Регистрация
24 Фев 2024
Сообщения
6
Реакции[?]
0
Поинты[?]
0
бл братан не вдупляю это верся для мак ос или stading branch?
Можешь для вкатунов объяснить в чем разница + мак ос(Макос для мака? хаха или что-то другое) + что такое stading branch
 
Начинающий
Статус
Оффлайн
Регистрация
14 Май 2023
Сообщения
265
Реакции[?]
7
Поинты[?]
4K
Можешь для вкатунов объяснить в чем разница + мак ос(Макос для мака? хаха или что-то другое) + что такое stading branch
1. mac os - версия для пк и ноутов от эпл
2. stading branch - типо открытая бета
 
Начинающий
Статус
Оффлайн
Регистрация
27 Окт 2022
Сообщения
81
Реакции[?]
7
Поинты[?]
5K
Можешь для вкатунов объяснить в чем разница + мак ос(Макос для мака? хаха или что-то другое) + что такое stading branch
да я сам не ебу, я год плтора уже ничем не занимался, я хочу для себя софтик сдела и катать с ним)
1. mac os - версия для пк и ноутов от эпл
2. stading branch - типо открытая бета
а офсеты там везде одинаковые?
 
Начинающий
Статус
Оффлайн
Регистрация
14 Май 2023
Сообщения
265
Реакции[?]
7
Поинты[?]
4K
#define oGameObjectManager 0x17C1F18 //0x17C1F18 0x17D69F8
#define oBaseNetworkable 233477144 //0x29BF3E0 BaseNetworkable_c* 3065630
#define oConVar 88504072 //ConVar_Graphics_c*


//class BasePlayer
#define oPlayerFlags 0x538 // public BasePlayer.PlayerFlags playerFlags;
#define oPlayerName 0x5A0 // protected string _displayName;
#define oPlayerHealth 0x21C // private float _health;
#define olastSentTickTime 0x4F4 // не требо private float lastSentTickTime;
#define oClientTeam 0x400 // public PlayerTeam clientTeam;
#define oLifestate 0x214 // public BaseCombatEntity.LifeState lifestate;
#define oSteamID 0x18 // public ulong userID;
#define oPlayerInventory 0x20 // public PlayerInventory inventory;
#define oActiveUID 0x438// private uint clActiveItem;
#define oFrozen 0x2C8// public bool Frozen;
#define oWaterBonus 0x61C// public float clothingWaterSpeedBonus;
#define oNoBlockAiming 0x614 // public bool clothingBlocksAiming;
#define oSpeedReduction 0x618// public float clothingMoveSpeedReduction;
#define oClothingAccuracyBonus 0x620 // public float clothingAccuracyBonus;


//EntityRef
#define oHeld 0xB8 //private EntityRef heldEntity ..private EntityRef heldEntity; // 0x98 //private EntityRef heldEntity
#define oStancePenalty 0x384 //private float stancePenalty;
#define oAimconePenalty 0x388 //private float aimconePenalty;
#define oHipAimCone 0x33C //public float hipAimCone;
#define oAimCone 0x338 //public float aimCone; (class BaseProjectile)
#define oAimconePenaltyPerShot 0x340 //public float aimconePenaltyPerShot;
#define oSuccessFraction 0x3D8 // public float successFraction;
#define oAttackRadius 0x2D4 //public float attackRadius;
#define oEffectiveRange 0x22C //public float effectiveRange;
#define oIsAutomatic 0x2D8 //public bool isAutomatic;
#define oMaxDistance 0x2D0 //public float maxDistance; (class BaseMelee)
#define oRepeatDelay 0x224 //public float repeatDelay;

//BaseProjectile
#define oAuto 0x2C8 //public bool automatic;
#define oFastReload 0x308 // bool fractionalReload
#define oDistance 0x2C0 // public float distanceScale
#define oprojectileVelocityScale 0x2C4 //public float projectileVelocityScale
#define oShortname 0x28// public string shortname;

//BaseMovement
#define oPlayerMovement 0x2E8 // public BaseMovement movement;
#define oGravityMultiplier 0x8C // public float gravityMultiplier;

#define oGroundAngleNew 0xD8 // private float groundAngleNew;

//RecoilProperties
#define oRecoilProperties 0x328 //public RecoilProperties recoil;
#define oRecoilMinYaw 0x18 //public float recoilYawMin;
#define oRecoilMaxYaw 0x1C //public float recoilYawMax;
#define oRecoilMinPitch 0x20 //public float recoilPitchMin;
#define oRecoilMaxPitch 0x24 //public float recoilPitchMax;


//PlayerModel
#define oPlayerModel 0x2C0 // public PlayerModel playerModel;
#define oVisible 0x244 // internal bool visible;

//PlayerInput
#define oPlayerInput 0x2E0// public PlayerInput input;
#define oBodyAngles 0x44 // private Vector3 bodyAngles;
#define oRecoilAngles 0x80 // public Vector3 recoilAngles;
#define oHasKeyFocus 0xCC // private bool hasKeyFocus;


#define oArrowBack 0x3D8 // private float arrowBack;
#define oTriggerReady 0x3D5 // protected bool attackReady;
#define oItemDefinition 0x18 // public ItemDefinition info;
#define oItemid 0x80 // public int itemid;

#define odisplayname 0x30 //public Translate.Phrase displayName;//public class ItemDefinition : MonoBehaviour

бля сдампил с макос версии вх не работает ниче не работает
 
Начинающий
Статус
Оффлайн
Регистрация
1 Янв 2023
Сообщения
25
Реакции[?]
0
Поинты[?]
0
#define oGameObjectManager 0x17C1F18 //0x17C1F18 0x17D69F8
#define oBaseNetworkable 233477144 //0x29BF3E0 BaseNetworkable_c* 3065630
#define oConVar 88504072 //ConVar_Graphics_c*


//class BasePlayer
#define oPlayerFlags 0x538 // public BasePlayer.PlayerFlags playerFlags;
#define oPlayerName 0x5A0 // protected string _displayName;
#define oPlayerHealth 0x21C // private float _health;
#define olastSentTickTime 0x4F4 // не требо private float lastSentTickTime;
#define oClientTeam 0x400 // public PlayerTeam clientTeam;
#define oLifestate 0x214 // public BaseCombatEntity.LifeState lifestate;
#define oSteamID 0x18 // public ulong userID;
#define oPlayerInventory 0x20 // public PlayerInventory inventory;
#define oActiveUID 0x438// private uint clActiveItem;
#define oFrozen 0x2C8// public bool Frozen;
#define oWaterBonus 0x61C// public float clothingWaterSpeedBonus;
#define oNoBlockAiming 0x614 // public bool clothingBlocksAiming;
#define oSpeedReduction 0x618// public float clothingMoveSpeedReduction;
#define oClothingAccuracyBonus 0x620 // public float clothingAccuracyBonus;


//EntityRef
#define oHeld 0xB8 //private EntityRef heldEntity ..private EntityRef heldEntity; // 0x98 //private EntityRef heldEntity
#define oStancePenalty 0x384 //private float stancePenalty;
#define oAimconePenalty 0x388 //private float aimconePenalty;
#define oHipAimCone 0x33C //public float hipAimCone;
#define oAimCone 0x338 //public float aimCone; (class BaseProjectile)
#define oAimconePenaltyPerShot 0x340 //public float aimconePenaltyPerShot;
#define oSuccessFraction 0x3D8 // public float successFraction;
#define oAttackRadius 0x2D4 //public float attackRadius;
#define oEffectiveRange 0x22C //public float effectiveRange;
#define oIsAutomatic 0x2D8 //public bool isAutomatic;
#define oMaxDistance 0x2D0 //public float maxDistance; (class BaseMelee)
#define oRepeatDelay 0x224 //public float repeatDelay;

//BaseProjectile
#define oAuto 0x2C8 //public bool automatic;
#define oFastReload 0x308 // bool fractionalReload
#define oDistance 0x2C0 // public float distanceScale
#define oprojectileVelocityScale 0x2C4 //public float projectileVelocityScale
#define oShortname 0x28// public string shortname;

//BaseMovement
#define oPlayerMovement 0x2E8 // public BaseMovement movement;
#define oGravityMultiplier 0x8C // public float gravityMultiplier;

#define oGroundAngleNew 0xD8 // private float groundAngleNew;

//RecoilProperties
#define oRecoilProperties 0x328 //public RecoilProperties recoil;
#define oRecoilMinYaw 0x18 //public float recoilYawMin;
#define oRecoilMaxYaw 0x1C //public float recoilYawMax;
#define oRecoilMinPitch 0x20 //public float recoilPitchMin;
#define oRecoilMaxPitch 0x24 //public float recoilPitchMax;


//PlayerModel
#define oPlayerModel 0x2C0 // public PlayerModel playerModel;
#define oVisible 0x244 // internal bool visible;

//PlayerInput
#define oPlayerInput 0x2E0// public PlayerInput input;
#define oBodyAngles 0x44 // private Vector3 bodyAngles;
#define oRecoilAngles 0x80 // public Vector3 recoilAngles;
#define oHasKeyFocus 0xCC // private bool hasKeyFocus;


#define oArrowBack 0x3D8 // private float arrowBack;
#define oTriggerReady 0x3D5 // protected bool attackReady;
#define oItemDefinition 0x18 // public ItemDefinition info;
#define oItemid 0x80 // public int itemid;

#define odisplayname 0x30 //public Translate.Phrase displayName;//public class ItemDefinition : MonoBehaviour

бля сдампил с макос версии вх не работает ниче не работает
как дампить с макос версии?
#define oGameObjectManager 0x17C1F18 //0x17C1F18 0x17D69F8
#define oBaseNetworkable 233477144 //0x29BF3E0 BaseNetworkable_c* 3065630
#define oConVar 88504072 //ConVar_Graphics_c*


//class BasePlayer
#define oPlayerFlags 0x538 // public BasePlayer.PlayerFlags playerFlags;
#define oPlayerName 0x5A0 // protected string _displayName;
#define oPlayerHealth 0x21C // private float _health;
#define olastSentTickTime 0x4F4 // не требо private float lastSentTickTime;
#define oClientTeam 0x400 // public PlayerTeam clientTeam;
#define oLifestate 0x214 // public BaseCombatEntity.LifeState lifestate;
#define oSteamID 0x18 // public ulong userID;
#define oPlayerInventory 0x20 // public PlayerInventory inventory;
#define oActiveUID 0x438// private uint clActiveItem;
#define oFrozen 0x2C8// public bool Frozen;
#define oWaterBonus 0x61C// public float clothingWaterSpeedBonus;
#define oNoBlockAiming 0x614 // public bool clothingBlocksAiming;
#define oSpeedReduction 0x618// public float clothingMoveSpeedReduction;
#define oClothingAccuracyBonus 0x620 // public float clothingAccuracyBonus;


//EntityRef
#define oHeld 0xB8 //private EntityRef heldEntity ..private EntityRef heldEntity; // 0x98 //private EntityRef heldEntity
#define oStancePenalty 0x384 //private float stancePenalty;
#define oAimconePenalty 0x388 //private float aimconePenalty;
#define oHipAimCone 0x33C //public float hipAimCone;
#define oAimCone 0x338 //public float aimCone; (class BaseProjectile)
#define oAimconePenaltyPerShot 0x340 //public float aimconePenaltyPerShot;
#define oSuccessFraction 0x3D8 // public float successFraction;
#define oAttackRadius 0x2D4 //public float attackRadius;
#define oEffectiveRange 0x22C //public float effectiveRange;
#define oIsAutomatic 0x2D8 //public bool isAutomatic;
#define oMaxDistance 0x2D0 //public float maxDistance; (class BaseMelee)
#define oRepeatDelay 0x224 //public float repeatDelay;

//BaseProjectile
#define oAuto 0x2C8 //public bool automatic;
#define oFastReload 0x308 // bool fractionalReload
#define oDistance 0x2C0 // public float distanceScale
#define oprojectileVelocityScale 0x2C4 //public float projectileVelocityScale
#define oShortname 0x28// public string shortname;

//BaseMovement
#define oPlayerMovement 0x2E8 // public BaseMovement movement;
#define oGravityMultiplier 0x8C // public float gravityMultiplier;

#define oGroundAngleNew 0xD8 // private float groundAngleNew;

//RecoilProperties
#define oRecoilProperties 0x328 //public RecoilProperties recoil;
#define oRecoilMinYaw 0x18 //public float recoilYawMin;
#define oRecoilMaxYaw 0x1C //public float recoilYawMax;
#define oRecoilMinPitch 0x20 //public float recoilPitchMin;
#define oRecoilMaxPitch 0x24 //public float recoilPitchMax;


//PlayerModel
#define oPlayerModel 0x2C0 // public PlayerModel playerModel;
#define oVisible 0x244 // internal bool visible;

//PlayerInput
#define oPlayerInput 0x2E0// public PlayerInput input;
#define oBodyAngles 0x44 // private Vector3 bodyAngles;
#define oRecoilAngles 0x80 // public Vector3 recoilAngles;
#define oHasKeyFocus 0xCC // private bool hasKeyFocus;


#define oArrowBack 0x3D8 // private float arrowBack;
#define oTriggerReady 0x3D5 // protected bool attackReady;
#define oItemDefinition 0x18 // public ItemDefinition info;
#define oItemid 0x80 // public int itemid;

#define odisplayname 0x30 //public Translate.Phrase displayName;//public class ItemDefinition : MonoBehaviour

бля сдампил с макос версии вх не работает ниче не работает
кинь кстати полный дамп
 
Начинающий
Статус
Оффлайн
Регистрация
27 Окт 2022
Сообщения
81
Реакции[?]
7
Поинты[?]
5K
#define oGameObjectManager 0x17C1F18 //0x17C1F18 0x17D69F8
#define oBaseNetworkable 233477144 //0x29BF3E0 BaseNetworkable_c* 3065630
#define oConVar 88504072 //ConVar_Graphics_c*


//class BasePlayer
#define oPlayerFlags 0x538 // public BasePlayer.PlayerFlags playerFlags;
#define oPlayerName 0x5A0 // protected string _displayName;
#define oPlayerHealth 0x21C // private float _health;
#define olastSentTickTime 0x4F4 // не требо private float lastSentTickTime;
#define oClientTeam 0x400 // public PlayerTeam clientTeam;
#define oLifestate 0x214 // public BaseCombatEntity.LifeState lifestate;
#define oSteamID 0x18 // public ulong userID;
#define oPlayerInventory 0x20 // public PlayerInventory inventory;
#define oActiveUID 0x438// private uint clActiveItem;
#define oFrozen 0x2C8// public bool Frozen;
#define oWaterBonus 0x61C// public float clothingWaterSpeedBonus;
#define oNoBlockAiming 0x614 // public bool clothingBlocksAiming;
#define oSpeedReduction 0x618// public float clothingMoveSpeedReduction;
#define oClothingAccuracyBonus 0x620 // public float clothingAccuracyBonus;


//EntityRef
#define oHeld 0xB8 //private EntityRef heldEntity ..private EntityRef heldEntity; // 0x98 //private EntityRef heldEntity
#define oStancePenalty 0x384 //private float stancePenalty;
#define oAimconePenalty 0x388 //private float aimconePenalty;
#define oHipAimCone 0x33C //public float hipAimCone;
#define oAimCone 0x338 //public float aimCone; (class BaseProjectile)
#define oAimconePenaltyPerShot 0x340 //public float aimconePenaltyPerShot;
#define oSuccessFraction 0x3D8 // public float successFraction;
#define oAttackRadius 0x2D4 //public float attackRadius;
#define oEffectiveRange 0x22C //public float effectiveRange;
#define oIsAutomatic 0x2D8 //public bool isAutomatic;
#define oMaxDistance 0x2D0 //public float maxDistance; (class BaseMelee)
#define oRepeatDelay 0x224 //public float repeatDelay;

//BaseProjectile
#define oAuto 0x2C8 //public bool automatic;
#define oFastReload 0x308 // bool fractionalReload
#define oDistance 0x2C0 // public float distanceScale
#define oprojectileVelocityScale 0x2C4 //public float projectileVelocityScale
#define oShortname 0x28// public string shortname;

//BaseMovement
#define oPlayerMovement 0x2E8 // public BaseMovement movement;
#define oGravityMultiplier 0x8C // public float gravityMultiplier;

#define oGroundAngleNew 0xD8 // private float groundAngleNew;

//RecoilProperties
#define oRecoilProperties 0x328 //public RecoilProperties recoil;
#define oRecoilMinYaw 0x18 //public float recoilYawMin;
#define oRecoilMaxYaw 0x1C //public float recoilYawMax;
#define oRecoilMinPitch 0x20 //public float recoilPitchMin;
#define oRecoilMaxPitch 0x24 //public float recoilPitchMax;


//PlayerModel
#define oPlayerModel 0x2C0 // public PlayerModel playerModel;
#define oVisible 0x244 // internal bool visible;

//PlayerInput
#define oPlayerInput 0x2E0// public PlayerInput input;
#define oBodyAngles 0x44 // private Vector3 bodyAngles;
#define oRecoilAngles 0x80 // public Vector3 recoilAngles;
#define oHasKeyFocus 0xCC // private bool hasKeyFocus;


#define oArrowBack 0x3D8 // private float arrowBack;
#define oTriggerReady 0x3D5 // protected bool attackReady;
#define oItemDefinition 0x18 // public ItemDefinition info;
#define oItemid 0x80 // public int itemid;

#define odisplayname 0x30 //public Translate.Phrase displayName;//public class ItemDefinition : MonoBehaviour

бля сдампил с макос версии вх не работает ниче не работает
да бл как здампил
 
Начинающий
Статус
Оффлайн
Регистрация
1 Янв 2023
Сообщения
25
Реакции[?]
0
Поинты[?]
0
Начинающий
Статус
Оффлайн
Регистрация
14 Май 2023
Сообщения
265
Реакции[?]
7
Поинты[?]
4K
Сверху Снизу