Rust External/Internal
Hopefully anyone interested in making an external/internal Rust memory hack will find the following useful.
The following Transform works for most GameObject's except for MISC( objectTag 20006 ).
Aimbot:
Game Object Manager:
#define GAME_OBJECT_MANAGER 0x125D5C0
class GameObjectManager
{
public:
LastObjectBase* lastTaggedObject; //0x0000
BaseObject* taggedObjects; //0x0008
LastObjectBase* lastActiveObject; //0x0010
BaseObject* activeObjects; //0x0018
};
class BaseObject
{
public:
char pad_0x0000[0x8]; //0x0000
BaseObject* nextObjectLink; //0x0008
GameObject* object; //0x0010
};
class LastObjectBase
{
public:
char pad_0x0000[0x10]; //0x0000
GameObject* lastObject; //0x0010
};
class GameObjectManager
{
public:
LastObjectBase* lastTaggedObject; //0x0000
BaseObject* taggedObjects; //0x0008
LastObjectBase* lastActiveObject; //0x0010
BaseObject* activeObjects; //0x0018
};
class BaseObject
{
public:
char pad_0x0000[0x8]; //0x0000
BaseObject* nextObjectLink; //0x0008
GameObject* object; //0x0010
};
class LastObjectBase
{
public:
char pad_0x0000[0x10]; //0x0000
GameObject* lastObject; //0x0010
};
Game Objects:
class GameObject
{
public:
char pad_0x0000[0x8]; //0x0000
__int32 m_instanceID; //0x0008
char pad_0x000C[0x24]; //0x000C
__int32 m_label; //0x0030
char pad_0x0034[0x4]; //0x0034
__int32 m_size; //0x0038
char pad_0x003C[0x4]; //0x003C
__int32 m_capacity; //0x0040
char pad_0x0044[0x4]; //0x0044
__int32 m_layer; //0x0048
__int16 m_tag; //0x004C
unsigned char m_isActive; //0x004E
unsigned char m_isActiveCached; //0x004F
unsigned char m_isDestroying; //0x0050
unsigned char m_isActivating; //0x0051
char pad_0x0052[0x6]; //0x0052
String* m_objectName; //0x0058
};
Each GameObject also has a pointer to it's corresponding classes at 0x28.
{
public:
char pad_0x0000[0x8]; //0x0000
__int32 m_instanceID; //0x0008
char pad_0x000C[0x24]; //0x000C
__int32 m_label; //0x0030
char pad_0x0034[0x4]; //0x0034
__int32 m_size; //0x0038
char pad_0x003C[0x4]; //0x003C
__int32 m_capacity; //0x0040
char pad_0x0044[0x4]; //0x0044
__int32 m_layer; //0x0048
__int16 m_tag; //0x004C
unsigned char m_isActive; //0x004E
unsigned char m_isActiveCached; //0x004F
unsigned char m_isDestroying; //0x0050
unsigned char m_isActivating; //0x0051
char pad_0x0052[0x6]; //0x0052
String* m_objectName; //0x0058
};
Each GameObject also has a pointer to it's corresponding classes at 0x28.
The following Transform works for most GameObject's except for MISC( objectTag 20006 ).
Code:
class Transform
{
public:
char pad_0x0000[0x34]; //0x0000
Vector3 rotation; //0x0034
Vector3 origin; //0x0040
};
class MiscTransform
{
public:
char pad_0x0000[0x8C]; //0x0000
D3DXVECTOR3 origin; //0x008C
};
Code:
Inside BasePlayer/BaseEntity:
PlayerInput* input; //0x01E0
class PlayerInput
{
public:
char pad_0x0000[0x44]; //0x0000
Vector4 bodyRotation; //0x0044
Vector3 bodyAngles; //0x0054 //write to this
Vector4 headRotation; //0x0060
Vector3 headAngles; //0x0070
Vector2 viewDelta; //0x007C
Vector3 headDelta; //0x0084
__int32 mouseWheelUp; //0x0090
__int32 mouseWheelDn; //0x0094
char pad_0x0098[0x13C]; //0x0098
};//Size=0x01D4

