How LocalPlayer works
Local is not "first entity in the BN list". It is a static HiddenValue on LocalPlayer_Static.
GameAssembly + 0x10C519C8 LocalPlayer_Static Il2CppClass*
+ 0xB8 static_fields
+ 0x18 HiddenValue<BasePlayer> (was +0x40)
+ 0x18 ciphertext qword
local_player_half (both dwords)
il2cpp_gchandle_get_target
-> BasePlayer*
GetLocalPlayer :
klass = read(GA + 0x10C519C8)sf = read(klass + 0xB8)— if that is 0,sf = read(*klass + 0xB8)(typeinfo vs klass)slot = read(sf + 0x18)- If
slotlooks like EncryptedValue or a managed object:enc = read(slot + 0x18), runlocal_player(enc), accept if managed. - Else if
slotis already a managed BasePlayer*, use it. - Reject if lifestate
> 2or health not in[0, 200]— a wrong HV decrypt used to stomp a real pawn with garbage (lifestatebyte 80).
The 25231061 dump does not ship a LocalPlayer crypt. local_player_half is still the 25214240 chain (rol 11, xor 0x30B6FF08, add 0x0CC937BB, xor 0xFD26C1F4). When that misses, the plain is_managed(slot) path is what lands.
After death/respawn the static slot updates. Overlay refreshes LP every other discovery tick. If static is empty, keep the last LP only while it is still in the BN entity list; otherwise clear it (corpse address used to stick forever). Camera sits ~1.6 m above your feet — a 3 m 3D skip will eat you, not a player you walked up to. Self-filter is XZ under the camera (dx²+dz² < 0.22).
Inventory / eyes / active item hang off that BasePlayer*:
| field | offset | crypt | result |
|---|---|---|---|
playerInventory |
+0x3A0 |
HV +0x18 → rol 28, xor 0x65B9B225, add 0x2F961B1E → handle |
PlayerInventory* |
eyes |
+0x718 |
HV +0x18 → add 0xC4421DB7, rol 15, xor 0x8F17AD9A, rol 6 → handle |
PlayerEyes* |
clActiveItem |
+0x588 |
in-place sub 0x3D5E8E09, xor 0x2294A40F, rol 19, add 0x62310A3F |
UID, not Item* |
playerInput |
+0x6F0 |
none | PlayerInput* (bodyAngles +0x44) |
playerModel |
+0x2F0 |
none | PlayerModel* (alt probe +0x5B8) |
displayName |
+0x520 |
none | il2cpp string (len +0x10, chars +0x14) |
Belt: inventory + 0x28 → ItemContainer.itemList +0x38 → List +0x10/+0x18. Match belt Item.uid +0x88 to decrypted clActiveItem UID. Item.heldEntity is +0x10 this build (was 0x90). Do not treat HeldEntity+0x250 as item owner — that slot is viewModel.
Build info
- game: Rust
- version: 25231061
- il2cpphandle (handle TABLE seed): 0x11DB2E30
- gchandle_get_target: 0x874930
- base_networkable: 0x10BE8EC8
- main_camera_c: 0x10C62B28
- local_player_static: 0x10C519C8
- entities: 0x10
- list_vals: 0x20
- camera_object: 0x8
- view_matrix: 0x2FC
- inventory: belt 0x28 / main 0x60 / wear 0x78
Base globals
inline static constexpr uintptr_t il2cpphandle = 0x11DB2E30; // handle TABLE seed (stale)
inline static constexpr uintptr_t il2cpp_gchandle_get_target = 0x874930; // export — paste this
inline static constexpr uintptr_t StringPool = 0x10CCA488;
struct rust_globals {
inline static constexpr uintptr_t il2cpphandle = 0x11DB2E30;
inline static constexpr uintptr_t gchandle_get_target = 0x874930;
inline static constexpr uintptr_t base_networkable_static = 0x10BE8EC8;
inline static constexpr uintptr_t main_camera_c = 0x10C62B28;
inline static constexpr uintptr_t local_player_static = 0x10C519C8;
inline static constexpr uintptr_t convar_graphics = 0x10C48670;
inline static constexpr uintptr_t game_manager_static = 0x10C38738;
inline static constexpr uintptr_t string_pool = 0x10CCA488;
};
GameAssembly
namespace GameAssembly {
inline static constexpr uintptr_t il2cpp_gchandle_get_target = 0x874930;
}
Other il2cpp export RVAs are not in this named dump. Resolve from GameAssembly.dll exports. Do not paste 25184202 / 25214240 API RVAs on top of this build.
il2cpp exports
struct il2cpp_api {
inline static constexpr uintptr_t gchandle_get_target = 0x874930; // Unity 6 8 KB page
}
gc handles
struct gc_handles {
inline static constexpr uintptr_t table = 0x11DB2E30; // seed — scan export RIP if empty
inline static constexpr uintptr_t table_prev = 0x11E93210; // 25184202
inline static constexpr uintptr_t table_rx = 0x11E78950;
inline static constexpr uintptr_t get_target = 0x874930;
}
Handle = (slot << 3) | type, type 1..4. rust-free table: table + (type-1)*0x28, entries at +0x8, size +0x10. Types 0/1 invert the entry (~obj). 8 KB page: page = handle & ~0x1FFF, type at page+0x20, size at page+0x1C, entry at the handle address. Try entry and ~entry.
klass rvas
Only klasses named in the 25231061 dump. Missing TypeInfo RVAs are omitted on purpose.
struct klass_rvas {
inline static constexpr uintptr_t BaseNetworkable_TypeInfo = 0x10BE8EC8;
inline static constexpr uintptr_t MainCamera = 0x10C62B28;
inline static constexpr uintptr_t LocalPlayer_Static = 0x10C519C8;
inline static constexpr uintptr_t ConVar_Graphics_Static = 0x10C48670;
inline static constexpr uintptr_t GameManager_Static = 0x10C38738;
inline static constexpr uintptr_t StringPool = 0x10CCA488;
inline static constexpr uintptr_t TOD_Sky = 0x10C593A8;
inline static constexpr uintptr_t ProgressBar = 0x10BE53E8;
inline static constexpr uintptr_t ItemIcon = 0x10CBCDA0;
inline static constexpr uintptr_t ListComponent_Projectile = 0x10C6C9A0;
inline static constexpr uintptr_t ConVar_Admin = 0x10CE83B8;
inline static constexpr uintptr_t MapView_Static = 0x10CC1950;
inline static constexpr uintptr_t RustWorld = 0x10C314A8;
inline static constexpr uintptr_t BaseNetworkable_TypeInfo_prev = 0x118D4020; // 25214240
inline static constexpr uintptr_t MainCamera_prev = 0x118B4098; // 25214240
}
PhysX
namespace PhysX {
inline static constexpr uintptr_t type_info = 0x11991720; // STALE 25214240 — class not named this dump
inline static constexpr uintptr_t static_fields = 0xB8;
inline static constexpr uintptr_t sdk = 0x217F8E8; // UnityPlayer RVA
}
ListComponent_Projectile
namespace ListComponent_Projectile {
inline static constexpr uintptr_t type_info = 0x10C6C9A0;
inline static constexpr uintptr_t static_fields = 0xB8;
inline static constexpr uintptr_t InstanceList = 0x18; // was 0x8
inline static constexpr uintptr_t ListItems = 0x10;
inline static constexpr uintptr_t ListCount = 0x18;
}
game manager
namespace game_manager {
inline static constexpr uintptr_t game_manager = 0x10C38738;
inline static constexpr uintptr_t static_fields = 0xB8;
}
klass layout
namespace klass_layout {
inline static constexpr uintptr_t name_ptr = 0x10;
inline static constexpr uintptr_t parent = 0x58;
inline static constexpr uintptr_t static_fields = 0xB8;
}
base networkable
namespace base_networkable {
inline static constexpr uintptr_t base_networkable = 0x10BE8EC8;
inline static constexpr uintptr_t static_fields = 0xB8;
inline static constexpr uintptr_t wrapper_class_ptr = 0x20; // EncryptedValue (was 0x8)
inline static constexpr uintptr_t client_entities = 0x20;
inline static constexpr uintptr_t entity_list = 0x18; // EntityRealm.entity_list (was 0x10)
inline static constexpr uintptr_t parent_static_fields = 0x10; // do not walk — parentEntity is 0x38
inline static constexpr uintptr_t hv_offset = 0x18; // HiddenValue._handle
inline static constexpr uintptr_t decrypt_gate = 0x10; // not a 0/1 byte
inline static constexpr uintptr_t entities = 0x10; // BufferList.buffer
inline static constexpr uintptr_t buffer_list_array = 0x10;
inline static constexpr uintptr_t buffer_list_size = 0x18;
inline static constexpr uintptr_t list_vals = 0x20; // ListDictionary.vals
inline static constexpr uintptr_t prefabID = 0x54;
inline static constexpr uintptr_t net = 0x48;
inline static constexpr uintptr_t parentEntity = 0x38; // EntityRef — not the list
inline static constexpr uintptr_t children = 0x88;
}
BN walk:
GA + 0x10BE8EC8
-> +0xB8 static_fields
-> +0x20 EncryptedValue wrapper
-> cipher +0x18 BN1 -> il2cpp_gchandle_get_target
-> EntityRealm +0x18
-> cipher BN2 -> il2cpp_gchandle_get_target
-> ListDictionary.vals +0x20
-> BufferList +0x10 / +0x18
-> T[] +0x20 (try +0x28 if slot0 is a net id)
camera
namespace camera {
inline static constexpr uintptr_t main_camera = 0x10C62B28;
inline static constexpr uintptr_t main_camera_c = 0x10C62B28;
inline static constexpr uintptr_t camera_static = 0xB8;
inline static constexpr uintptr_t static_fields = 0xB8;
inline static constexpr uintptr_t camera_object = 0x8;
inline static constexpr uintptr_t instance = 0x8;
inline static constexpr uintptr_t main_camera_field_alt = 0x28;
inline static constexpr uintptr_t entity = 0x10;
inline static constexpr uintptr_t position = 0x444;
inline static constexpr uintptr_t viewMatrix = 0x2FC;
inline static constexpr uintptr_t view_matrix = 0x2FC;
inline static constexpr uintptr_t viewProjectionMatrix = 0x2FC;
inline static constexpr uintptr_t fieldOfView = 0x170;
inline static constexpr uintptr_t field_of_view = 0x170;
inline static constexpr uintptr_t worldToCameraMatrix = 0x70;
inline static constexpr uintptr_t cullingMask = 0x104;
inline static constexpr uintptr_t aspect = 0x130;
}
GA + 0x10C62B28 -> +0xB8 -> +0x8 camera_object -> +0x10 native
native + 0x2FC view matrix, +0x444 position, +0x170 fov
0x30C on this native is not VP (clip w ~ -20k). Use 0x2FC.
BasePlayer
namespace BasePlayer {
inline static constexpr uintptr_t player_model = 0x2F0;
inline static constexpr uintptr_t player_model_alt = 0x5B8;
inline static constexpr uintptr_t currentGesture = 0x310;
inline static constexpr uintptr_t movement = 0x348;
inline static constexpr uintptr_t base_movement = 0x348;
inline static constexpr uintptr_t visiblePlayerList = 0x368;
inline static constexpr uintptr_t frozen = 0x398;
inline static constexpr uintptr_t PlayerInventory = 0x3A0;
inline static constexpr uintptr_t player_inventory = 0x3A0;
inline static constexpr uintptr_t Belt = 0x3C0;
inline static constexpr uintptr_t player_rigidbody = 0x4C8;
inline static constexpr uintptr_t modelState = 0x4B0;
inline static constexpr uintptr_t model_state = 0x4B0;
inline static constexpr uintptr_t _lookingAt = 0x4F8;
inline static constexpr uintptr_t lookingAt = 0x4F8;
inline static constexpr uintptr_t display_name = 0x520;
inline static constexpr uintptr_t current_team = 0x558;
inline static constexpr uintptr_t clActiveItem = 0x588; // EncryptedValue ItemId
inline static constexpr uintptr_t cl_active_item = 0x588;
inline static constexpr uintptr_t lookingAtEntity = 0x5A8;
inline static constexpr uintptr_t mounted = 0x5E0; // EntityRef
inline static constexpr uintptr_t heldEntity = 0x630; // hint — field not named this dump
inline static constexpr uintptr_t lastSentTickTime = 0x698;
inline static constexpr uintptr_t playerFlags = 0x6D8;
inline static constexpr uintptr_t player_flags = 0x6D8;
inline static constexpr uintptr_t player_input = 0x6F0;
inline static constexpr uintptr_t lastSentTick = 0x6F8;
inline static constexpr uintptr_t blueprints = 0x708;
inline static constexpr uintptr_t metabolism = 0x710;
inline static constexpr uintptr_t PlayerEyes = 0x718;
inline static constexpr uintptr_t player_eyes = 0x718;
inline static constexpr uintptr_t userID = 0x720;
inline static constexpr uintptr_t user_id = 0x720;
inline static constexpr uintptr_t userIDString = 0x748;
inline static constexpr uintptr_t weaponMoveSpeedScale = 0x7B8;
inline static constexpr uintptr_t clothingBlocksAiming = 0x7BC;
inline static constexpr uintptr_t clothingMoveSpeedReduction = 0x7C0;
inline static constexpr uintptr_t clothingWaterSpeedBonus = 0x7C4;
inline static constexpr uintptr_t equippingBlocked = 0x7CC;
}
BaseCombatEntity
namespace BaseCombatEntity {
inline static constexpr uintptr_t model = 0x1B8;
inline static constexpr uintptr_t skeletonProperties = 0x230;
inline static constexpr uintptr_t lifestate = 0x2A8;
inline static constexpr uintptr_t markAttackerHostile = 0x2AE;
inline static constexpr uintptr_t _health = 0x2B4;
inline static constexpr uintptr_t _maxHealth = 0x2B8;
}
BaseEntity
namespace BaseEntity {
inline static constexpr uintptr_t bounds = 0x18C;
inline static constexpr uintptr_t model = 0x1B8;
inline static constexpr uintptr_t flags = 0x1C0;
inline static constexpr uintptr_t triggers = 0x138;
inline static constexpr uintptr_t positionLerp = 0xE8;
}
BaseEntityFlags
namespace BaseEntityFlags {
inline static constexpr uintptr_t Placeholder = 0x1;
inline static constexpr uintptr_t On = 0x2;
inline static constexpr uintptr_t OnFire = 0x4;
inline static constexpr uintptr_t Open = 0x8;
inline static constexpr uintptr_t Locked = 0x10;
inline static constexpr uintptr_t Debugging = 0x20;
inline static constexpr uintptr_t Disabled = 0x40;
inline static constexpr uintptr_t Reserved1 = 0x80;
inline static constexpr uintptr_t Reserved2 = 0x100;
inline static constexpr uintptr_t Reserved3 = 0x200;
inline static constexpr uintptr_t Reserved4 = 0x400;
inline static constexpr uintptr_t Reserved5 = 0x800;
}
base player flags
namespace base_player_flags {
inline static constexpr uintptr_t Unused1 = 0x1;
inline static constexpr uintptr_t Unused2 = 0x2;
inline static constexpr uintptr_t IsAdmin = 0x4;
inline static constexpr uintptr_t ReceivingSnapshot = 0x8;
inline static constexpr uintptr_t Sleeping = 0x10;
inline static constexpr uintptr_t Spectating = 0x20;
inline static constexpr uintptr_t Wounded = 0x40;
inline static constexpr uintptr_t IsDeveloper = 0x80;
inline static constexpr uintptr_t Connected = 0x100;
inline static constexpr uintptr_t ThirdPersonViewmode = 0x400;
}
ModelState
namespace ModelState {
inline static constexpr uintptr_t lookDir = 0x30;
inline static constexpr uintptr_t flags = 0x44; // 25231061 (dump 0x1C is stale)
inline static constexpr uintptr_t waterLevel = 0x48;
}
modelstate flags
namespace modelstate_flags {
inline static constexpr uintptr_t ducked = 0x1;
inline static constexpr uintptr_t jumped = 0x2;
inline static constexpr uintptr_t OnGround = 0x4;
inline static constexpr uintptr_t Sleeping = 0x8;
inline static constexpr uintptr_t sprinting = 0x10;
inline static constexpr uintptr_t onLadder = 0x20;
inline static constexpr uintptr_t Flying = 0x40;
inline static constexpr uintptr_t aiming = 0x80;
inline static constexpr uintptr_t Mounted = 0x200;
inline static constexpr uintptr_t crawling = 0x1000;
inline static constexpr uintptr_t hasParachute = 0x8000;
}
ItemContainer
namespace ItemContainer {
inline static constexpr uintptr_t itemCount = 0x18;
inline static constexpr uintptr_t ItemList = 0x38; // was 0x68
inline static constexpr uintptr_t uid = 0x48;
inline static constexpr uintptr_t flags = 0x74;
}
List walk fallback: +0x10 then +0x20.
ItemDefinition
namespace ItemDefinition {
inline static constexpr uintptr_t itemid = 0x20;
inline static constexpr uintptr_t shortname = 0x28;
inline static constexpr uintptr_t displayName = 0x40;
inline static constexpr uintptr_t iconSprite = 0x50;
inline static constexpr uintptr_t category = 0x58;
inline static constexpr uintptr_t stackable = 0x78;
inline static constexpr uintptr_t rarity = 0x94;
inline static constexpr uintptr_t condition = 0xB8;
}
item
namespace item {
inline static constexpr uintptr_t HeldEntity = 0x10; // was 0x90
inline static constexpr uintptr_t held_entity = 0x10;
inline static constexpr uintptr_t clientAmmo = 0x2C;
inline static constexpr uintptr_t contents = 0x38;
inline static constexpr uintptr_t amount = 0x40; // was 0x8C
inline static constexpr uintptr_t maxCondition = 0x44;
inline static constexpr uintptr_t info = 0x60; // Item.info (was 0x28 / 0xA0)
inline static constexpr uintptr_t itemdefinition = 0x60;
inline static constexpr uintptr_t definition = 0x60;
inline static constexpr uintptr_t position = 0x70; // was 0xD8
inline static constexpr uintptr_t worldEnt = 0x78; // was 0x38
inline static constexpr uintptr_t uid = 0x88; // ItemId (was 0xD0)
inline static constexpr uintptr_t condition = 0xE0;
}
namespace item_id {
inline static constexpr uintptr_t value = 0x10; // System.UInt64
}
namespace item_held {
inline static constexpr uintptr_t wrapper_primary = 0x10;
inline static constexpr uintptr_t wrapper_alt = 0x78;
inline static constexpr uintptr_t wrapper_uid = 0x88;
}
namespace entity_ref {
inline static constexpr uintptr_t slot_a = 0x10;
inline static constexpr uintptr_t slot_b = 0x18;
inline static constexpr uintptr_t slot_c = 0x28;
}
AttackEntity
namespace AttackEntity {
inline static constexpr uintptr_t deployDelay = 0x2E8;
inline static constexpr uintptr_t repeatDelay = 0x2EC;
inline static constexpr uintptr_t animationDelay = 0x2F0;
inline static constexpr uintptr_t effectiveRange = 0x2F4;
inline static constexpr uintptr_t attackSpacing = 0x304;
inline static constexpr uintptr_t nextAttackTime = 0x340;
inline static constexpr uintptr_t timeSinceDeploy = 0x358;
}
BaseProjectile
namespace BaseProjectile {
inline static constexpr uintptr_t projectileVelocityScale = 0x394;
inline static constexpr uintptr_t automatic = 0x398;
inline static constexpr uintptr_t reloadTime = 0x3D8;
inline static constexpr uintptr_t canUnloadAmmo = 0x3DC;
inline static constexpr uintptr_t primaryMagazine = 0x3E0;
inline static constexpr uintptr_t magazine = 0x3E0;
inline static constexpr uintptr_t fractionalReload = 0x3E8;
inline static constexpr uintptr_t aimSway = 0x400;
inline static constexpr uintptr_t aimSwaySpeed = 0x404;
inline static constexpr uintptr_t recoil = 0x408;
inline static constexpr uintptr_t aimCone = 0x418;
inline static constexpr uintptr_t hipAimCone = 0x41C;
inline static constexpr uintptr_t aimconePenaltyPerShot = 0x420;
inline static constexpr uintptr_t aimConePenaltyMax = 0x424;
inline static constexpr uintptr_t stancePenaltyScale = 0x430;
inline static constexpr uintptr_t hasADS = 0x434;
inline static constexpr uintptr_t manualCycle = 0x436;
inline static constexpr uintptr_t needsCycle = 0x43C;
inline static constexpr uintptr_t isBurstWeapon = 0x43F;
inline static constexpr uintptr_t canChangeFireModes = 0x440;
inline static constexpr uintptr_t internalBurstFireRateScale = 0x448;
inline static constexpr uintptr_t internalBurstAimConeScale = 0x44C;
inline static constexpr uintptr_t stancePenalty = 0x458;
inline static constexpr uintptr_t aimconePenalty = 0x460;
inline static constexpr uintptr_t sightAimConeScale = 0x474;
inline static constexpr uintptr_t sightAimConeOffset = 0x478;
inline static constexpr uintptr_t hipAimConeScale = 0x47C;
inline static constexpr uintptr_t hipAimConeOffset = 0x480;
inline static constexpr uintptr_t isReloading = 0x484;
}
CompoundBowWeapon
namespace CompoundBowWeapon {
inline static constexpr uintptr_t currentHoldProgress = 0x520;
inline static constexpr uintptr_t movementPenalty = 0x530;
inline static constexpr uintptr_t stringHoldTimeStart = 0x53C;
}
projectile
namespace projectile {
inline static constexpr uintptr_t initialVelocity = 0x28;
inline static constexpr uintptr_t drag = 0x34;
inline static constexpr uintptr_t gravityModifier = 0x38;
inline static constexpr uintptr_t thickness = 0x3C;
inline static constexpr uintptr_t initialDistance = 0x44;
inline static constexpr uintptr_t initialOrientation = 0x48;
inline static constexpr uintptr_t ricochetChance = 0x64;
inline static constexpr uintptr_t penetrationPower = 0x68;
inline static constexpr uintptr_t swimScale = 0xF0;
inline static constexpr uintptr_t swimSpeed = 0xFC;
inline static constexpr uintptr_t mod = 0x110; // was 0x108
inline static constexpr uintptr_t owner = 0x118; // was 0x110
inline static constexpr uintptr_t hitTest = 0x128; // was 0x120
inline static constexpr uintptr_t projectileID = 0x130;
inline static constexpr uintptr_t integrity = 0x13C;
inline static constexpr uintptr_t maxDistance = 0x140;
inline static constexpr uintptr_t currentVelocity = 0x164; // was 0x188
inline static constexpr uintptr_t currentPosition = 0x170; // was 0x164
inline static constexpr uintptr_t traveledDistance = 0x17C; // was 0x13C
inline static constexpr uintptr_t traveledTime = 0x180; // was 0x140
inline static constexpr uintptr_t launchTime = 0x184; // was 0x160
inline static constexpr uintptr_t sentPosition = 0x188; // was 0x164
inline static constexpr uintptr_t previousPosition = 0x194; // was 0x170
inline static constexpr uintptr_t previousVelocity = 0x1A0; // was 0x188
inline static constexpr uintptr_t previousTraveledTime = 0x1AC;
inline static constexpr uintptr_t sourceProjectilePrefab = 0x1F0; // was 0x1E0
}
HitTest
namespace HitTest {
inline static constexpr uintptr_t gameobject = 0x10;
inline static constexpr uintptr_t besthit = 0x18;
inline static constexpr uintptr_t attackray = 0x28;
inline static constexpr uintptr_t collider = 0x48;
inline static constexpr uintptr_t hitnormal = 0x50;
inline static constexpr uintptr_t ignoreentity = 0x60;
inline static constexpr uintptr_t hitpoint = 0x68;
inline static constexpr uintptr_t didhit = 0x74;
inline static constexpr uintptr_t maxdistance = 0x78;
inline static constexpr uintptr_t rayhit = 0x80;
inline static constexpr uintptr_t damageproperties = 0xB0;
inline static constexpr uintptr_t hitentity = 0xC0;
inline static constexpr uintptr_t hitdistance = 0xC8;
inline static constexpr uintptr_t hitpart = 0xCC;
inline static constexpr uintptr_t hittransform = 0xD8;
inline static constexpr uintptr_t type = 0xE0;
}
BaseMelee
namespace BaseMelee {
inline static constexpr uintptr_t maxDistance = 0x3A0;
inline static constexpr uintptr_t attackRadius = 0x3A4;
inline static constexpr uintptr_t isAutomatic = 0x3A8;
inline static constexpr uintptr_t blockSprintOnAttack = 0x3A9;
inline static constexpr uintptr_t gathering = 0x3E0;
}
namespace gather_properties {
inline static constexpr uintptr_t tree = 0x10;
inline static constexpr uintptr_t ore = 0x18;
inline static constexpr uintptr_t flesh = 0x20;
}
namespace gather_entry {
inline static constexpr uintptr_t gatherDamage = 0x10;
inline static constexpr uintptr_t destroyFraction = 0x14;
inline static constexpr uintptr_t conditionLost = 0x18;
}
ItemModProjectile
namespace ItemModProjectile {
inline static constexpr uintptr_t projectileObject = 0x20;
inline static constexpr uintptr_t ammoType = 0x30;
inline static constexpr uintptr_t ammoSubType = 0x34;
inline static constexpr uintptr_t numProjectiles = 0x38;
inline static constexpr uintptr_t projectileSpread = 0x3C;
inline static constexpr uintptr_t projectileVelocity = 0x40;
inline static constexpr uintptr_t projectileVelocitySpread = 0x44;
inline static constexpr uintptr_t useCurve = 0x48;
inline static constexpr uintptr_t spreadScalar = 0x50;
inline static constexpr uintptr_t attackEffectOverride = 0x58;
inline static constexpr uintptr_t category = 0x68;
}
RecoilProperties
namespace RecoilProperties {
inline static constexpr uintptr_t recoilYawMin = 0x18;
inline static constexpr uintptr_t recoilYawMax = 0x1C;
inline static constexpr uintptr_t recoilPitchMin = 0x20;
inline static constexpr uintptr_t recoilPitchMax = 0x24;
inline static constexpr uintptr_t timeToTakeMin = 0x28;
inline static constexpr uintptr_t timeToTakeMax = 0x2C;
inline static constexpr uintptr_t ADSScale = 0x30;
inline static constexpr uintptr_t movementPenalty = 0x34;
inline static constexpr uintptr_t clampPitch = 0x38;
inline static constexpr uintptr_t pitchCurve = 0x40;
inline static constexpr uintptr_t yawCurve = 0x48;
inline static constexpr uintptr_t useCurves = 0x50;
inline static constexpr uintptr_t shotsUntilMax = 0x54;
inline static constexpr uintptr_t maxRecoilRadius = 0x58;
inline static constexpr uintptr_t overrideAimconeWithCurve = 0x5C;
inline static constexpr uintptr_t aimconeCurveScale = 0x60;
inline static constexpr uintptr_t aimconeCurve = 0x68;
inline static constexpr uintptr_t aimconeProbabilityCurve = 0x70;
inline static constexpr uintptr_t newRecoilOverride = 0x80;
}
FlintStrikeWeapon
namespace FlintStrikeWeapon {
inline static constexpr uintptr_t successFraction = 0x4C0;
inline static constexpr uintptr_t strikeRecoil = 0x4C8;
inline static constexpr uintptr_t _didSparkThisFrame = 0x4D0;
inline static constexpr uintptr_t strikes = 0x4D4;
}
namespace bow_weapon {
inline static constexpr uintptr_t attackReady = 0x4B8;
inline static constexpr uintptr_t wasAiming = 0x4C8;
}
PlayerEyes
namespace PlayerEyes {
inline static constexpr uintptr_t viewOffset = 0x40;
inline static constexpr uintptr_t bodyRotation = 0x50; // silent write
// worldPosition / eyeRotation not named this dump. Do not write 16 bytes at +0x60.
}
PlayerInput
namespace PlayerInput {
inline static constexpr uintptr_t state = 0x28;
inline static constexpr uintptr_t bodyAngles = 0x44; // Vector3 pitch/yaw/roll
inline static constexpr uintptr_t yaw = 0x60;
}
PlayerModel
namespace PlayerModel {
inline static constexpr uintptr_t collision = 0xD0;
inline static constexpr uintptr_t jawBone = 0xE8;
inline static constexpr uintptr_t neckBone = 0xF0;
inline static constexpr uintptr_t headBone = 0xF8;
inline static constexpr uintptr_t fullMask = 0x208;
inline static constexpr uintptr_t position = 0x2F8;
inline static constexpr uintptr_t newVelocity = 0x31C;
inline static constexpr uintptr_t heldEntity = 0x448;
inline static constexpr uintptr_t _multiMesh = 0x488; // was 0x398
inline static constexpr uintptr_t isNpc = 0x4CC;
}
SkinnedMultiMesh
namespace SkinnedMultiMesh {
inline static constexpr uintptr_t Renderers = 0x58;
inline static constexpr uintptr_t RendererList = 0x58;
}
namespace chams {
inline static constexpr uintptr_t player_model_multi_mesh = 0x488;
inline static constexpr uintptr_t multi_mesh_renderer_list = 0x58;
inline static constexpr uintptr_t renderer_material_array = 0x140;
inline static constexpr uintptr_t renderer_material_count = 0x150;
}
PlayerInventory
namespace PlayerInventory {
inline static constexpr uintptr_t containerBelt = 0x28;
inline static constexpr uintptr_t container_belt = 0x28;
inline static constexpr uintptr_t loot = 0x48;
inline static constexpr uintptr_t containerMain = 0x60; // was 0x58
inline static constexpr uintptr_t container_main = 0x60;
inline static constexpr uintptr_t containerWear = 0x78;
inline static constexpr uintptr_t container_wear = 0x78;
}
movement
namespace movement {
inline static constexpr uintptr_t Owner = 0x30;
inline static constexpr uintptr_t vector3_0 = 0x38;
inline static constexpr uintptr_t targetMovement = 0x44;
inline static constexpr uintptr_t running = 0x50;
inline static constexpr uintptr_t ducking = 0x54;
inline static constexpr uintptr_t crawling = 0x58;
}
PlayerWalkMovement
namespace PlayerWalkMovement {
inline static constexpr uintptr_t capsuleHeight = 0x78;
inline static constexpr uintptr_t capsuleCenter = 0x80;
inline static constexpr uintptr_t capsuleHeightDucked = 0x88;
inline static constexpr uintptr_t capsuleCenterDucked = 0x90;
inline static constexpr uintptr_t capsuleHeightCrawling = 0x98;
inline static constexpr uintptr_t capsuleCenterCrawling = 0xA0;
inline static constexpr uintptr_t gravityTestRadius = 0xA8;
inline static constexpr uintptr_t gravityMultiplier = 0xB0;
inline static constexpr uintptr_t gravityMultiplierSwimming = 0xB8;
inline static constexpr uintptr_t maxAngleWalking = 0xC0;
inline static constexpr uintptr_t maxAngleClimbing = 0xC8;
inline static constexpr uintptr_t maxAngleSliding = 0xD0;
inline static constexpr uintptr_t maxStepHeight = 0xD8;
inline static constexpr uintptr_t groundAngle = 0x108;
inline static constexpr uintptr_t groundAngleNew = 0x110;
inline static constexpr uintptr_t groundTime = 0x118;
inline static constexpr uintptr_t jumpTime = 0x120;
inline static constexpr uintptr_t landTime = 0x128;
inline static constexpr uintptr_t velocity = 0x130;
inline static constexpr uintptr_t groundNormal = 0x140;
inline static constexpr uintptr_t groundNormalNew = 0x150;
inline static constexpr uintptr_t sprintForced = 0x1B0;
inline static constexpr uintptr_t grounded = 0x1C4;
inline static constexpr uintptr_t climbing = 0x1CC;
inline static constexpr uintptr_t sliding = 0x1D4;
inline static constexpr uintptr_t swimming = 0x1DC;
inline static constexpr uintptr_t jumping = 0x1EC;
inline static constexpr uintptr_t falling = 0x1FC;
inline static constexpr uintptr_t flying = 0x20C;
inline static constexpr uintptr_t wasFlying = 0x214;
inline static constexpr uintptr_t forcedDuckDelta = 0x21C;
}
WorldItem
namespace WorldItem {
inline static constexpr uintptr_t allowPickup = 0x200;
inline static constexpr uintptr_t item = 0x208;
}
mapview
namespace mapview {
inline static constexpr uintptr_t static_fields_off = 0xB8;
inline static constexpr uintptr_t RVA_RustWorld = 0x10C314A8;
inline static constexpr uintptr_t World_Size_off = 0x54;
inline static constexpr uintptr_t World_Seed_off = 0x68;
inline static constexpr uintptr_t World_Name_off = 0xA0;
inline static constexpr uintptr_t RVA_MapInterface = 0x10CC1950;
inline static constexpr uintptr_t MI_Instance_off = 0x8;
inline static constexpr uintptr_t MI_View_off = 0x60;
inline static constexpr uintptr_t MV_mapImage_off = 0x20;
inline static constexpr uintptr_t MV_scrollRect_off = 0x40;
inline static constexpr uintptr_t RawImage_UVRect = 0xE8;
}
AutoTurret
namespace AutoTurret {
inline static constexpr uintptr_t authorizedPlayers = 0x3B8; // was 0x3D8
inline static constexpr uintptr_t gunFireEffect = 0x3F0;
inline static constexpr uintptr_t bulletEffect = 0x3F8;
inline static constexpr uintptr_t bulletSpeed = 0x400;
inline static constexpr uintptr_t lastYaw = 0x440;
inline static constexpr uintptr_t targetTrigger = 0x480;
inline static constexpr uintptr_t target = 0x4A0;
inline static constexpr uintptr_t muzzlePos = 0x4B0;
inline static constexpr uintptr_t gun_yaw = 0x4C8;
inline static constexpr uintptr_t gun_pitch = 0x4D0;
inline static constexpr uintptr_t sightRange = 0x4D8;
inline static constexpr uintptr_t aimCone = 0x538;
}
patrolhelicopter
namespace patrolhelicopter {
inline static constexpr uintptr_t weakspots = 0x2D0;
inline static constexpr uintptr_t rotorPivot = 0x2D8;
inline static constexpr uintptr_t mainRotor = 0x2E0;
inline static constexpr uintptr_t tailRotor = 0x2F8;
inline static constexpr uintptr_t rocket_tube_left = 0x310;
inline static constexpr uintptr_t rocket_tube_right = 0x318;
inline static constexpr uintptr_t left_gun_yaw = 0x320;
inline static constexpr uintptr_t left_gun_pitch = 0x328;
inline static constexpr uintptr_t myAI = 0x3B8;
inline static constexpr uintptr_t spotlightTarget = 0x408;
}
bradleyapc
namespace bradleyapc {
inline static constexpr uintptr_t engineSound = 0x2D0;
inline static constexpr uintptr_t chasisLurchAngleDelta = 0x318;
inline static constexpr uintptr_t chasisLurchSpeedDelta = 0x31C;
inline static constexpr uintptr_t viewDistance = 0x3C4;
inline static constexpr uintptr_t searchRange = 0x3C8;
}
local player static
namespace local_player_static {
inline static constexpr uintptr_t local_player = 0x10C519C8; // LocalPlayer_Static, not Class_LocalPlayer
inline static constexpr uintptr_t static_fields = 0xB8;
inline static constexpr uintptr_t entity = 0x18; // HV<BasePlayer> (was 0x40)
inline static constexpr uintptr_t hv_in_wrapper = 0x18;
}
magazine
namespace magazine {
inline static constexpr uintptr_t definition = 0x10;
inline static constexpr uintptr_t capacity = 0x18;
inline static constexpr uintptr_t contents = 0x1C;
inline static constexpr uintptr_t ammoType = 0x20;
}
timed explosive
namespace timed_explosive {
inline static constexpr uintptr_t timerAmountMin = 0x200;
inline static constexpr uintptr_t timerAmountMax = 0x204;
inline static constexpr uintptr_t minExplosionRadius = 0x208;
inline static constexpr uintptr_t explosionRadius = 0x20C;
inline static constexpr uintptr_t explodeOnContact = 0x210;
inline static constexpr uintptr_t canStick = 0x211;
inline static constexpr uintptr_t onlyDamageParent = 0x213;
inline static constexpr uintptr_t explosionMatchesNormal = 0x230;
inline static constexpr uintptr_t damageTypes = 0x278;
}
BaseLauncher
namespace BaseLauncher {
inline static constexpr uintptr_t initialSpeedMultiplier = 0x4C0;
}
StorageContainer
namespace StorageContainer {
inline static constexpr uintptr_t inventorySlots = 0x320;
inline static constexpr uintptr_t isLootable = 0x32D;
inline static constexpr uintptr_t isLockable = 0x32E;
inline static constexpr uintptr_t isMonitorable = 0x32F;
inline static constexpr uintptr_t panelName = 0x330;
inline static constexpr uintptr_t panelTitle = 0x338;
inline static constexpr uintptr_t maxStackSize = 0x368;
}
LootContainer
namespace LootContainer {
inline static constexpr uintptr_t destroyOnEmpty = 0x3A8;
inline static constexpr uintptr_t lootDefinition = 0x3B0;
inline static constexpr uintptr_t minSecondsBetweenRefresh = 0x3BC;
inline static constexpr uintptr_t maxSecondsBetweenRefresh = 0x3C0;
inline static constexpr uintptr_t scrapAmount = 0x3D4;
}
OreResourceEntity
namespace OreResourceEntity {
inline static constexpr uintptr_t bonusPrefab = 0x248;
inline static constexpr uintptr_t finishEffect = 0x250;
inline static constexpr uintptr_t useHotspotMinigame = 0x260;
inline static constexpr uintptr_t heightOffset = 0x270;
}
ResourceEntity
namespace ResourceEntity {
inline static constexpr uintptr_t startHealth = 0x200;
inline static constexpr uintptr_t baseProtection = 0x208;
inline static constexpr uintptr_t skipDecorComponents = 0x214;
}
CollectibleEntity
namespace CollectibleEntity {
inline static constexpr uintptr_t itemName = 0x200;
inline static constexpr uintptr_t itemList = 0x208;
inline static constexpr uintptr_t pickupEffect = 0x210;
inline static constexpr uintptr_t xpScale = 0x218;
inline static constexpr uintptr_t suppressGatherRateMultiplier = 0x21C;
}
GrowableEntity
namespace GrowableEntity {
inline static constexpr uintptr_t plantSkin = 0x2F0;
inline static constexpr uintptr_t properties = 0x348;
inline static constexpr uintptr_t sourceItemDef = 0x350;
inline static constexpr uintptr_t state = 0x358;
}
PlayerCorpse
namespace PlayerCorpse {
inline static constexpr uintptr_t playerName = 0x308;
inline static constexpr uintptr_t playerSteamID = 0x318;
inline static constexpr uintptr_t containers = 0x350;
}
LootableCorpse
namespace LootableCorpse {
inline static constexpr uintptr_t playerSteamID = 0x318;
inline static constexpr uintptr_t playerName = 0x328;
}
HackableLockedCrate
namespace HackableLockedCrate {
inline static constexpr uintptr_t timerText = 0x400;
inline static constexpr uintptr_t hackSeconds = 0x410;
}
HeldEntity
namespace HeldEntity {
inline static constexpr uintptr_t punchAdded = 0x208;
inline static constexpr uintptr_t worldModelAnimation = 0x218;
inline static constexpr uintptr_t viewModel = 0x250; // was 0x200 — NOT itemOwner
inline static constexpr uintptr_t handBone = 0x260;
inline static constexpr uintptr_t holdInfo = 0x270;
inline static constexpr uintptr_t isBuildingTool = 0x28C;
inline static constexpr uintptr_t forcedOwner = 0x290;
inline static constexpr uintptr_t hostileScore = 0x2AC;
inline static constexpr uintptr_t _punches = 0x2D8;
inline static constexpr uintptr_t ownerItemUID = 0x2E0; // ItemId — +0x10 for UInt64
inline static constexpr uintptr_t itemOwner = 0x0; // field gone this dump
}
ItemIcon
namespace ItemIcon {
inline static constexpr uintptr_t item_icon_c = 0x10CBCDA0;
inline static constexpr uintptr_t type_info = 0x10CBCDA0;
inline static constexpr uintptr_t static_fields = 0xB8;
inline static constexpr uintptr_t iconImage = 0xA8;
inline static constexpr uintptr_t backgroundImage = 0xE8;
}
DictionaryEntryArray
namespace DictionaryEntryArray {
inline static constexpr uintptr_t length = 0x18;
inline static constexpr uintptr_t data = 0x20;
}
ViewModel
namespace ViewModel {
inline static constexpr uintptr_t instance = 0x28;
inline static constexpr uintptr_t viewmodel_instance = 0x28;
}
BaseViewModel
namespace BaseViewModel {
inline static constexpr uintptr_t useViewModelCamera = 0x40;
inline static constexpr uintptr_t skinPieces = 0x78; // dump-time fallback
}
model
namespace model {
inline static constexpr uintptr_t collision = 0x20;
inline static constexpr uintptr_t rootBone = 0x28;
inline static constexpr uintptr_t headBone = 0x30;
inline static constexpr uintptr_t eyeBone = 0x38;
inline static constexpr uintptr_t animator = 0x40;
inline static constexpr uintptr_t skeleton = 0x48;
inline static constexpr uintptr_t boneTransforms = 0x50;
inline static constexpr uintptr_t boneNames = 0x58;
inline static constexpr uintptr_t bone_array_count_off = 0x18;
inline static constexpr uintptr_t bone_array_data_off = 0x20;
inline static constexpr uintptr_t bone_array_elem_size = 0x8;
inline static constexpr uintptr_t pelvis = 0x00;
inline static constexpr uintptr_t l_hip = 0x01;
inline static constexpr uintptr_t l_knee = 0x03;
inline static constexpr uintptr_t l_foot = 0x04;
inline static constexpr uintptr_t r_hip = 0x0E;
inline static constexpr uintptr_t r_knee = 0x10;
inline static constexpr uintptr_t r_foot = 0x11;
inline static constexpr uintptr_t spine2 = 0x15;
inline static constexpr uintptr_t spine4 = 0x17;
inline static constexpr uintptr_t l_clav = 0x18;
inline static constexpr uintptr_t l_upperarm = 0x19;
inline static constexpr uintptr_t l_forearm = 0x1A;
inline static constexpr uintptr_t l_hand = 0x1D;
inline static constexpr uintptr_t neck = 0x34;
inline static constexpr uintptr_t head = 0x35;
inline static constexpr uintptr_t r_clav = 0x3C;
inline static constexpr uintptr_t r_upperarm = 0x3D;
inline static constexpr uintptr_t r_forearm = 0x3E;
inline static constexpr uintptr_t r_hand = 0x41;
}
Transform native: +0x28 TransformData, +0x30 index. Visual state +0x38.
TOD_Sky_Static
namespace TOD_Sky_Static {
inline static constexpr uintptr_t tod_sky_c = 0x10C593A8;
inline static constexpr uintptr_t static_fields = 0xB8;
inline static constexpr uintptr_t instances = 0x68; // was 0x18
inline static constexpr uintptr_t listItems = 0x10;
inline static constexpr uintptr_t listSize = 0x18;
inline static constexpr uintptr_t arrayData = 0x20;
}
TOD_Sky
namespace TOD_Sky {
inline static constexpr uintptr_t Cycle = 0x40;
inline static constexpr uintptr_t Atmosphere = 0x50;
inline static constexpr uintptr_t Day = 0x58;
inline static constexpr uintptr_t Night = 0x60;
inline static constexpr uintptr_t Stars = 0x78;
inline static constexpr uintptr_t Clouds = 0x80;
inline static constexpr uintptr_t Ambient = 0x98;
}
TOD_CycleParameters
namespace TOD_CycleParameters {
inline static constexpr uintptr_t Hour = 0x10;
}
tod ambient parameters
namespace tod_ambient_parameters {
inline static constexpr uintptr_t Saturation = 0x14;
}
tod night parameters
namespace tod_night_parameters {
inline static constexpr uintptr_t AmbientMultiplier = 0x5C;
}
namespace tod_stars {
inline static constexpr uintptr_t Size = 0x10;
inline static constexpr uintptr_t Brightness = 0x14;
}
Object
namespace Object {
inline static constexpr uintptr_t m_CachedPtr = 0x10;
}
unity component
namespace unity_component {
inline static constexpr uintptr_t native = 0x10;
inline static constexpr uintptr_t game_object = 0x20;
}
unity game object
namespace unity_game_object {
inline static constexpr uintptr_t components = 0x20;
inline static constexpr uintptr_t obj_transform = 0x8;
inline static constexpr uintptr_t component_count = 0x30;
inline static constexpr uintptr_t component_stride = 0x10;
inline static constexpr uintptr_t component_ptr_in_entry = 0x8;
inline static constexpr uintptr_t tag = 0x54;
}
unity string
namespace unity_string {
inline static constexpr uintptr_t m_stringLength = 0x10;
inline static constexpr uintptr_t first_char = 0x14;
}
system list
namespace system_list {
inline static constexpr uintptr_t array = 0x10;
inline static constexpr uintptr_t size = 0x18;
inline static constexpr uintptr_t array_first_element = 0x20;
}
entitylist
namespace entitylist {
inline static constexpr uintptr_t array = 0x10;
inline static constexpr uintptr_t size = 0x18;
inline static constexpr uintptr_t first_elem = 0x20; // try 0x28 if slot0 is a net id
}
convar graphics
namespace convar_graphics {
inline static constexpr uintptr_t convar_graphics = 0x10C48670;
inline static constexpr uintptr_t convar_graphics_instance = 0xB8;
inline static constexpr uintptr_t fov = 0x19C; // EncryptedValue — P dump _fov (was 0x168)
}
convar admin
namespace convar_admin {
inline static constexpr uintptr_t convar_admin = 0x10CE83B8;
inline static constexpr uintptr_t playerIds = 0x20;
}
ProgressBar
namespace ProgressBar {
inline static constexpr uintptr_t type_info = 0x10BE53E8;
inline static constexpr uintptr_t instance = 0x20; // was 0x8
inline static constexpr uintptr_t timeCounter = 0x2C;
}
Door / CodeLock / BuildingBlock
namespace Door {
inline static constexpr uintptr_t knockEffect = 0x358;
inline static constexpr uintptr_t canTakeLock = 0x360;
inline static constexpr uintptr_t hasHatch = 0x361;
inline static constexpr uintptr_t canTakeCloser = 0x362;
inline static constexpr uintptr_t canTakeKnocker = 0x363;
inline static constexpr uintptr_t canNpcOpen = 0x364;
inline static constexpr uintptr_t canHandOpen = 0x365;
inline static constexpr uintptr_t isSecurityDoor = 0x366;
inline static constexpr uintptr_t canReverseOpen = 0x367;
}
namespace CodeLock {
inline static constexpr uintptr_t keyCodeEntry = 0x238;
inline static constexpr uintptr_t hasCode = 0x270;
}
namespace BuildingBlock {
inline static constexpr uintptr_t grade = 0x350;
inline static constexpr uintptr_t gradeSecondary = 0x354;
inline static constexpr uintptr_t cachedMesh = 0x360;
inline static constexpr uintptr_t construction = 0x368;
inline static constexpr uintptr_t skin = 0x3B8;
}
PlayerMetabolism
namespace PlayerMetabolism {
inline static constexpr uintptr_t component = 0x710; // on BasePlayer
inline static constexpr uintptr_t calories = 0x20;
inline static constexpr uintptr_t hydration = 0x28;
inline static constexpr uintptr_t heartrate = 0x30;
inline static constexpr uintptr_t poison = 0x50;
inline static constexpr uintptr_t radiationLevel = 0x58;
inline static constexpr uintptr_t radiationPoison = 0x60;
inline static constexpr uintptr_t oxygen = 0x78;
inline static constexpr uintptr_t bleeding = 0x80;
}
namespace metabolism_attr {
inline static constexpr uintptr_t min = 0x18;
inline static constexpr uintptr_t max = 0x1C;
inline static constexpr uintptr_t value = 0x20;
}
player team
namespace player_team {
inline static constexpr uintptr_t memberList = 0x20;
inline static constexpr uintptr_t classSize = 0x58;
}
Decryption routines
25231061 live. Cipher at wrapper +0x18. Then il2cpp_gchandle_get_target except clActiveItem (UID in place).
uintptr_t decryption::client_entities(uint64_t a1)
{
uintptr_t rax = driver.read<uintptr_t>(a1 + 0x18);
uint32_t* rdx = (uint32_t*)&rax;
uint32_t r8d = 0x2;
uint32_t ecx;
do {
ecx = *rdx;
rdx = (uint32_t*)((uint8_t*)rdx + 0x4);
ecx = ecx ^ 0x6B59DCD4;
ecx = ecx + 0x12F287EE;
ecx = (ecx << 0xA) | (ecx >> 0x16); // rol 10
ecx = ecx + 0x2AD5742A;
*(rdx - 1) = ecx;
--r8d;
} while (r8d);
return il2cpp_get_handle(rax);
}
uintptr_t decryption::visiblePlayerList(uint64_t a1)
{
return decryption::client_entities(a1);
}
uintptr_t decryption::entity_list(uint64_t a1)
{
uintptr_t rax = driver.read<uintptr_t>(a1 + 0x18);
uint32_t* rdx = (uint32_t*)&rax;
uint32_t r8d = 0x2;
uint32_t ecx;
do {
ecx = *rdx;
rdx = (uint32_t*)((uint8_t*)rdx + 0x4);
ecx = (ecx << 0x1A) | (ecx >> 0x6); // rol 26
ecx = ecx ^ 0xADA5634C;
ecx = ecx + 0x1BFFF7A6;
*(rdx - 1) = ecx;
--r8d;
} while (r8d);
return il2cpp_get_handle(rax);
}
uintptr_t decryption::clActiveItem(uint64_t a1)
{
// in-place UID. do not run this on a heap pointer.
uint32_t* rdx = (uint32_t*)&a1;
uint32_t r9d = 0x2;
uint32_t edx;
do {
edx = *rdx;
rdx = (uint32_t*)((uint8_t*)rdx + 0x4);
edx = edx - 0x3D5E8E09;
edx = edx ^ 0x2294A40F;
edx = (edx << 0x13) | (edx >> 0xD); // rol 19
edx = edx + 0x62310A3F;
*(rdx - 1) = edx;
--r9d;
} while (r9d);
return a1;
}
uintptr_t decryption::PlayerInventory(uint64_t a1)
{
uintptr_t rax = driver.read<uintptr_t>(a1 + 0x18);
uint32_t* rdx = (uint32_t*)&rax;
uint32_t r8d = 0x2;
uint32_t ecx;
do {
ecx = *rdx;
rdx = (uint32_t*)((uint8_t*)rdx + 0x4);
ecx = (ecx << 0x1C) | (ecx >> 0x4); // rol 28
ecx = ecx ^ 0x65B9B225;
ecx = ecx + 0x2F961B1E;
*(rdx - 1) = ecx;
--r8d;
} while (r8d);
return il2cpp_get_handle(rax);
}
uintptr_t decryption::PlayerEyes(uint64_t a1)
{
uintptr_t rax = driver.read<uintptr_t>(a1 + 0x18);
uint32_t* rdx = (uint32_t*)&rax;
uint32_t r8d = 0x2;
uint32_t ecx;
do {
ecx = *rdx;
rdx = (uint32_t*)((uint8_t*)rdx + 0x4);
ecx = ecx + 0xC4421DB7;
ecx = (ecx << 0xF) | (ecx >> 0x11); // rol 15
ecx = ecx ^ 0x8F17AD9A;
ecx = (ecx << 0x6) | (ecx >> 0x1A); // rol 6
*(rdx - 1) = ecx;
--r8d;
} while (r8d);
return il2cpp_get_handle(rax);
}
uintptr_t decryption::local_player(uint64_t a1)
{
// 25214240 chain — 25231061 dump has no LP crypt
uintptr_t rax = a1;
uint32_t* rdx = (uint32_t*)&rax;
uint32_t r8d = 0x2;
uint32_t ecx;
do {
ecx = *rdx;
rdx = (uint32_t*)((uint8_t*)rdx + 0x4);
ecx = (ecx << 0xB) | (ecx >> 0x15); // rol 11
ecx = ecx ^ 0x30B6FF08;
ecx = ecx + 0x0CC937BB;
ecx = ecx ^ 0xFD26C1F4;
*(rdx - 1) = ecx;
--r8d;
} while (r8d);
return il2cpp_get_handle(rax);
}
inline uint32_t decryption::encrypt_fov(uint32_t val)
{
val = (val << 0x14) | (val >> 0xC); // rol 20
val = val - 0x0BDD8296;
val = val ^ 0x41AA1423;
val = (val << 0xF) | (val >> 0x11); // rol 15
return val;
}
inline uint32_t decryption::decrypt_fov(uint32_t val)
{
val = (val << 0x11) | (val >> 0xF);
val = val ^ 0x41AA1423;
val = val + 0x0BDD8296;
val = (val << 0xC) | (val >> 0x14);
return val;
}
PlayerWalkMovement crypts
namespace pwm {
// capsuleHeight
// enc: rol 4, xor 0x4E67773D, rol 26
// dec: rol 6, xor 0x4E67773D, rol 28
// capsuleCenter
// enc: xor 0xA63219C8, rol 10, add 0x7983BF63
// dec: sub 0x7983BF63, rol 22, xor 0xA63219C8
// gravityMultiplier
// enc: rol 6, xor 0x0BF29DB8, sub 0x14C9A8CC
// dec: add 0x14C9A8CC, xor 0x0BF29DB8, rol 26
// groundAngle
// enc: rol 10, sub 0x75B6E603, xor 0x883CD959, add 0x5EF50FCA
// dec: sub 0x5EF50FCA, xor 0x883CD959, add 0x75B6E603, rol 22
// groundAngleNew
// enc: xor 0xA89B4487, add 0x271F08A0, rol 15, add 0x35634C3B
// dec: sub 0x35634C3B, rol 17, sub 0x271F08A0, xor 0xA89B4487
// groundTime
// enc: add 0x5ED8266A, rol 24, xor 0x975CE3D8, rol 22
// dec: rol 10, xor 0x975CE3D8, rol 8, sub 0x5ED8266A
// jumpTime
// enc: rol 7, sub 0x075CBAD0, rol 7
// dec: rol 25, add 0x075CBAD0, rol 25
// landTime
// enc: xor 0x5D22278E, rol 14, sub 0x10EB2F11, rol 23
// dec: rol 9, add 0x10EB2F11, rol 18, xor 0x5D22278E
// sprintForced (bool)
// enc: add 0x379EE2C7, xor 0x66ECADA2, add 0x49823E40
// dec: sub 0x49823E40, xor 0x66ECADA2, sub 0x379EE2C7
// grounded (bool)
// enc: xor 0x4E950628, add 0x5025DDFA, xor 0xE0887AA0, sub 0x69094678
// dec: add 0x69094678, xor 0xE0887AA0, sub 0x5025DDFA, xor 0x4E950628
// jumping (bool)
// enc: xor 0x49358FC0, rol 12, xor 0xA5DCEB94
// dec: xor 0xA5DCEB94, rol 20, xor 0x49358FC0
// flying (bool)
// enc: rol 10, add 0x41C361D3, rol 4, add 0x7BA47834
// dec: sub 0x7BA47834, rol 28, sub 0x41C361D3, rol 22
}
