诛仙世界游戏逆向UE5飞天功能如何实现的

  UE游戏引擎源码是开源的,所以咱们可以在UE5源码里面翻一番相关游戏世界物理引擎相关的类,找一找和物理重力相关的变量 修改世界全局重力从而实现飞天

在Unreal Engine 5(UE5)中,PhysicsSettings是项目设置中的一个重要部分,它允许开发者对游戏中的物理模拟进行各种配置和优化。通过调整这些设置,开发者可以根据游戏的需求优化物理模拟的性能和行为。

 PhysicsSettings在UE5中是控制和优化物理模拟的关键工具。通过合理调整这些设置,开发者不仅能够实现预期的物理效果,还能在性能和效果之间找到平衡,提升游戏的整体质量和运行效率。

所以我们去源码里看看PhysicsSettings这个类,分析下他的继承关系,把整个父子类的所有成员变量罗列出来

大家可以自己去翻一番源码,就知道 在UPhysicsSettingsCore 类里面 第一个成员 就是 float DefaultGravityZ;  通过英文含义就知道 这个是Z轴重力,也就是我们说的 全局重力,修改他就可以实现无重力 就可以飞起来

那么 现在就解决2个问题就可以实现飞天了

1 找到全局的 UPhysicsSettings 对象

2 找到DefaultGravityZ 的偏移

然后往UPhysicsSettings +DefaultGravityZ 的偏移的地址里面写值 改变重力就可以了

遍历TUObjectArray 就可以找到 className为PhysicsSettings的叫做Default__PhysicsSettings的对象

至于DefaultGravityZ 偏移,我们可以分析父子类的宽度,

从UObjectBase 开始 ,首先 他有虚函数 肯定有个8字节的虚表

EObjectFlags 是个enum 占4字节

InternalIndex int32  4字节

ClassPrivate 是个地址  8字节

NamePrivate 是个FName  ,FName多大呢 ?进去看看

FNameEntryId   进去看就知道 4字节

 uint32      Number; 也是4字节,是否使用取决于开发者设置

 FNameEntryId  DisplayIndex; 由于WITH_CASE_PRESERVING_NAME这个宏是在运行时不参与编译的

所以FName 也是8字节

继续

UObject*  OuterPrivate;  是个地址 8字节

所以 UObjectBase 这个类的宽度是

8+4+4+8+8+8 +8 +8=0x28 个字节

UDeveloperSettings  这个类里面 2个FName 所以是8+8 =0x10个字节

所以最后到DefaultGravityZ 的偏移是0x38

最终实现飞天的代码就简单了

  auto obj = SDK::UObject::FindObject("PhysicsSettings Engine.Default__PhysicsSettings");  float Gravity = N_Read<float>({(UINT64)obj + 0x38});
  N_Write<float>({ (UINT64)obj + 0x38 }, 0.0f);

方法思路适用于所有的UE引擎,不同游戏可能会有偏移打乱和加密的情况,需要具体调试和dump分析

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值