上一篇详细分析了FName,手写GetName算法和FName dump,鉴于文章篇幅和避免重复造开源的轮子,此篇选择讲解开源工具的使用。
GUObjectArray是用于管理全局UObject对象数组FUObjectArray,它被定义在UObjectHash.cpp中。它用于收集所有的UObject对象。
GUObjectArray是全局对象数组FUObjectArray,用于收集所有的UObject对象。FUObjectItem这是一个对象在全局列表中的单元存储方式,Item包含Object的相关信息。
GetObjectPtr算法源码在UObjectBaseInit初始化函数中使用UObjectBaseInit字符串定位
U/FProperty: 表示 C++ 中的属性,即类或结构体的成员变量。
UEnum: 表示 C++ 中的枚举,内部保存了一个 TMap,维护了 Name、Value、Index 三大信息的对应关系。
UStruct: 表示 C++ 中的复杂类型,包含函数、类、结构体三种。内部维护了所表示类型的所有 UProperty。
UFunction: 表示 C++ 中的函数,内部维护了函数指针、栈帧、参数返回值信息,还提供了反射执行所表示函数的方法。
UClass:表示 C++ 中的类,在 UStruct 的基础上扩展了 UFunction 的保存与查找方法。
UScriptStruct: 表示 C++ 中的结构体,只是在 UStruct 的基础上增加了一些工具方法而已。
在创建类时,会生成大量属性,包括蓝图类。有些类型将可能有几十万多个UProperty,因为所有的UProperty继承自UObject,因此会产生各种各样的开销。这一特性对整个引擎影响及其广泛,包括额外的内存空间,UProperty构建/销毁成本,垃圾回收性能。
从4.2x开始,此UProperty已完全更改为FProperty。 前缀“F”说明其不再继承UObject。UProperty类的定义仍然存在,但它只用于在将早期版本中创建的资源转换为FProperty做一次。UProperty变成了FProperty
详细可以看官方文档:https://dev.epicgames.com/documentation/zh-cn/unreal-engine/unreal-engine-5-0-documentation?application_version=5.0因为是主流引擎ue dump工具很多,下面介绍俩个开源项目,第一个代码量比较少方便学习和二次魔改。第二个通过特征和遍历反射结构来自动修复特征7acK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6Y4N6i4c8@1K9i4t1I4y4q4)9J5c8W2g2F1M7X3g2S2L8p5c8#2L8i4m8W2M7W2)9J5k6o6c8Q4x3X3f1J5y4b7`.`.ef4K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6q4L8X3y4J5P5i4q4W2k6q4)9J5c8V1c8#2L8i4m8W2M7W2)9J5k6o6M7`.
第一个在engine.cpp找到games填写游戏名称和对应engines即可
回复或点赞可查看完整内容
---
来源: 看雪论坛
原文链接: https://bbs.kanxue.com/thread-287880.htm
[原创]unreal engine逆向学习之dump工具使用(三)
260 浏览
11 回复
Thanks for share!
你的分享对大家帮助很大,非常感谢!
你的分享对大家帮助很大,非常感谢!
UObjectBaseInit
你的分享对大家帮助很大,非常感谢!
感谢分享
感谢分享
收藏学习
看看
mark
mark