UE4逆向篇-2_各类数据的查找方式

这篇具有很好参考价值的文章主要介绍了UE4逆向篇-2_各类数据的查找方式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

写在前面

1.通过前面的文章,相信各位已经能够自己找到GNames并使用DUMP工具导出GNames了。

2.本篇文章将介绍各种所需数据的查找方法。

一、准备工作

1.CheatEngine,本篇以及后续篇幅的重要工具。

2.一个记事本,保证你能记录下关键信息。

二、代码分析/字符串关键词

a.代码分析/引用的字符串

1.首先,打开CE并附加游戏。

2.点击浏览内存/查看内存,或随便搜索一个数值选中后按下CTRL+B快捷键。

3.在浏览内存区域窗口中选择视图菜单->引用的字符串(快捷键CTRL+ALT+R)。

UE4逆向篇-2_各类数据的查找方式,UnrealEngine,ue4

4.如果没有打开过,会询问你是否分析代码,点击是,进行分析。

5.等待分析完成。

三.FNamePool

UE4逆向篇-2_各类数据的查找方式,UnrealEngine,ue4

1.代码分析完成后,按下CTRL+F键打开查找窗口,输入 Duplicated 进行查找。 

2.笔者这里搜索到了一个名为:DuplicatedHardcodedName 的字符串。

3.选中搜索到的字符串,在窗口右边有一个地址,双击它:

UE4逆向篇-2_各类数据的查找方式,UnrealEngine,ue4

来到了汇编窗口: 

UE4逆向篇-2_各类数据的查找方式,UnrealEngine,ue4

4.现在,在当前位置(蓝色) 按下鼠标右键,选中当前函数:

UE4逆向篇-2_各类数据的查找方式,UnrealEngine,ue4

UE4逆向篇-2_各类数据的查找方式,UnrealEngine,ue4

5.这样,整个函数就被选中了,现在往上翻到函数顶部双击调用:

UE4逆向篇-2_各类数据的查找方式,UnrealEngine,ue4

来到此处:

UE4逆向篇-2_各类数据的查找方式,UnrealEngine,ue4

现在,注意当前位置(CALL)的上一行,将它的地址拿出来:

UE4逆向篇-2_各类数据的查找方式,UnrealEngine,ue4

扔到数据结构分析器中看一看:

UE4逆向篇-2_各类数据的查找方式,UnrealEngine,ue4

非常规律,那么这大概率就是我们需要的东西了。

1.记录地址并设置特征码

UE4逆向篇-2_各类数据的查找方式,UnrealEngine,ue4

1.选中一行后按住shift键点击要批量选中的位置,然后右键复制到剪贴板(字节+操作码) 。

2.别忘了把之前的地址也一块记录下来。

UE4逆向篇-2_各类数据的查找方式,UnrealEngine,ue4

=====FNamePool=====
字符串关键词:Duplicated、DuplicatedHardcodedName
7FF77C04C600
GameBase + D20C600 -> Current FNamePool Addr.
48 8D 0D ?? ?? ?? ?? E8 ?? ?? ?? ?? 48 8B D8 C6 05 ?? ?? ?? ?? 01 0F 28 ?? ?? ?? -> Init FNamePool Signature.

DeadByDaylight-Win64-Shipping.exe+396458B - 48 8D 0D 6E808A09     - lea rcx,[DeadByDaylight-Win64-Shipping.exe+D20C600]
DeadByDaylight-Win64-Shipping.exe+3964592 - E8 C9D64702           - call DeadByDaylight-Win64-Shipping.exe+5DE1C60
DeadByDaylight-Win64-Shipping.exe+3964597 - 48 8B D8              - mov rbx,rax
DeadByDaylight-Win64-Shipping.exe+396459A - C6 05 57808A09 01     - mov byte ptr [DeadByDaylight-Win64-Shipping.exe+D20C5F8],01
DeadByDaylight-Win64-Shipping.exe+39645A1 - 0F28 44 24 20         - movaps xmm0,[rsp+20]

3.需要注意的是,特征码需要将操作码中会变动的内容以??代替。

4.尝试使用CE搜索特征码:

UE4逆向篇-2_各类数据的查找方式,UnrealEngine,ue4

出来了4个地址,依次加入地址列表:

UE4逆向篇-2_各类数据的查找方式,UnrealEngine,ue4

5.需要注意的是加入地址列表后需要编辑地址,将其地址后面+3(因为特征码前面3个字节我们是不需要的,只需要看里面的地址),并修改类型为4字节。

6.结果如下:

UE4逆向篇-2_各类数据的查找方式,UnrealEngine,ue4

7. 使用FNamePool Addr:

NamePool = (FNamePool*)(game_base + 0x0D20C600);

四、FUObjectArray

1.同样的,与查找FNamePool一样的方法。

2.关键词:ShowPendingKills,查找后出现结果:

UE4逆向篇-2_各类数据的查找方式,UnrealEngine,ue4

出现了2个地址,可以依次尝试,双击第一个地址后来到此处:

UE4逆向篇-2_各类数据的查找方式,UnrealEngine,ue4

3. 这时候,我们要向下翻:

UE4逆向篇-2_各类数据的查找方式,UnrealEngine,ue4

1.记录地址并设置特征码

1.同样的,记录下它的地址以及操作码等信息:

UE4逆向篇-2_各类数据的查找方式,UnrealEngine,ue4

UE4逆向篇-2_各类数据的查找方式,UnrealEngine,ue4

2.使用CE搜索特征码看看:

UE4逆向篇-2_各类数据的查找方式,UnrealEngine,ue4

UE4逆向篇-2_各类数据的查找方式,UnrealEngine,ue4

=====FUObjectArray=====
字符串关键词:ShowPendingKills
7FF77C0A4C30
GameBase + D264C30 -> Current GObjects Addr.
48 8B 0D ?? ?? ?? ?? 48 98 4C 8B 04 D1 -> GObject Signature.

DeadByDaylight-Win64-Shipping.exe+7B550C0 - 48 8B 0D 69FB7005     - mov rcx,[DeadByDaylight-Win64-Shipping.exe+D264C30]
DeadByDaylight-Win64-Shipping.exe+7B550C7 - 48 98                 - cdqe 
DeadByDaylight-Win64-Shipping.exe+7B550C9 - 4C 8B 04 D1           - mov r8,[rcx+rdx*8]

3. 使用FUObjectArray Addr:

ObjectArray = (TUObjectArray*)(game_base + 0x0D264C30);

五、PostRender

1.这个东西其实就是引擎自身的绘制。

2.关键词:LoadingMessage,相似的流程:

UE4逆向篇-2_各类数据的查找方式,UnrealEngine,ue4

双击地址来到此处: 

UE4逆向篇-2_各类数据的查找方式,UnrealEngine,ue4

选中整个函数:

UE4逆向篇-2_各类数据的查找方式,UnrealEngine,ue4

3.来到头部以后,下一个断点等待断下:

UE4逆向篇-2_各类数据的查找方式,UnrealEngine,ue4

UE4逆向篇-2_各类数据的查找方式,UnrealEngine,ue4

4.游戏断下后,注意右下角堆栈窗口,选择第一个双击过去:

UE4逆向篇-2_各类数据的查找方式,UnrealEngine,ue4

跳过去后,注意上面一行:

UE4逆向篇-2_各类数据的查找方式,UnrealEngine,ue4UE4逆向篇-2_各类数据的查找方式,UnrealEngine,ue4

5.这个偏移就是我们需要的东西了,记录下来并计算一下:

UE4逆向篇-2_各类数据的查找方式,UnrealEngine,ue46.需要注意,这里是16进制。同时因为8字节的关系所以除以0x08而不是0x04。

7.得到了0x65:

=====PostRender=====
字符串关键词:LoadingMessage

DeadByDaylight-Win64-Shipping.exe+7B4B782 - FF 90 28030000        - call qword ptr [rax+00000328] -> Call PostRender.
0x328 / 0x08 = 0x65

int post_render_index = 0x65;

六、ProcessEvent

1.关键词:bad or,操作流程大同小异:

UE4逆向篇-2_各类数据的查找方式,UnrealEngine,ue4

UE4逆向篇-2_各类数据的查找方式,UnrealEngine,ue4

当然,这次需要往上翻,翻到哪里呢?

找红框中类似的汇编指令,向上找8次就差不多了:

UE4逆向篇-2_各类数据的查找方式,UnrealEngine,ue4

第一次:

UE4逆向篇-2_各类数据的查找方式,UnrealEngine,ue4

第二次:

UE4逆向篇-2_各类数据的查找方式,UnrealEngine,ue4

第三次:

UE4逆向篇-2_各类数据的查找方式,UnrealEngine,ue4

第四次:

UE4逆向篇-2_各类数据的查找方式,UnrealEngine,ue4

第五次:

UE4逆向篇-2_各类数据的查找方式,UnrealEngine,ue4

第六次:

UE4逆向篇-2_各类数据的查找方式,UnrealEngine,ue4

第七次:

UE4逆向篇-2_各类数据的查找方式,UnrealEngine,ue4

第八次:

UE4逆向篇-2_各类数据的查找方式,UnrealEngine,ue4

UE4逆向篇-2_各类数据的查找方式,UnrealEngine,ue4

这就找到了,同样的,记录下来计算:

UE4逆向篇-2_各类数据的查找方式,UnrealEngine,ue4

得到结果为0x44。

int process_event_index = 0x44;

 =====ProcessEvent=====
字符串关键词:bad or

DeadByDaylight-Win64-Shipping.exe+5FEE840 - FF 90 20020000        - call qword ptr [rax+00000220] -> Process Event Vtable Offset.
0x220 / 0x08 = 0x44

七、UWorld

//Init World
world = *(UWorld**)(game_base + 0x00000000); //未知的World偏移

1.首先需要下载游戏对应版本的UE4源代码,怎么下载在前文中有稍微提及,具体可以查看EPIC官网。

2.使用IDA+源码的方式找到UWorld。

3.由于篇幅限制,此处不再过多解释。文章来源地址https://www.toymoban.com/news/detail-743220.html

到了这里,关于UE4逆向篇-2_各类数据的查找方式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • UE4 几种常见的项目优化方式

    当屏幕某一块像素被多盏灯光所影响,那么也会拖慢帧率,可以打开灯光复杂度视图进行查看,屏幕上越红的地方灯光复杂度越高,尝试降低灯光半径可以解决: 有时候我们并不知道目标模型的材质应该使用多大尺寸的贴图,对远处物体赋予过大尺寸的贴图会造成带宽的浪费

    2024年02月13日
    浏览(30)
  • UE4 -使用快捷方式添加命令行参数启动项目

    命令行参数(Command-Line Arguments) 是各类称之为的字符串,当运行可执行文件时可以通过命令行或者可执行文件的快捷方式将其传入。它们的目的是自定义引擎运行的方式,以便符合开发人员或用户的需要。这可以像使得运行编辑器而不运行游戏那么简单;或它也可以更

    2024年02月07日
    浏览(36)
  • UE4两种点击空间UI弹窗的方式

    1、要实现点击,必须要给鼠标左键或者右键写发射射线的程序,如下   2、在关卡蓝图中,最好设置一下鼠标可见。  2、UI加一个按钮,并设计On Clicked事件 对应的响应如下,这是第一种 3、第二种如下    

    2024年02月14日
    浏览(81)
  • [Carla/UE4]树木阴影闪烁问题及阴影出现黄色代码问题解决方式

    在使用Carla官方库和一些网上下载的UE4树木、植物时会发现运行后树叶上的阴影在闪烁、移动。 ----------》 放大了看还会发现阴影里出现这样的报错提示:Your scene contains a skydome mesh with a sky material but it does not cover that part of the screen。 这个警告信息通常会出现在UE里面天空球不

    2024年01月21日
    浏览(36)
  • UE4/5中DataTable数据表的使用

    我们在UE中经常要对配置数据进行编辑,用好UE自己的DataTable自然对日常使用有所帮助。 使用数据表首先得创建自定义结构体,这样才好定义每一行的格式,例如这里创建如下: 然后右键选择创建DataTable,对应结构体选择之前创建的: 接下里需要在蓝图中访问DataTable获取对应

    2024年02月16日
    浏览(34)
  • UE4元数据关键字的应用与含义(二)

    除了元数据之外,UE4还有一些其他的和修饰符,如下: UFUNCTION:表示该函数可以被蓝图调用。常用于定义蓝图函数。 UCLASS:表示该类可以被蓝图使用。常用于定义蓝图类。 UPROPERTY:表示该变量可以被蓝图编辑器编辑。常用于定义蓝图变量。 const:表示该变量是

    2024年02月02日
    浏览(19)
  • UE4元数据关键字的应用与含义(一)

    以下是UE4中用于定义蓝图变量的元数据(metadata)的所有及其解释和作用: BlueprintReadOnly:表示该变量只能在蓝图中进行读取操作,不能在蓝图中进行写入操作。常用于定义只读变量。 BlueprintReadWrite:表示该变量可以在蓝图编辑器中进行读写操作,包括在实例化蓝图时

    2024年02月10日
    浏览(29)
  • UE4使用GameInstance设置全局变量(不同关卡、类之间数据传递)

    一、GameInstance是什么? (UE4官方)是一个正在运行的游戏的 高级别的管理对象 ,在游戏创建时生成,游戏实例关闭时销毁,一个游戏中可以有多个GameInstance; 在游戏中切换关卡,GameInstance不会销毁(切换关卡时可用GameInstance携带信息); 二、GameInstance有什么作用? 在多关

    2024年02月02日
    浏览(38)
  • UE4使用VaRest插件请求httpAPI以及解析json格式数据

    1.在虚幻商城中下载并安装VaRest插件 2.在UE编辑器中启用插件并重启 3.请求示例 变量的类型:VaRestJsonObject 当然也可以不保存为变量,直接在后面继续逻辑处理 json对象信息获取       

    2024年02月13日
    浏览(31)
  • 【UE4】UE4蓝图 文本自动换行

    该方法将字符串分割成同等长度的数组及换行后字符串 使用示例 结果 获得字符串 蓝图代码:复制以下内容并直接粘贴到蓝图中 宏代码 使用示例 结果 获得数组 代码:复制以下内容并直接粘贴到蓝图中 宏代码 同时输出两种结果 同时输出函数蓝图 宏蓝图 内容详情: 使用示例

    2024年02月16日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包