17.UE-游戏逆向-查找Aactor(游戏中物品的名字和坐标)
免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动!
本次游戏没法给
内容参考于:微尘网络安全
上一个内容:16.UE-游戏逆向-查找UWorld
本次来理Aactor的结构,从而得到游戏中所有东西(怪物、树、角色等)的名字和坐标,也就是找UWorld-》ULevel-》AActor
首先打开CE,使用上一个内容找到的UWorld的偏移(4BDAAC0),找到它的地址(公式:游戏的exe文件名+0x4BDAAC0),如下图红框UWorld的地址
然后打开之前Dump的class,如下图找到ULevel的在UWorld中的偏移0x30
然后鼠标右键选择浏览相关内存区域
然后选择分析数据/遍历
然后确认下图红框的内容是不是UWorld的地址
然后点击定义新结构
然后随便输入一个名字,然后点击确定
然后就显示了UWorld的内存结构
首先点击0x0位置,因为使用的是UWorld的地址找到的,需要看UWorld的内容,也就是内存地址里面的值,然后再点击0x30位置,如下图红框的,然后就可以看到下图蓝框的内容
上图蓝框的内容就是下图红框里面的内容了
然后如下图红框再找ULevel,查看它里面的结构,然后上一个内容里写了ULevel里有一个Actors的变量,但是下图中没有, 这怎么办
Actors是一个TArray的类型,可以通过TArray的特征在ULevel中找,TArray是一个数据一个是当前存放的多少数据一个是最大可以存放多少数据,所以就可以根据这个特征去看内存,如下图红框它有多个位置符合特征,哪一个才是?
当前的游戏处在主菜单界面,没有进入游戏中,接下来进入游戏,进入游戏后当前存放的多少数据的值会变大,可存放的最大数据也会变大,所以就找进入游戏后会变化的那一个,会变的很大很,会有大上万上千个,起码最少一千个,如下图进入游戏地图后,变大了
然后点开它,如下图红框就是游戏中的树、怪物、建筑物等,在游戏中可以看到的和看不到的都可以在这里找到,注意下图红框全是内存地址,AActor结构的内存地址,如果不是内存地址说明CE分析错了,只需要右击选择指针类型即可
然后分析它的名字,它的名字也是一个GName,也就是一个id,找符合id的数据,下图红框的就符合GName的id,注意现在所在的结构是一个 AActor
如下图C791的字符串,正常来说名字不可能这么长,所以它并不是名字
然后是2E65d5,SM_wb_world_01这应该是地图的名字
然后在看其它的,如下图这是一个树的id,tree_blender4正常来说它是第4个树
然后现在找到名字了,接下来查看它的坐标,看下图红框里的数据,也就是tree_blender4的数据,通过它来找坐标,坐标是在RootComponent里面(根组件)
然后就来到0x130的位置,这里CE分析的有问题,
然后在0x1D0位置就可以看到坐标了,游戏中树木很多,修改之后可能看不出什么效果,后面使用代码把它们全部遍历出来,然后再搞
到这可以理解万物都是对象,都是Actor类型的对象