UE4逆向篇-2_各类数据的查找方式
写在前面
1.通过前面的文章,相信各位已经能够自己找到GNames并使用DUMP工具导出GNames了。
2.本篇文章将介绍各种所需数据的查找方法。
一、准备工作
1.CheatEngine,本篇以及后续篇幅的重要工具。
2.一个记事本,保证你能记录下关键信息。
二、代码分析/字符串关键词
a.代码分析/引用的字符串
1.首先,打开CE并附加游戏。
2.点击浏览内存/查看内存,或随便搜索一个数值选中后按下CTRL+B快捷键。
3.在浏览内存区域窗口中选择视图菜单->引用的字符串(快捷键CTRL+ALT+R)。

4.如果没有打开过,会询问你是否分析代码,点击是,进行分析。
5.等待分析完成。
三.FNamePool

1.代码分析完成后,按下CTRL+F键打开查找窗口,输入 Duplicated 进行查找。
2.笔者这里搜索到了一个名为:DuplicatedHardcodedName 的字符串。
3.选中搜索到的字符串,在窗口右边有一个地址,双击它:

来到了汇编窗口:

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


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

来到此处:

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

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

非常规律,那么这大概率就是我们需要的东西了。
1.记录地址并设置特征码

1.选中一行后按住shift键点击要批量选中的位置,然后右键复制到剪贴板(字节+操作码) 。
2.别忘了把之前的地址也一块记录下来。
=====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搜索特征码:

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

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

7. 使用FNamePool Addr:
NamePool = (FNamePool*)(game_base + 0x0D20C600);
四、FUObjectArray
1.同样的,与查找FNamePool一样的方法。
2.关键词:ShowPendingKills,查找后出现结果:

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

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

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


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

=====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,相似的流程:

双击地址来到此处:

选中整个函数:

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


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

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


5.这个偏移就是我们需要的东西了,记录下来并计算一下:
6.需要注意,这里是16进制。同时因为8字节的关系所以除以0x08而不是0x04。
7.得到了0x65:
=====PostRender=====
字符串关键词:LoadingMessageDeadByDaylight-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,操作流程大同小异:


当然,这次需要往上翻,翻到哪里呢?
找红框中类似的汇编指令,向上找8次就差不多了:

第一次:

第二次:

第三次:

第四次:

第五次:

第六次:

第七次:

第八次:


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

得到结果为0x44。
int process_event_index = 0x44;
=====ProcessEvent=====
字符串关键词:bad orDeadByDaylight-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.由于篇幅限制,此处不再过多解释。
相关文章:
UE4逆向篇-2_各类数据的查找方式
写在前面 1.通过前面的文章,相信各位已经能够自己找到GNames并使用DUMP工具导出GNames了。 2.本篇文章将介绍各种所需数据的查找方法。 一、准备工作 1.CheatEngine,本篇以及后续篇幅的重要工具。 2.一个记事本,保证你能记录下关键信息。…...
JDBC-day07(Apache-DBUtils实现CRUD操作)
九:Apache-DBUtils实现CRUD操作 1 Apache-DBUtils简介 Apache-DbUtils 是 Apache 组织提供的开源 JDBC工具类库,它是对JDBC的简单封装,学习成本极低,并且使用DbUtils能极大简化JDBC编码的工作量,同时也不会影响程序的…...
零代码编程:用ChatGPT多线程批量将PDF文档转换为word格式
pdf2docx是Python的一个库,可以很方便的将PDF文档转换为word格式,首先安装这个库。 然后在ChatGPT中输入提示词: 你是一个Python编程专家,要完成一个文档格式转换的任务,具体步骤如下: 打开F盘的Books文件…...
codeshell安装配置
codeshell安装配置 1 注意事项1.1 Python版本问题 2 codeshell环境搭建2.1 codeshell使用软件各版本2.2 软件下载2.3 codeshell使用环境安装2.3.1 python-3.10.9-amd64.exe安装2.3.2 Anaconda3-2022.10-Windows-x86_64.exe安装2.3.3 创建环境2.3.4 Pytorch安装2.3.5 transforme…...
mfc140u.dll丢失的详细解决方法,最详细修复mfc140u.dll丢失的办法分享
在计算机技术日益发展的今天,我们不可避免地会遇到各种各样的技术问题。其中,“MFC140U.DLL丢失”是一个常见的错误,它可能会影响我们的电脑性能和软件运行。本文将详细介绍四种解决“MFC140U.DLL丢失”问题的方法。 首先,我们需…...
CMake
文章目录 前言一、快速开始编译C/C代码1. 只有源码的项目2. 包含库的项目3. 编译成库给他人使用使用cmake的流程1. 生成构建系统2. 执行构建3. 执行测试4. 安装 && 打包 二、cmake 语法简介1 变量2 条件语句3 脚本命令**消息打印****if-else**:**list命令**:…...
互联网Java工程师面试题·Spring篇·第二弹
目录 3、Beans 3.1、什么是 spring bean? 3.2、spring 提供了哪些配置方式? 3.3、spring 支持集中 bean scope? 3.4、spring bean 容器的生命周期是什么样的? 3.5、什么是 spring 的内部 bean? 3.6、什么是 spri…...
AM@两种余项型泰勒公式的对比和总结@常用函数的麦克劳林公式
文章目录 abstract两种余项型泰勒公式的对比和总结Maclaurin公式常用函数的Maclaurin公式推导例求极限按幂展开 abstract 泰勒公式的两种余项型(Penao&Lagrange)泰勒公式的对比和总结常用的Maclaurin公式列举(Peano余项型为主) 两种余项型泰勒公式的对比和总结 Taylor公式…...
Django实现音乐网站 (22)
使用Python Django框架做一个音乐网站, 本篇音乐播放器功能完善:顺序播放、设置播放数、歌词滚动等功能。 目录 顺序播放 设置顺序播放 单曲播放数 添加路由 视图处理 模板处理 歌词滚动 视图内容返回修改 样式设置 模板内容 歌词滚动脚本 歌…...
pnpm ERR_PNPM_ADDING_TO_ROOT
ERR_PNPM_ADDING_TO_ROOT Running this command will add the dependency to the workspace root, which might not be what you want - if you really meant it, make it explicit by running this command again with the -w flag (or --workspace-root). If you don’t wa…...
统计学习方法 拉格朗日对偶性
文章目录 统计学习方法 拉格朗日对偶性原始问题对偶问题原始问题和对偶问题的关系 统计学习方法 拉格朗日对偶性 读李航的《统计学习方法》时,关于拉格朗日对偶性的笔记。 在许多统计学习的约束最优化问题中,例如最大熵模型和支持向量机,常…...
.rancher-pipeline.yml
一、注意点 其实下文二的image是基于这个镜像作为基础镜像在这个镜像中执行打包,shellScript 当前路径是你代码块与上图settings.xml,图中的settings.xml可以替换下你当前镜像的settings.xml 示例 二、.rancher-pipeline.yml ${CICD_GIT_BRANCH}这些从官…...
RK3588平台开发系列讲解(显示篇)MIPI DSI协议介绍之分层
🚀返回专栏总目录 文章目录 一、MIPI DSI 分层1.1、应用层1.2、协议层1.3、链路层1.4、物理层沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 DSI 全称是 Display Serial Interface,是主控和显示模组之间的串行连接接口。 MIPI DSI 接口分为数据线和时钟线,均为…...
前端学成在线项目详细解析三
19-推荐课程-内容样式 HTML结构 <ul><li><a href"#"><div class"pic"><img src"./uploads/course01.png" alt""></div><div class"text"><h4>JavaScript数据看板项目实战…...
使用Kali进行实验---主机发现
主机发现 【实训目的】 掌握主机扫描的工作原理,学会使用ping等扫描工具,发现网络当中活跃的主机。 【场景描述】 在虚拟机环境下配置4个虚拟系统“Win XP1” “Win XP2” “Kali Linux”和“Metasploitable2”,使得4个系统之间能够相互通…...
美团笔试真题2023第一场(4题)
点评: 题目总体来说偏向于中下难度 1.字符串前缀 题目描述: 现在有两个字符串S和T,你需要对S进行若干次操作,使得S是T的一个前缀(空串也是一个前缀)。每次操作可以修改S的一个字符,或者删除一个…...
PHP explode (多)分隔符(delimiters) 使用
PHP explode (多)分隔符(delimiters) 使用 问题:[https://blog.csdn.net/YBaog?typeblog] 把链接中所有的字符串取出。 ㊙️ 神秘算法 ㊙️ function multi_explode($delimiters, $string) {$data [];if ($string) {$str str_replace($delimiters, $delimiter…...
AI的Prompt是什么
一.AI的Prompt的作用 在人工智能(AI)中,"Prompt"通常指的是向AI系统提供的输入或指令,用于引导AI进行特定的操作或生成特定的输出。例如,在一个对话型AI系统中,用户输入的问题就是一个prompt&…...
Qt之自定义model读写CSV文件
一.效果 本文基于QAbstractTableModel实现了一个支持读写CSV文件的TableModel。CSV数据格式虽然很简单,但是网上大多数读写方式其实都是有bug的,没考虑到字段里包含逗号或换行符这种复杂数据的情况。 二.原理 CSV(Comma-Separated Values)文件是一种简单类型的纯文本文件…...
golang 工程组件:grpc-gateway 环境安装+默认网关测试
grpc-gateway grpc-gateway 顾名思义是专门是grpc的网关。也是一个protobuf的编译器,是一个proto的插件。 grpc-gateway就是将http请求处理后转发到对应grpc服务上。很多浏览器,或者客户端开箱不支持grpc,只支持传统的restful API。 grpc网关…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...
2021-03-15 iview一些问题
1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...
解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错
出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上,所以报错,到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本,cu、torch、cp 的版本一定要对…...
关键领域软件测试的突围之路:如何破解安全与效率的平衡难题
在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件,这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下,实现高效测试与快速迭代?这一命题正考验着…...
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列,以便知晓哪些列包含有价值的数据,…...
以光量子为例,详解量子获取方式
光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学(silicon photonics)的光波导(optical waveguide)芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中,光既是波又是粒子。光子本…...
Mysql中select查询语句的执行过程
目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析(Parser) 2.4、执行sql 1. 预处理(Preprocessor) 2. 查询优化器(Optimizer) 3. 执行器…...
Bean 作用域有哪些?如何答出技术深度?
导语: Spring 面试绕不开 Bean 的作用域问题,这是面试官考察候选人对 Spring 框架理解深度的常见方式。本文将围绕“Spring 中的 Bean 作用域”展开,结合典型面试题及实战场景,帮你厘清重点,打破模板式回答,…...
Linux安全加固:从攻防视角构建系统免疫
Linux安全加固:从攻防视角构建系统免疫 构建坚不可摧的数字堡垒 引言:攻防对抗的新纪元 在日益复杂的网络威胁环境中,Linux系统安全已从被动防御转向主动免疫。2023年全球网络安全报告显示,高级持续性威胁(APT)攻击同比增长65%,平均入侵停留时间缩短至48小时。本章将从…...
前端工具库lodash与lodash-es区别详解
lodash 和 lodash-es 是同一工具库的两个不同版本,核心功能完全一致,主要区别在于模块化格式和优化方式,适合不同的开发环境。以下是详细对比: 1. 模块化格式 lodash 使用 CommonJS 模块格式(require/module.exports&a…...


