[UE4 逆向] GetName逆向-内部和外部分别DumpName(4.23以下)

本文深入分析了UE4引擎中GetName函数的源码,从FObjectExport开始,逐步解析了GetName的内部工作原理,包括GetDisplayNameEntry()和GetPlainNameString()等关键步骤。同时,介绍了如何在游戏BattleRoyaleTrainer中实现内部和外部DumpName的方法,内部DumpName直接利用源码结构,外部DumpName则通过读取内存来获取Name信息。

本次示范游戏为BattleRoyaleTrainer这个单机游戏

1.GetName函数引擎源码详细分析

直接搜找到引擎源码中的GetName()

在Engine\Source\Runtime\CoreUObject\Public\UObject\UObjectBaseUtility.h里

 进入GetFName()看一看,发现它返回了个NamePrivate,NamePrivate为FName类型

 再进入ToString(),调用了GetDisplayNameEntry()下的GetPlainNameString(),

 进入GetPlainNameString(),发现它只是对字符串的一些处理,说明GetDisplayNameEntry()就已经返回字符串了,GetPlainNameString()不用管

 进入GetDisplayNameEntry() ,这里Names也就是GName,Inde

UE4中,`GetName` 函数是一个常用且重要的函数,主要用于获取对象的名称。以下从使用方法作用两方面进行介绍: ### 使用方法 `GetName` 函数是 `UObject` 类的成员函数,这意味着所有继承自 `UObject` 的类的对象都可以调用该函数。 #### 基本调用 在蓝图或C++代码中都可以使用 `GetName` 函数。 在C++代码中,调用示例如下: ```cpp #include "YourActor.h" #include "Kismet/GameplayStatics.h" void AYourActor::SomeFunction() { UWorld* World = GetWorld(); if (World) { TArray<AActor*> FoundActors; UGameplayStatics::GetAllActorsOfClass(World, AActor::StaticClass(), FoundActors); for (AActor* Actor : FoundActors) { FString ActorName = Actor->GetName(); UE_LOG(LogTemp, Warning, TEXT("Actor Name: %s"), *ActorName); } } } ``` 在上述代码中,通过 `GetAllActorsOfClass` 获取场景中所有的 `AActor` 对象,然后对每个 `AActor` 对象调用 `GetName` 函数获取其名称,并使用 `UE_LOG` 输出该名称。 在蓝图中,可以通过节点的方式调用 `GetName` 函数。在蓝图图表中,从一个 `UObject` 类型的变量上引出连线,搜索 `Get Name` 节点即可使用。 ### 作用 - **调试日志记录**:在开发过程中,经常需要对对象进行调试日志记录,通过 `GetName` 函数可以方便地获取对象的名称,便于开发者识别跟踪特定的对象。例如,当某个对象出现异常时,可以通过输出其名称来定位问题。 - **对象管理查找**:在管理大量对象时,对象的名称是一个重要的标识。通过 `GetName` 函数可以获取对象名称,然后根据名称进行对象的查找、筛选排序等操作。例如,在一个游戏场景中有多个不同类型的道具,每个道具都有唯一的名称,可以通过名称来查找特定的道具对象。 - **UI显示**:在游戏的用户界面中,可能需要显示对象的名称,如角色名称、物品名称等。使用 `GetName` 函数可以获取这些对象的名称并显示在UI上。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值