[UE4 逆向] GetName逆向

阅读: 评论:0

[UE4 逆向] GetName逆向

[UE4 逆向] GetName逆向

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

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

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

在EngineSourceRuntimeCoreUObjectPublicUObjectUObjectBaseUtility.h里

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

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

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

 进入GetDisplayNameEntry() ,这里Names也就是GName,Index为名字索引(FName中的成员), 箭头所指地方为关键地方(后面会说),

这边再去TNameEntryArray看看,发现是个类模板的声明定义

 再进入TStaticIndirectArrayThreadSafeRead,结合上边返回的Names[Index],这里肯定是重载了操作符[ ],

 

在该类中找到重载操作符[ ]的函数,发现里面调用了GetItemPtr(index)

 

 再进入GetItemPtr(), 这里就是最里层,最关键的GetName算法部分了

 2.内部DumpName

直接照源码里要用的结构抄一下再改一点就可以了

 这里先打印20个看看,要dump所有的话,改20为Names->NumElements即可,注入dll后效果如图

 

3.外部DumpName

外部dump的话就不能用指针方式了,只能一层一层读,也很简单

 

 这里ReadMemory是我自己为方便 封装的一个连续读取的函数

 运行效果如图:

 

 

本文发布于:2024-01-30 03:48:53,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170655773319014.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

下一篇:l不自动提示
标签:GetName
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23