当前位置: 首页 > news >正文

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=====
字符串关键词: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,操作流程大同小异:

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

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

第一次:

第二次:

第三次:

第四次:

第五次:

第六次:

第七次:

第八次:

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

得到结果为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.由于篇幅限制,此处不再过多解释。

相关文章:

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命令**&#xff1a…...

互联网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进行实验---主机发现

主机发现 【实训目的】 掌握主机扫描的工作原理&#xff0c;学会使用ping等扫描工具&#xff0c;发现网络当中活跃的主机。 【场景描述】 在虚拟机环境下配置4个虚拟系统“Win XP1” “Win XP2” “Kali Linux”和“Metasploitable2”&#xff0c;使得4个系统之间能够相互通…...

美团笔试真题2023第一场(4题)

点评&#xff1a; 题目总体来说偏向于中下难度 1.字符串前缀 题目描述&#xff1a; 现在有两个字符串S和T&#xff0c;你需要对S进行若干次操作&#xff0c;使得S是T的一个前缀&#xff08;空串也是一个前缀&#xff09;。每次操作可以修改S的一个字符&#xff0c;或者删除一个…...

PHP explode (多)分隔符(delimiters) 使用

PHP explode (多)分隔符(delimiters) 使用 问题&#xff1a;[https://blog.csdn.net/YBaog?typeblog] 把链接中所有的字符串取出。 ㊙️ 神秘算法 ㊙️ function multi_explode($delimiters, $string) {$data [];if ($string) {$str str_replace($delimiters, $delimiter…...

AI的Prompt是什么

一.AI的Prompt的作用 在人工智能&#xff08;AI&#xff09;中&#xff0c;"Prompt"通常指的是向AI系统提供的输入或指令&#xff0c;用于引导AI进行特定的操作或生成特定的输出。例如&#xff0c;在一个对话型AI系统中&#xff0c;用户输入的问题就是一个prompt&…...

Qt之自定义model读写CSV文件

一.效果 本文基于QAbstractTableModel实现了一个支持读写CSV文件的TableModel。CSV数据格式虽然很简单,但是网上大多数读写方式其实都是有bug的,没考虑到字段里包含逗号或换行符这种复杂数据的情况。 二.原理 CSV(Comma-Separated Values)文件是一种简单类型的纯文本文件…...

golang 工程组件:grpc-gateway 环境安装+默认网关测试

grpc-gateway grpc-gateway 顾名思义是专门是grpc的网关。也是一个protobuf的编译器&#xff0c;是一个proto的插件。 grpc-gateway就是将http请求处理后转发到对应grpc服务上。很多浏览器&#xff0c;或者客户端开箱不支持grpc&#xff0c;只支持传统的restful API。 grpc网关…...

【Linux】shell脚本忽略错误继续执行

在 shell 脚本中&#xff0c;可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行&#xff0c;可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令&#xff0c;并忽略错误 rm somefile…...

无法与IP建立连接,未能下载VSCode服务器

如题&#xff0c;在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈&#xff0c;发现是VSCode版本自动更新惹的祸&#xff01;&#xff01;&#xff01; 在VSCode的帮助->关于这里发现前几天VSCode自动更新了&#xff0c;我的版本号变成了1.100.3 才导致了远程连接出…...

YSYX学习记录(八)

C语言&#xff0c;练习0&#xff1a; 先创建一个文件夹&#xff0c;我用的是物理机&#xff1a; 安装build-essential 练习1&#xff1a; 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件&#xff0c;随机修改或删除一部分&#xff0c;之后…...

2024年赣州旅游投资集团社会招聘笔试真

2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...

【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力

引言&#xff1a; 在人工智能快速发展的浪潮中&#xff0c;快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型&#xff08;LLM&#xff09;。该模型代表着该领域的重大突破&#xff0c;通过独特方式融合思考与非思考…...

android13 app的触摸问题定位分析流程

一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...

vue3 daterange正则踩坑

<el-form-item label"空置时间" prop"vacantTime"> <el-date-picker v-model"form.vacantTime" type"daterange" start-placeholder"开始日期" end-placeholder"结束日期" clearable :editable"fal…...

沙箱虚拟化技术虚拟机容器之间的关系详解

问题 沙箱、虚拟化、容器三者分开一一介绍的话我知道他们各自都是什么东西&#xff0c;但是如果把三者放在一起&#xff0c;它们之间到底什么关系&#xff1f;又有什么联系呢&#xff1f;我不是很明白&#xff01;&#xff01;&#xff01; 就比如说&#xff1a; 沙箱&#…...

WEB3全栈开发——面试专业技能点P7前端与链上集成

一、Next.js技术栈 ✅ 概念介绍 Next.js 是一个基于 React 的 服务端渲染&#xff08;SSR&#xff09;与静态网站生成&#xff08;SSG&#xff09; 框架&#xff0c;由 Vercel 开发。它简化了构建生产级 React 应用的过程&#xff0c;并内置了很多特性&#xff1a; ✅ 文件系…...

【若依】框架项目部署笔记

参考【SpringBoot】【Vue】项目部署_no main manifest attribute, in springboot-0.0.1-sn-CSDN博客 多一个redis安装 准备工作&#xff1a; 压缩包下载&#xff1a;http://download.redis.io/releases 1. 上传压缩包&#xff0c;并进入压缩包所在目录&#xff0c;解压到目标…...