13.第二阶段x64游戏实战-分析人物等级和升级经验

news2025/4/20 22:53:12

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动!

本次游戏没法给

内容参考于:微尘网络安全

上一个内容:12.第二阶段x64游戏实战-远程调试

效果图:

如下图红框,之前的代码里有等级、经验、升级所需要的经验,这些数据之前没有分析过,现在开始分析

当前经验和等级的找法一样,升级所需的经验不一样,然后升级所需要的经验是计算出来的东西,所以这里就不找当前经验了,这里只提一下怎么找,就是在人物信息面板找当前经验是多少,然后使用CE去搜,然后打个怪然后再看看人物信息面板的当前经验是多少,然后使用CE中的再次扫描去找,不断重复这个步骤就能找到当前经验了

然后是等级,首先创建一个新账号,新账号默认等级是1级

然后搜索1,这里要注意,有的游戏切换地图后内存地址会变化,也就是说在A地图搜索出来的1到了B地图就没用了,需要重新搜索

然后领取任务,多升几级,再使用CE的再次扫描,升到了2级再次扫描

还剩2千多

升到了3级再次扫描

扫描之后还有3个,可以手动改了

双击下图红框位置

然后输入一个等级然后点确定

修改完重新打开人物信息面板查看等级,最终确定下图红框的是人物等级(原本人物等级是3通过手动修改内存地址的值变成了7)

然后找出是什么访问了这个地址

如下图红框0x6C就是这样找到的

然后通过手动修改等级可以发现,升级所需要的经验也随着等级的变化而变化了,然后重新打开人物信息面板,可以发现多处了三个访问,但是其中有一个是访问了5次,但是面板只打开了1次可以直接把5次的过滤了,然后这里就有一件事等级访问的很频繁使用x64dbg的硬件断点肯定是无法找到下图红框的位置的,所以就要手动把下图红框的内存地址记录下来 7FF740C7DA8B - 8B 50 6C - mov edx,[rax+6C],记录下来之后,关闭 找出是什么访问了这个地址 窗口,然后CE重新附加游戏,如果不这样做x64dbg就没法附加了

CTRL+G跳转到代码

开始分析 mov edx,dword ptr ds:[rax+6C] 访问了等级,然后下面有一个call,call的下面有一句test rax,rax这说明这个call有返回值,先使用断点查看返回值

如下图红框可以发现我们的等级和经验(返回值+0x4位置是升级所需要的经验),这说明 经验的计算就在 call qword ptr ds:[r8+8] 中

然后进入 call qword ptr ds:[r8+8],首先断点住下图红框位置

取消断点

然后再按F7就进入到下图位置

下图红框位置有一个无条件跳转,一路F8

然后就jmp跳转到了,下图位置

然后我们知道返回值是rax,所以找rax在哪返回的,所以一路按F8,然后发现下图红框的循环

一直按F8,最终发现它从下图红框位置跳到了下图绿框位置

然后发现下图红框位置还有一个call,然后需要看看它有没有返回值,也就是看rax的值变不变

断点当前RAX的值

按F8之后的值,可以看到RAX的值没有变说明这个call没有返回值

rax的值就来自于 00007FF740F1ABA4 这里,也就是下图红框位置

然后在下图红框位置可以看到 xor eax,eax,这里把eax进行了清零,xor eax,eax实际上就是mov eax,0x0这样的代码,我们的rax是有值的,所以不可能是下图红框的位置,所以它也可以直接排除掉

通过上方的步骤就确定rax来自于rcx,也就是下图红框的位置

然后接下来就找rcx的值哪来的,rcx的值来自于下图红框位置,获取的是数组中的值,r11的值是数组的头部

然后查看r11的数据,通过数据很明显的可以看出r11是一个数组,因为它数据长相都差不多,这里要注意,一定要确保下图红框的断点是通过查看人物信息面板触发来的,如果别的地方触发的可能r11的地址不一样

然后查看数组中第一个数据可以看到1级升级到2级需要90经验

7级升级所需要的经验是1980,这都跟游戏中人物信息面板对的上

所以现在就找到了人物升级所需要的经验,然后接下来找r11的值哪来的,如下图红框可以看到r11的值来自于[rcx+0x58]

然后rcx的值来自于上一层

然后rcx的值来自于rcx+0x8,现在的公式[[rcx+0x8]+0x58]

再往上rcx的值来自于基址了,现在的公式[[[0x00007FF74143FB10]+0x8]+0x58],然后升级所需要的经验的公式

[[[[0x00007FF74143FB10]+0x8]+0x58]+(等级-1)*0x8]+0x4

人物所需经验数据偏移 93FB10

然后查看数组的大小,如下图红框再往后的数据就与前面的数据差异很大了所以数组的大小是0x988字节,转成数组数据个数是0x988除以8

然后发现下图红框以上是人物经验,下面是其它的经验(未知可能是宠物啥的,现在不知道它是谁的经验,也没法找)

0x988除以0x8的结果是0x131,转成十进制是305,这游戏最高等级是150

然后4A8,从0开始,0-149正好150个数字

获取升级所需要经验的代码


img

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2339046.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

六边形棋盘格(Hexagonal Grids)的坐标

1. 二位坐标转六边形棋盘的方式 1-1这是“波动式”的 这种就是把【方格子坐标】“左右各错开半个格子”做到的 具体来说有如下几种情况 具体到庙算平台上,是很巧妙的用一个4位整数,前两位为x、后两位为y来进行表示 附上计算距离的代码 def get_hex_di…

SICAR 标准 安全门锁操作箱 按钮和指示灯说明

1、安全门锁操作箱 2、按钮和指示灯说明 一、指示灯说明 红灯: 常亮:表示安全门已解锁;闪烁:表示安全门未复位;熄灭:表示安全门已复位。 黄灯: 常亮:表示处于维修模式。 绿灯&…

Day10【基于encoder- decoder架构实现新闻文本摘要的提取】

实现新闻文本摘要的提取 1. 概述与背景2.参数配置3.数据准备4.数据加载5.主程序6.预测评估7.生成效果8.总结 1. 概述与背景 新闻摘要生成是自然语言处理(NLP)中的一个重要任务,其目标是自动从长篇的新闻文章中提取出简洁、准确的摘要。近年来…

【blender小技巧】使用blender的Cats Blender Plugin插件将3D人物模型快速绑定或者修复为标准的人形骨骼

文章目录 前言绑定或者修复人形骨骼1、下载模型2、导入模型到blender中3、删除无用的相机和灯光3、导出模型并在unity中使用 专栏推荐完结 前言 有时候我们下载的3D人物模型,可能不带骨骼信息,或者带一些错乱的骨骼信息。这时候我们就可以使用blender将…

Linux——firewalld防火墙(笔记)

目录 一:Firewalld防火墙的概述 (1)firewalld简介 (2)firewalld&iptables的关系 (3)firewalld与iptables service的区别 1. ‌规则管理方式‌ 2. ‌默认策略与设计逻辑‌ 3. ‌配置文…

YOLO拓展-锚框(anchor box)详解

一.锚框(anchor box)概述 1.1什么是锚框 锚框就是一种进行预测的像素框,通过遍历输入图像上所有可能的像素框,然后选出正确的目标框,并对位置和大小进行调整就可以完成目标检测任务。 对于yolo锚框的建设须基于实际…

kubernetes》》k8s》》Service

Kubernetes 中的 Service 是用于暴露应用服务的核心抽象,为 Pod 提供稳定的访问入口、负载均衡和服务发现机制。Service在Kubernetes中代表了一组Pod的逻辑集合,通过创建一个Service,可以为一组具有相同功能的容器应用提供一个统一的入口地址…

已注册商标如何防止被不使用撤销!

近年来已注册商标被撤销越来越多,不乏著名企业或机构,普推知产商标老杨看到前一阵看到央视和百度等申请的商标也被申请撤销,连续三年不使用撤销也是正常的商标流程。 已注册商标被撤销普推老杨看到案例主要是集中在一些早期申请注册的好记的商…

管理与维护samba服务器

允许 Linux、Unix 系统与 Windows 系统之间进行文件和打印机共享,使得不同操作系统的用户能够方便地访问和共享资源,就像在同一局域网中的 Windows 计算机之间共享资源一样。 server01安装Samba服务器 [rootserver ~]# rpm -qa | grep samba [rootserver…

EAGLE代码研读+模型复现

要对代码下手了,加油(ง •_•)ง 作者在他们自己的设备上展现了推理的评估结果,受第三方评估认证,EAGLE为目前最快的投机方法(虽然加速度是评估投机解码方法的主要指标,但其他点也值得关注。比如PLD和Lookahead无需额…

2024期刊综述论文 Knowledge Graphs and Semantic Web Tools in Cyber Threat Intelligence

发表在期刊Journal of Cybersecurity and Privacy上,专门讲知识图谱技术和语义Web工具在网络威胁情报领域的作用,还把本体和知识图谱放在相同的地位上讨论。 此处可以明确一点:本体和知识图谱都可以用于网络威胁情报的应用,当然也…

linux socket编程之udp(实现客户端和服务端消息的发送和接收)

目录 一.创建socket套接字(服务器端) 二.bind将prot与端口号进行绑定(服务器端) 2.1填充sockaddr_in结构 2.2bind绑定端口 三.直接通信(服务器端) 3.1接收客户端发送的消息 3.2给客户端发送消息 四.客户端通信 4.1创建socket套接字 4.2客户端bind问题 4.3直接通信即可…

计算机网络 实验四 静态路由的配置与应用

一、实验目的 掌握路由器基础工作原理及静态路由协议机制熟练使用华为ENSP网络模拟器进行拓扑设计与设备配置建立系统化的网络故障排除思维通过实践验证静态路由在中小型网络中的部署优势 二、实验环境 硬件配置:标准PC终端软件工具:华为企业网络模拟…

[每周一更]-(第140期):sync.Pool 使用详解:性能优化的利器

文章目录 一、什么是 sync.Pool?二、sync.Pool 的基本作用三、sync.Pool 的主要方法四、sync.Pool 的内部工作原理五、sync.Pool 适用场景六、使用示例示例 1:基本使用输出示例:示例 2:并发使用 七、一个基于 sync.Pool 的 **Benc…

3.QT-信号和槽|自定义槽函数|自定义信号}自定义的语法}带参数的信号和槽(C++)

信号和槽 Linux信号 Signal 系统内部的通知机制. 进程间通信的方式. 信号源:谁发的信号.信号的类型:哪种类别的信号信号的处理方式:注册信号处理函数,在信号被触发的时候自动调用执行. Qt中的信号和Linux中的信号,虽…

健康养生之道

在快节奏的现代生活中,健康养生不再是中老年人的专属话题,越来越多的人开始意识到,合理的养生方式是保持良好身体状态和生活质量的关键。​ 饮食养生是健康的基石。遵循 “食物多样、谷类为主” 的原则,保证每天摄入足够的蔬菜、…

Spark-SQL核心编程3

数据加载与保存 通用方式: SparkSQL 提供了通用的保存数据和数据加载的方式。这里的通用指的是使用相同的API,根据不同的参数读取和保存不同格式的数据,SparkSQL 默认读取和保存的文件格式为parquet 数据加载方法: spark.read.lo…

TVM计算图分割--Collage

1 背景 为满足高效部署的需要,整合大量优化的tensor代数库和运行时做为后端成为必要之举。现在的深度学习后端可以分为两类:1)算子库(operator kernel libraries),为每个DL算子单独提供高效地低阶kernel实现。这些库一般也支持算…

MCGS昆仑通太屏笔记

4.3寸:4013ef/e1 7寸:7032kw 特点: 如果是使用组态屏进行调试使用,选择com1如果是实际项目使用,选择com2 操作步骤: 先创建设备窗口,再创建用户界面 在设备窗口界面,依次设置如下…

服务治理-搭建Nacos注册中心

运行nacos.sql文件。 将准备好的nacos目录和nacos.tar包上传。 192.168.59.101是我的虚拟机ip,8848是我们设置的访问端口号。