为什么要找骨骼基址?
找骨骼基址是为了实现绘制骨架和骨骼自瞄,比如瞄准头部骨骼、胸部骨骼。
找骨骼基址
对自己的 Actor
的地址进行结构分析,防止分析错地址最好直接用 APawn
,然后根据特征去查找。
ComponentToWorld
是 3x3
结构,最后一行数值不会动,最后一行数值一般是3个固定的数值和 0.00
。比如1.00 1.00 1.00 0.00
或 2.50 2.50 2.50 0.00
这样的。
根据特征,我们找到了 ComponentToWorld
,得到偏移为 Actor.base -> 0x378 -> 0x180
,而 0x378
偏移则是 Mesh
的偏移。
ComponentToWorld
和骨骼数组都是在 Mesh
下面,所以我们找到了 ComponentToWorld
就很容易找到骨骼数组。骨骼数组非常容易看出来,在内存中很规律。我们找到了骨骼数组的偏移为 Actor.base -> 0x378 -> 0x698
:
有时候骨骼数组里的数值并不会发生变动,但还是很规律。比如下面这个 GS:GO
的:
最后用 ComponentToWorld
、骨骼数组和摄像机矩阵,结合具体关节的实际偏移,根据固定算法去绘制骨架。