A section dedicated to sharing the latest offsets, structures, and updates related to software, game reversing, and memory analysis.
#pragma once
namespace offsets {
inline int tod_sky = 0xDC550A8;
inline int basenetworkable = 0xDB97EA8;
namespace BaseCombatEntity {
inline int lifestate = 0x214;
inline int model = 0xC8;
};
namespace BasePlayer {
inline int playerFlags = 0x538;
inline int BaseMovement = 0x268;
inline int displayName_ = 0x558;
inline int playerModel = 0x288;
inline int clactiveitem = 0x438;
inline int inventory = 0x2D8;
inline int modelState = 0x3B0;
inline int playerInput = 0x250;
inline int lastSentTick = 0x278;
inline int current_camera_mode = 0x344;
inline int eyes = 0x600;
}
namespace BaseProjectile {
inline int recoil = 0x328;
inline int viewModel = 0x208;
namespace viewModels {
inline int baseviewModel = 0x28;
namespace baseViewModel {
inline int ironSight = 0xD0;
inline int ViewmodelBob = 0x88;
inline int viewmodelSway = 0xA8;
inline int viewmodelLower = 0x78;
namespace ViewmodelLower {
inline int lowerOnSprint = 0x20;
inline int lowerWhenCantAttack = 0x21;
inline int shouldLower = 0x28;
}
namespace ViewmodelSway {
inline int positionalSwayAmount = 0x24;
inline int positionalSwaySpeed = 0x20;
inline int rotationSwaySpeed = 0x28;
inline int rotationSwayAmount = 0x2C;
}
namespace viewmodelBob {
inline int bobAmountRun = 0x2C;
inline int bobAmountWalk = 0x28;
inline int velocity = 0x40;
inline int bobOffset = 0x4C;
}
namespace ironSights {
inline int zoomFactor = 0x2C;
}
}
}
}
namespace RecoilProperties {
inline int new_recoil = 0x80;
}
namespace PlayerEyes {
inline int eye_offset = 0x50;
inline int eye_rotation = 0x6C;
inline int body_rotation = 0x50;
inline int view_offset = 0x60;
}
namespace ItemContainer {
inline int itemlist = 0x20;
}
namespace PlayerInventory {
inline int belt = 0x60;
}
namespace item {
inline int item_definition = 0xB8;
inline int amount = 0x94;
inline int item_uid = 0xA0;
inline int category = 0x48;
inline int held_entity = 0xC0;
}
namespace PlayerModel {
inline int position = 0x1D0;
inline int is_npc = 0x2E2;
inline int new_velocity = 0x1F4;
}
namespace BaseMovement {
inline int ground_angles_new = 0xD8;
inline int ground_angles = 0xD0;
inline int target_movement = 0x3C;
inline int set_ground = 0x54;
}
namespace ModelState {
inline int flags = 0x5C;
}
};
EntityLoop:
uint64_t bn = mem::read<uint64_t>(mem::gBase + offsets::basenetworkable);
uint64_t field = mem::read<uint64_t>(bn + 0xB8);
uint64_t wrapper_class_ptr = mem::read<uint64_t>(field + 0x38);
if (!wrapper_class_ptr)
return;
uint64_t wrapper_class = Loop::networkable_key(wrapper_class_ptr);
if (!wrapper_class)
return;
uint64_t parent_static_fields = mem::read<uint64_t>(wrapper_class + 0x10);
if (!parent_static_fields)
return;
uint64_t parent_class = Loop::networkable_key(parent_static_fields);
if (!parent_class)
return;
uint64_t entitys = mem::read<uint64_t>(parent_class + 0x10);
if (!entitys)
return;
auto entity_size = mem::read<uint32_t>(entitys + 0x18);
auto entity_array = mem::read<uint64_t>(entitys + 0x10);
Maincamera
auto camera2 = *(uintptr_t*)(mem::gBase + 0xDB97A70);
if (!camera2) return{};
auto trans = *(uintptr_t*)(camera2 + 0xb8);
if (!trans) return{};
auto wads = *(uintptr_t*)(trans + 0x98);
if (!wads) return{};
auto entity = *(uintptr_t*)(wads + 0x10);
if (!entity) return{};
return *(VMatrix*)(entity + 0x30c);
uint64_t c_decrypt_networkable::decrypt(uintptr_t a1) {
int v5; // eax
bool v6; // zf
signed __int64 v7; // rcx
__int64 v8; // rax
__int128 v23; // [rsp+20h] [rbp-28h] BYREF
__int128* a2;
__int64 a3;
a2 = &v23;
LODWORD(a3) = 2;
v23 = driver.read<uint32_t>(a1 + 24);
do
{
v5 = *(_DWORD*)a2;
a2 = (__int128*)((char*)a2 + 4);
*((_DWORD*)a2 - 1) = (((32 * (v5 - 507257619)) | ((unsigned int)(v5 - 507257619) >> 27)) ^ 0xB0AA1457)
- 1774998069;
v6 = (_DWORD)a3 == 1;
a3 = (unsigned int)(a3 - 1);
} while (!v6);
v7 = v23;
return c_Il2cppGetHandle::Il2cppGetHandle(v7);
}
uint64_t decrypt_base_player::decrypt(uint64_t a1) {
int* v5; // rdx
int v6; // r8d
int v7; // ecx
signed __int64 v8; // rcx
__int128 v24; // [rsp+20h] [rbp-28h] BYREF
v5 = (int*)&v24;
v6 = 2;
v24 = driver.read<uint32_t>(a1 + 24);
do
{
v7 = *v5++;
*(v5 - 1) = (((v7 - 601257353) ^ 0x153ACEBD) << 11) | (((v7 - 601257353) ^ 0x153ACEBDu) >> 21);
--v6;
} while (v6);
v8 = v24;
return c_Il2cppGetHandle::Il2cppGetHandle(v8);
}
uint64_t c_decrypt_uint32_t::decrypt(uint64_t a1) {
int* v5; // rdx
int v6; // r8d
int v7; // ecx
signed __int64 v8; // rcx
__int128 v24; // [rsp+20h] [rbp-28h] BYREF
v5 = (int*)&v24;
v6 = 2;
v24 = a1;
do
{
v7 = *v5++;
*(v5 - 1) = (((v7 - 601257353) ^ 0x153ACEBD) << 11) | (((v7 - 601257353) ^ 0x153ACEBDu) >> 21);
--v6;
} while (v6);
v8 = v24;
return v8;
}
__m128i convar_fov::decrypt(uint64_t v0) {
uint64_t v1 = (((unsigned int)driver.read<uint32_t>(v0 + 180LL) << 23) | ((unsigned __int64)(unsigned int)driver.read<uint32_t>(v0 + 180LL) >> 9))
+ 217037338;
return _mm_cvtsi32_si128((v1 << 12) | (v1 >> 20));
}
uint64_t c_decrypt_base_projectile::decrypt(uint64_t a1) {
int* v5; // rdx
int v6; // r8d
int v7; // eax
signed __int64 v8; // rcx
__int128 v24; // [rsp+20h] [rbp-28h] BYREF
v5 = (int*)&v24;
v6 = 2;
v24 = driver.read<uint32_t>(a1 + 24);
do
{
v7 = *v5++;
*(v5 - 1) = (((v7 - 1497648361) << 25) | ((unsigned int)(v7 - 1497648361) >> 7)) - 1299749402;
--v6;
} while (v6);
v8 = v24;
return c_Il2cppGetHandle::Il2cppGetHandle(v8);
}
uint64_t c_Il2cppGetHandle::Il2cppGetHandle(int32_t ObjectHandleID)
{
uint64_t rdi_1 = ObjectHandleID >> 3;
uint64_t rcx_1 = (ObjectHandleID & 7) - 1;
uint64_t baseAddr = mem::gBase + 0xDEDA540 + rcx_1 * 0x28;
uint32_t limit = read<uint32_t>(baseAddr + 0x10);
if (rdi_1 < limit) {
uintptr_t objAddr = read<uintptr_t>(baseAddr);
uint32_t bitMask = read<uint32_t>(objAddr + ((rdi_1 >> 5) << 2));
if (TEST_BITD(bitMask, rdi_1 & 0x1f)) {
uintptr_t ObjectArray = read<uintptr_t>(baseAddr + 0x8) + (rdi_1 << 3);
return read<BYTE>(baseAddr + 0x14) > 1
?read<uintptr_t>(ObjectArray)
: ~read<uint32_t>(ObjectArray);
}
}
return 0;
}
1 Like
Are this the new ones?
V2590
namespace offsets
{
constexpr auto Il2CppGetHandle = 0xC191CA0;
constexpr auto BaseNetworkable_TypeInfo = 0xBE7FB88;
constexpr auto MainCamera_TypeInfo = 0xBEDD6A8;
constexpr auto BasePlayer_TypeInfo = 0xBF26B08;
constexpr auto TOD_Sky_TypeInfo = 0xBEF9CB0;
constexpr auto ConvarAdmin_TypeInfo = 0xBEFE9D8;
constexpr auto Input_TypeInfo = 0xBEA5C88;
constexpr auto ConvarGraphics_TypeInfo = 0xBE933A8;
namespace BaseNetworkable
{
constexpr auto ClientEntities = 0x30;
namespace EntityRealm
{
constexpr auto EntityList = 0x10;
}
}
namespace ListDictionary
{
constexpr auto BufferList = 0x18;
}
namespace BufferList
{
constexpr auto List = 0x10;
constexpr auto Count = 0x18;
}
namespace MainCamera
{
constexpr auto Camera = 0x8;
}
namespace TOD_Sky
{
constexpr auto Instances = 0x28;
}
namespace BasePlayer
{
constexpr auto ClActiveItem = 0x460;
constexpr auto PlayerEyes = 0x2A8;
constexpr auto PlayerInventory = 0x478;
constexpr auto CurrentTeam = 0x430;
constexpr auto BaseMovement = 0x598;
constexpr auto PlayerModel = 0x288;
constexpr auto PlayerFlags = 0x558;
constexpr auto DisplayName = 0x3F8;
constexpr auto PlayerInput = 0x5C0;
}
namespace PlayerInventory
{
constexpr auto Belt = 0x28;
constexpr auto Wear = 0x58;
}
namespace ItemContainer
{
constexpr auto ItemList = 0x40;
}
namespace Item
{
constexpr auto ItemDefinition = 0x70;
constexpr auto HeldEntity = 0x88;
constexpr auto ItemId = 0x98;
constexpr auto Health = 0xC8;
constexpr auto MaxHealth = 0xD0;
constexpr auto Amount = 0xCC;
}
namespace PlayerModel
{
constexpr auto SkinnedMultiMesh = 0x298;
}
namespace SkinnedMultiMesh
{
constexpr auto RendererList = 0x58;
}
namespace BaseProjectile
{
constexpr auto RecoilProperties = 0x340;
constexpr auto PrimaryMagazine = 0x318;
}
namespace HeldEntity
{
constexpr auto ViewModel = 0x218;
}
namespace Input
{
constexpr auto Buttons = 0xD0;
namespace Button
{
constexpr auto CurrentValue = 0x39;
constexpr auto Name = 0x18;
constexpr auto KeyCode = 0x24;
constexpr auto Binds = 0x30;
}
}
namespace Convar
{
namespace Graphics
{
constexpr auto Fov = 0x34C;
}
namespace Admin
{
constexpr auto AdminTime = 0x9C;
}
}
}
namespace Encrypt
{
inline uint64_t AdminTime(float value)
{
uint32_t eax, ecx;
eax = *(uint32_t*)&value;
eax = eax + 0x1E33A871;
ecx = eax;
eax = eax << 0x1F;
ecx = ecx >> 0x1;
ecx = ecx | eax;
ecx = ecx - 0x6B7ACC8A;
eax = ecx;
ecx = ecx << 0x13;
eax = eax >> 0xD;
eax = eax | ecx;
return static_cast<uint64_t>(eax);
}
inline uint64_t Fov(float value)
{
uint32_t eax, ecx;
eax = *(uint32_t*)&value;
eax = eax + 0x1E33A871;
ecx = eax;
eax = eax << 0x1F;
ecx = ecx >> 0x1;
ecx = ecx | eax;
ecx = ecx - 0x6B7ACC8A;
eax = ecx;
ecx = ecx << 0x13;
eax = eax >> 0xD;
eax = eax | ecx;
return static_cast<uint64_t>(eax);
}
}
namespace Decrypt
{
inline uint64_t ClientEntities(uint64_t address)
{
uint64_t rax = mem.Read<uint64_t>(address + 0x18);
uint64_t* rdx = &rax;
uint32_t r8d = 0x2;
uint32_t eax, ecx, edx;
do {
eax = *(uint32_t*)(rdx);
rdx = (uint64_t*)((uint8_t*)rdx + 0x4);
eax = eax + 0x84B02EEE;
ecx = eax;
eax = eax << 0xD;
ecx = ecx >> 0x13;
ecx = ecx | eax;
ecx = ecx - 0x2F1224FF;
*((uint32_t*)rdx - 1) = ecx;
--r8d;
} while (r8d);
return Il2cppGetHandle(rax);
}
inline uint64_t EntityList(uint64_t address)
{
uint64_t rax = mem.Read<uint64_t>(address + 0x18);
uint64_t* rdx = &rax;
uint32_t r8d = 0x2;
uint32_t eax, ecx, edx;
do {
ecx = *(uint32_t*)(rdx);
eax = *(uint32_t*)(rdx);
rdx = (uint64_t*)((uint8_t*)rdx + 0x4);
ecx = ecx >> 0xA;
eax = eax << 0x16;
ecx = ecx | eax;
ecx = ecx - 0x49064304;
ecx = ecx ^ 0xFA11D865;
*((uint32_t*)rdx - 1) = ecx;
--r8d;
} while (r8d);
return Il2cppGetHandle(rax);
}
inline uint64_t PlayerInventory(uint64_t address)
{
uint64_t rax = mem.Read<uint64_t>(address + 0x18);
uint64_t* rdx = &rax;
uint32_t r8d = 0x2;
uint32_t eax, ecx, edx;
do {
eax = *(uint32_t*)(rdx);
ecx = *(uint32_t*)(rdx);
rdx = (uint64_t*)((uint8_t*)rdx + 0x4);
eax = eax << 0x10;
ecx = ecx | eax;
ecx = ecx + 0xD406ABD4;
eax = ecx;
ecx = ecx << 0x14;
eax = eax >> 0xC;
eax = eax | ecx;
*((uint32_t*)rdx - 1) = eax;
--r8d;
} while (r8d);
return Il2cppGetHandle(rax);
}
inline uint64_t PlayerEyes(uint64_t address)
{
uint64_t rax = mem.Read<uint64_t>(address + 0x18);
uint64_t* rdx = &rax;
uint32_t r8d = 0x2;
uint32_t eax, ecx, edx;
do {
eax = *(uint32_t*)(rdx);
rdx = (uint64_t*)((uint8_t*)rdx + 0x4);
eax = eax ^ 0x5C4C7BF3;
ecx = eax;
eax = eax << 0x10;
ecx = ecx >> 0x10;
ecx = ecx | eax;
ecx = ecx - 0x3E3A4010;
*((uint32_t*)rdx - 1) = ecx;
--r8d;
} while (r8d);
return Il2cppGetHandle(rax);
}
inline uint64_t ClActiveItem(uint64_t address)
{
uint64_t rsp = address;
uint64_t* rdx = &rsp;
uint32_t r8d = 0x2;
uint32_t eax, ecx, edx;
do {
ecx = *(uint32_t*)(rdx);
eax = *(uint32_t*)(rdx);
rdx = (uint64_t*)((uint8_t*)rdx + 0x4);
eax = eax << 0x18;
ecx = ecx >> 0x8;
ecx = ecx | eax;
ecx = ecx + 0xD72E3265;
eax = ecx;
ecx = ecx << 0x1F;
eax = eax >> 0x1;
eax = eax | ecx;
eax = eax - 0x9830B30;
*((uint32_t*)rdx - 1) = eax;
--r8d;
} while (r8d);
return rsp;
}
}```
Offsets version :v2594 -b19618769
namespace Main
{
RustStorage Il2cppHandle = 0xD2CC370
RustStorage BaseNetworkable_C = 0xCFC03E0
RustStorage static_fields = 0xB8
RustStorage wrapper_class_ptr = 0x8
RustStorage parent_static_fields = 0x10
RustStorage entity = 0x20
RustStorage MainCamera_C offset = 0xCFBFF78
RustStorage MainCamera_Chain1 = 0xB8
RustStorage MainCamera_Chain2 = 0xC8
RustStorage MainCamera_Chain3 = 0x10
}
namespace Offsets
{
RustStorage SingletonComponent = 0xCFF14C8;
RustStorage SingletonInstance = 0x18;
RustStorage BaseViewModel = 0xD032210;
RustStorage BaseViewModel_ListPTR = 0x220;
RustStorage ConVar_Graphics = 0xCF65080;
RustStorage PlayerEyes_c = 0xD030E78;
RustStorage MainMenuSystem = 0xCFD47F8;
RustStorage TOD_Sky_c = 0xCF6C260;
RustStorage Tod1 = 0x88;
RustStorage ConVar_Admin_c = 0xD038698;
namespace BaseViewModelClass
{
RustStorage ironSights = 0xA8;
RustStorage useViewModelCamera = 0x40;
RustStorage zoomFactor = 0x2C;
RustStorage InstroSpeed = 0x30;
}
namespace PlayerInventory
{
RustStorage containerBelt = 0x58;
RustStorage containerWear = 0x30;
}
namespace Convar_Admin
{
RustStorage TimeChanger = 0x140;
}
namespace Convar_Graphics
{
RustStorage FovChanger = 0x4ec;
}
namespace ItemDefinition
{
RustStorage displayName = 0x40;
RustStorage shortname = 0x28;
RustStorage itemid = 0x20;
RustStorage ItemMod = 0x190;
RustStorage ItemClass = 0x1A8;
}
namespace ItemMod
{
RustStorage BlocksAiming = 0x54;
RustStorage UIBlackoutOverlay = 0x50;
}
namespace BasePlayer
{
RustStorage playerFlags = 0x580;
RustStorage _displayName = 0x2C0;
RustStorage decrypt_uint32 = 0x488;
RustStorage movement = 0x338;
RustStorage inventory = 0x320;
RustStorage input = 0x4A0;
RustStorage eyes = 0x678;
RustStorage playerModel = 0x2B8;
RustStorage currentTeam = 0x458;
RustStorage mounted = 0x4C0;
RustStorage UserID = 0x520;
RustStorage clothingBlocksAiming = 0x65C;
RustStorage clothingMoveSpeedReduction = 0x660;
}
namespace PlayerModel
{
RustStorage IsNpc__BackingField = 0x30E;
RustStorage modelState = 0x2A8;
RustStorage rotation = 0x208;
RustStorage newVelocity = 0x1FC;
RustStorage Velocity = 0x1E4;
RustStorage position = 0x1D8;
RustStorage _multiMesh = 0x2A0;
RustStorage InGesture = 0x270;
RustStorage GestureConfig = 0x3C0;
RustStorage PlayerModelLayer = 0x68;
}
namespace SkinnedMultiMesh
{
RustStorage Renderers__BackingField = 0x58;
}
namespace RecoilProperties
{
RustStorage recoilYawMin = 0x18;
RustStorage recoilPitchMin = 0x20;
RustStorage aimconeCurveScale = 0x60;
RustStorage newRecoilOverride = 0x80;
RustStorage recoilYawMax = 0x1C;
RustStorage recoilPitchMax = 0x24;
RustStorage _didSparkThisFrame = 0x408;
RustStorage successFraction = 0x3F8;
}
namespace BaseMelee
{
RustStorage maxDistance = 0x2E8;
}
namespace BaseMountable
{
RustStorage canWieldItems = 0x284;
}
namespace PlayerEyes
{
RustStorage viewOffset = 0x1A4;
RustStorage bodyRotation__BackingField = 0x50;
}
namespace PlayerInput
{
RustStorage bodyangles = 0x44;
RustStorage AutoRun = 0xA4;
}
namespace BaseProjectile
{
RustStorage reloadTime = 0x318;
RustStorage IsReloading = 0x3C0;
RustStorage recoil = 0x348;
RustStorage primaryMagazine = 0x320;
RustStorage aimconePenalty = 0x364;
RustStorage aimCone = 0x358;
RustStorage aimconePenaltyPerShot = 0x360;
RustStorage aimSway = 0x33C;
RustStorage aimSwaySpeed = 0x340;
RustStorage createdProjectiles = 0x398;
RustStorage projectileVelocityScale = 0x2DC;
RustStorage sightAimConeOffset = 0x214;
RustStorage sightAimConeScale = 0x3B0;
RustStorage hipAimConeOffsets = 0x360;
RustStorage hipAimConeScale = 0x3B8;
RustStorage stancePenaltyScale = 0x370;
RustStorage stancePenalty = 0x348;
RustStorage aimConePenaltyMax = 0x364;
RustStorage automatic = 0x2E0;
RustStorage hipAimCone = 0x35C;
RustStorage successFraction = 0x3F8;
RustStorage _didSparkThisFrame = 0x408;
RustStorage RecoilProperties = 0x348;
RustStorage newRecoilOverride = 0x80;
RustStorage repeatDelay = 0x23C;
RustStorage deployDelay = 0x238;
RustStorage attackReady = 0x3F8;
RustStorage nopullback = 0x3FC;
RustStorage isBurstWeapon = 0x37A;
RustStorage canChangeFireModes = 0x37B;
RustStorage currentBurst = 0x3F0;
RustStorage internalBurstFireRateScale = 0x384;
}
namespace Magazine
{
RustStorage capacity = 0x18;
RustStorage contents = 0x1C;
RustStorage ammoType = 0x20;
}
namespace CompoundBowWeapon
{
RustStorage movementPenaltyRampUpTime = 0x420;
RustStorage stringHoldDurationMax = 0x410;
}
namespace Item
{
RustStorage heldEntity = 0x70;
RustStorage ItemDefinition = 0x20;
RustStorage uid = 0x48;
RustStorage amount = 0xD0;
RustStorage MaxHealth = 0xA0;
RustStorage CurrentHealth = 0x58;
RustStorage AmmoCount = 0x8C;
RustStorage ItemList = 0x70;
RustStorage ItemClass = 0x1A8;
}
namespace BaseCombatEntity
{
RustStorage MaxHealth = 0x240;
RustStorage CurrentHealth = 0x23C;
RustStorage lifestate = 0x234;
}
namespace PatrolHelicopter
{
RustStorage Weakspots = 0x3D8;
RustStorage CurrentHealth = 0x24;
RustStorage MaxHealth = 0x20;
}
namespace HeldEntity
{
RustStorage ViewModel = 0x220;
RustStorage ViewModelInstance = 0x28;
}
namespace ViewModel
{
RustStorage ViewmodelSway = 0x98;
RustStorage ViewmodelBob = 0xC0;
RustStorage bobSpeedWalk = 0x20;
RustStorage bobSpeedRun = 0x24;
RustStorage bobAmountWalk = 0x28;
RustStorage bobAmountRun = 0x2C;
RustStorage positionalSwaySpeed = 0x20;
RustStorage rotationSwayAmount = 0x2C;
RustStorage punchDuration = 0x34;
RustStorage punchMagnitude = 0x38;
}
namespace AttackEntity
{
RustStorage repeatDelay = 0x23C;
}
namespace BaseEntity
{
RustStorage model = 0xC8;
RustStorage upkeeptime = 0x368;
RustStorage AutorizedList = 0x338;
RustStorage TimerText = 0x378;
RustStorage EntityFlags = 0xD0;
RustStorage PlayerName = 0x250;
}
namespace BaseMovement
{
RustStorage groundAngleNew = 0xC8;
RustStorage Running__BackingField = 0x48;
RustStorage Grounded__BackingField = 0x54;
}
namespace PlayerWalkMovement
{
RustStorage jumpTime = 0x118;
RustStorage landTime = 0x120;
RustStorage groundTime = 0x110;
RustStorage previousVelocity = 0x138;
RustStorage capsuleHeightCrawling = 0x78;
RustStorage capsuleHeightDucked = 0x70;
RustStorage capsuleHeight = 0x68;
RustStorage groundAngleNew = 0x108;
RustStorage groundAngle = 0x100;
RustStorage GravityTestRadius = 0x80;
RustStorage capsuleCenterCrawling = 0x7C;
RustStorage capsuleCenterDucked = 0x74;
RustStorage capsuleCenter = 0x6C;
RustStorage gravityMultiplier = 0xA8;
RustStorage maxVelocity = 0xC0;
RustStorage flying = 0x204;
RustStorage grounded = 0x1BC;
RustStorage WasFalling = 0x1FC;
}
namespace BaseNetworkable
{
RustStorage prefabID = 0x30;
}
namespace Translate_Phrase
{
RustStorage english = 0x18;
}
}