ue4游戏逆向之GName内存解析(4.23版本以下)

发布时间 2023-08-13 23:15:10作者: 怎么可以吃突突

ue4游戏中的所有对象名称都保存在GName中,4.23版本以下的GName解析与高版本的不同。

4.23版本以下可以通过'FName::GNames()'获取到GName指针,对应的GName指针就是static TNameEntryArray* Names,利用ue4Dumper时输入的GName就是这个静态指针变量。

'TNameEntryArray'类型是通过类模板'TStaticIndirectArrayThreadSafeRead'定义的,实际TNameEntryArray就相当于一个二维数组:FNameEntry* [2 * 1024 * 1024][0x4000]

TNameEntryArray类型进行简化后如下图所示。

其中类模板TStaticIndirectArrayThreadSafeRead中定义了重载运算符[]完成元素的索引

那么名称的索引保存在何处呢,看一下FName::GetComparisonNameEntry()函数,其通过调用GetComparisonIndex()函数获取FName的成员变量ComparisonIndex,这个就是名称的索引。