13.第二阶段x64游戏实战-分析人物等级和升级经验
免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动!
本次游戏没法给
内容参考于:微尘网络安全
上一个内容: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个数字
获取升级所需要经验的代码
相关文章:
13.第二阶段x64游戏实战-分析人物等级和升级经验
免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 本次游戏没法给 内容参考于:微尘网络安全 上一个内容:12.第二阶段x64游戏实战-远程调试 效果图: 如下图红框,…...
Linux疑难杂惑 | 云服务器重装系统后vscode无法远程连接的问题
报错原因:本地的known_hosts文件记录服务器信息与现服务器的信息冲突了,导致连接失败。 解决方法:找到本地的known_hosts文件,把里面的所有东西删除后保存就好了。 该文件的路径可以在报错中寻找:比如我的路径就是&a…...
使用EXCEL绘制平滑曲线
播主播主,你都多少天没更新了!!!泥在干什么?你还做这个账号麻?!!! 做的做的(哭唧唧),就是最近有些忙,以及…… 前言&…...
你的电脑在开“外卖平台”?——作业管理全解析
你的电脑在开“外卖平台”?——作业管理全解析 操作系统系列文章导航(点击跳转) 程序员必看:揭开操作系统的神秘面纱 :从进程、内存到设备管理,全面解析操作系统的核心机制与日常应用。告别电脑卡顿&#x…...
平均池化(Average Pooling)
1. 定义与作用 平均池化是一种下采样操作,通过对输入区域的数值取平均值来压缩数据空间维度。其核心作用包括: 降低计算量:减少特征图尺寸,提升模型效率。保留整体特征:平滑局部…...
JavaScript中的Event事件对象详解
一、事件对象(Event)概述 1. 事件对象的定义 event 对象是浏览器自动生成的对象,当用户与页面进行交互时(如点击、键盘输入、鼠标移动等),事件触发时就会自动传递给事件处理函数。event 对象包含了与事件…...
OSPF综合实验(HCIP)
1,R5为ISP,其上只能配置Ip地址;R4作为企业边界路由器, 出口公网地址需要通过ppp协议获取,并进行chap认证 2,整个OSPF环境IP基于172.16.0.0/16划分; 3,所有设备均可访问R5的环回&…...
Unreal 从入门到精通之如何接入MQTT
文章目录 前言MQTT 核心特性MQTT 在 UE5 中的应用场景在 UE5 中集成 MQTTMqtt Client 的APIMqtt Client 使用示例最后前言 MQTT(Message Queuing Telemetry Transport)是一种专为物联网(IoT)和低带宽、高延迟网络环境设计的轻量级消息传输协议。它采用发布/订阅(Pub/Sub)…...
数据结构实验6.2:稀疏矩阵的基本运算
文章目录 一,实验目的二,问题描述三,基本要求四、算法分析(一)稀疏矩阵三元组表示法存储结构(二)插入算法(三)创建算法(四)输出算法(五…...
BDO分厂积极开展“五个一”安全活动
BDO分厂为规范化学习“五个一”活动主题,按照“上下联动、分头准备 、差异管理、资源共享”的原则,全面激活班组安全活动管理新模式,正在积极开展班组安全活动,以单元班组形式对每个班组每周组织一次“五个一”安全活动。 丁二醇单…...
那就聊一聊mysql的锁
MySQL 的锁机制是数据库并发控制的核心,作为 Java 架构师需要深入理解其实现原理和适用场景。以下是 MySQL 锁机制的详细解析: 一、锁的分类维度 1. 按锁粒度划分 锁粒度特点适用场景全局锁锁定整个数据库(FLUSH TABLES WITH READ LOC…...
Python番外——常用的包功能讲解和分类组合
目录 1. Web开发框架与工具 2. 数据处理与分析 3. 网络请求与爬虫 4. 异步编程 5. 数据库操作 6. 图像与多媒体处理 7. 语言模型与NLP 8. 安全与加密 9. 配置与工具 10. 其他工具库 11.典型组合场景 此章节主要是记录我所使用的包,以及模块。方便供自己方…...
【mongodb】数据库操作
目录 1. 查看所有数据库2. 切换到指定数据库(若数据库不存在,则创建)3. 查看当前使用的数据库4. 删除当前数据库5.默认数据库 1. 查看所有数据库 1.show dbs2.show databases 2. 切换到指定数据库(若数据库不存在,则…...
四月下旬系列
CUHKSZ 校赛 期中考试 DAY -1。 省流:前 1h 切 6 题,后 3h 过 1 题,读错一个本来很【】的题,被大模拟构造创【】了。 本地除了 VSCode 没有 Extensions,别的和省选差不多。使用 DEVC。 前 6 题难度 < 绿&#x…...
计算机网络 3-4 数据链路层(局域网)
4.1 局域网LAN 特点 1.覆盖较小的地理范围 2.较低的时延和误码率 3.局域网内的各节点之间 4.支持单播、广播、多播 分类 关注三要素 (出题点) ①拓扑结构 ②传输介质 ③介质访问控制方式 硬件架构 4.2 以太网 4.2.1 层次划分 4.2.2 物理层标准…...
WebSocket介绍
在网页聊天项目中,为了实现消息的发送和及时接收,我们使用了WebSocket,接下来就简单介绍一下这个WebSocket。 了解消息的转发逻辑 当两个不同客户端在不同的局域网中互相发送消息时,假如这两个客户端分别是a和b,因为…...
rpcrt4!COMMON_AddressManager函数分析之和全局变量rpcrt4!AddressList的关系
第一部分: 1: kd> x rpcrt4!addresslist 77c839dc RPCRT4!AddressList 0x00000000 1: kd> g Breakpoint 2 hit RPCRT4!OSF_ADDRESS::CompleteListen: 001b:77c0c973 55 push ebp 1: kd> g Breakpoint 11 hit RPCRT4!COMMON_Addr…...
Java Web 之 Tomcat 100问
Tomcat 是什么? Tomcat 是一个开源的 Java Servlet 容器和 Web 容器。 Tomcat 的主要功能有哪些? 三大主要功能: 运行 Java Web 应用。处理 HTTP 请求。管理 Web 应用。 如何安装 Tomcat ? 下载 Tomcat 安装包(A…...
ESB —— 企业集成架构的基石:功能、架构与应用全解析
企业服务总线(Enterprise Service Bus,ESB)是一种重要的企业级集成架构,以下为你详细介绍: 一、概念与定义 ESB 是一种基于面向服务架构(SOA)的中间件技术,它充当了企业内部不同应…...
wordpress SMTP配置qq邮箱发送邮件,新版QQ邮箱授权码获取方法
新版的QQ邮箱界面不同了,以下是新版的设置方法: 1. 进入邮箱后,点右上角的设置图标: 2. 左下角的菜单里,选择“账号与安全” : 3. 然后如下图,开启SMTP 服务: 4. 按提示验证短信&am…...
【操作系统原理04】进程同步
文章目录 大纲一.进程同步与进程互斥0.大纲1.同步2.互斥 二.进程互斥的软件实现方法0.大纲1.单标志法2.双标志先检查法3.双标志后检查法4.Peterson算法 三.进程互斥的硬件实现方法0.大纲1.中断屏蔽方法2.TestAndSet指令3.Swap指令 四.互斥锁五.信号量机制0.大纲1.概念2.整形信号…...
Java ThreadPoolExecutor 深度解析:从原理到实战
在 Java 的多线程编程领域,ThreadPoolExecutor是一个至关重要的工具类,它为开发者提供了强大且灵活的线程池管理能力。合理使用ThreadPoolExecutor,不仅能够提升应用程序的性能和响应速度,还能有效控制资源消耗,避免因…...
MCP 协议——AI 世界的“USB-C 接口”:解锁智能协作的新时代
在过去十年中,科技的进步已经改变了我们日常生活的方方面面。从智能手机的普及到物联网的快速发展,人们的生活被各种创新的技术重新定义。今天,我们即将迎来另一个里程碑式的转折点——MCP 协议的推出,它将为人工智能世界的协作与…...
知识就是力量——一些硬件的使用方式
硬件平台 正点原子ATK-MD0430 V2.0(4.3寸TFT LCD电容触摸屏/使用cc2530控制)1.硬件连接2. 软件驱动实现3. 优化与注意事项4. 示例工程参考5. 常见问题 正点原子ATK-MD0430 V2.0(4.3寸TFT LCD电容触摸屏/使用cc2530控制) 1.硬件连…...
机器学习(1)— 开发环境安装
机器学习(1)— 准备开发环境 一、前言 二、Ubuntu开发环境安装 1、NumPy安装 使用如下命令安装: sudo apt-get install python3-numpy2、PyTorch 安装 由于我电脑暂时没有英伟达显卡,暂时安装CPU版: pip3 insta…...
深入实战:使用C++开发高性能RESTful API
🧑 博主简介:CSDN博客专家、CSDN平台优质创作者,高级开发工程师,数学专业,10年以上C/C, C#, Java等多种编程语言开发经验,拥有高级工程师证书;擅长C/C、C#等开发语言,熟悉Java常用开…...
C++之虚函数 Virtual Function
1. 普通虚函数(Virtual Function) 定义:基类中用 virtual 声明,允许派生类 覆盖(Override)。特点: 基类可提供默认实现。派生类可选择性覆盖(若不覆盖,则调用基类版本&a…...
【java实现+4种变体完整例子】排序算法中【选择排序】的详细解析,包含基础实现、常见变体的完整代码示例,以及各变体的对比表格
以下是选择排序的详细解析,包含基础实现、常见变体的完整代码示例,以及各变体的对比表格: 一、选择排序基础实现 原理 每一轮遍历未排序部分,找到最小元素并交换到当前起始位置,逐步构建已排序序列。 代码示例 pu…...
DNS主从同步实验
dns域名解析原理 实验步骤1、主dns要完成dns解析:192.168.21.128 [rootlocalhost ~]# yum install bind -y [rootlocalhost ~]# systemctl start named [rootlocalhost ~]# vim /etc/named.conf options { listen-on port 53 { any; }; direct…...
UIjavaScritIU
1、直接执行js脚本:document.documentElement.scrollTop1000 document.getElementById(“su”).click() 弊端: js自己带的元素定位方法不如selenium的丰富 不支持xpath css 等 定位元素操作不是很灵活。 需要借助js脚本传入 -selenium定位 js 负责执行动…...
Manus技术架构、实现内幕及分布式智能体项目实战 线上高级实训班
Manus技术架构、实现内幕及分布式智能体项目实战 线上高级实训班 模块一:解密Manus分布式多智能体工作原理和架构内幕 基于Claude和Qwen的大模型智能体Manus为何能够迅速成为全球讨论热度最高、使用体验最好、产业界最火爆的大模型智能体产品? Ma…...
Java——二维数组
一、概念 二维数组也是一种容器,不同于一维数组,该容器存储的都是一维数组容器。 二、定义格式 1.数据类型[ ] [ ] 变量名; 2.数据类型 变量名 [ ] [ ]; 3.数据类型 [ ] 变量名 [ ]; 三、动态初始化 (一)书写 1.格式 数据…...
豆瓣图书数据采集与可视化分析(一)- 豆瓣图书数据爬取
文章目录 前言一、数据爬取步骤二、豆瓣图书页面分析1. 图书分类标签页面分析2. 图书页面分析 三、数据采集实现1. 图书分类标签数据采集2. 图书数据采集3. 把多个分类的CSV数据文件整合到一个CSV文件中 前言 在当今大数据时代,数据的获取与整理对于各个领域的研…...
车载诊断新架构--- SOVD初入门(上)
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 周末洗了一个澡,换了一身衣服,出了门却不知道去哪儿,不知道去找谁,漫无目的走着,大概这就是成年人最深的孤独吧! 旧人不知我近况,新人不知我过…...
test——自动化测试
目录 一概念 1自动化 2回归测试 3自动化分类 3.1接口自动化 3.2UI自动化 4自动化测试金字塔 5web自动化测试 6工作原理 二函数 1元素定位 1.1cssSelector 编辑1.2xpath 语法 2操作对象 2.1click() 2.2send_keys() 2.3clear() 2.4text 2.5get_attribu…...
Kubernetes相关的名词解释CoreDNS插件(2)
为什么需要DNS服务? service发现是k8s中的一个重要机制,其基本功能为:在集群内通过服务名对服务进行访问,即需要完成从服务名到ClusterIP的解析。 k8s主要有两种service发现机制:环境变量和DNS。没有DNS服务的时候&am…...
【记录】服务器用命令开启端口号
这里记录下如何在服务器上开启适用于外界访问的端口号。 方法 1 使用防火墙 1 su ,命令 输入密码 切换到root节点 2 开启防火墙 systemctl start firewalld3 配置开放端口 firewall-cmd --zonepublic --add-port8282/tcp --permanent4 重启防火墙 firewall-cmd…...
代码审计入门 原生态sql注入篇
前置知识: 漏洞形成的原因: 1、可控的参数 2、函数缺陷 代码审计的步骤: 1、全局使用正则搜索 漏洞函数 ,然后根据函数看变量是否可控,再看函数是否有过滤 2、根据web的功能点寻找函数,然后根据函数看…...
数据结构0基础学习堆
文章目录 简介公式建立堆函数解释 堆排序O(n logn)topk问题 简介 堆是一种重要的数据结构,是一种完全二叉树,(二叉树的内容后面会出), 堆分为大小堆,大堆,左右结点都小于根节点,&am…...
分析虚幻引擎编辑器中使用 TAA 或 TSR 时角色眨眼导致的眼睛模糊问题
1. 引言 用户反馈在使用虚幻引擎编辑器时,当抗锯齿方法设置为时间性抗锯齿 (TAA) 或时间性超级分辨率 (TSR) 时,角色的眼睛在眨眼时会出现模糊现象。时间性抗锯齿和时间性超级分辨率是现代游戏引擎(包括虚幻引擎)中常用的抗锯齿和…...
捋一遍Leetcode【hot100】的二叉树专题
二叉树专题 除了后面两个,都挺简单 二叉树的中序遍历 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int …...
【java实现+4种变体完整例子】排序算法中【堆排序】的详细解析,包含基础实现、常见变体的完整代码示例,以及各变体的对比表格
以下是堆排序的详细解析,包含基础实现、常见变体的完整代码示例,以及各变体的对比表格: 一、堆排序基础实现 原理 基于二叉堆结构(最大堆),通过以下步骤实现排序: 构建最大堆:将…...
量化交易 - RSRS(阻力支撑相对强度)策略研究 - 源码
一、介绍 RSRS(阻力支撑相对强度)是一种基于价格阻力位与支撑位动态变化的市场择时技术指标,由光大证券在2017年提出。其核心原理是通过量化最高价与最低价之间的线性关系,预测市场趋势变化。 原理: 线性回归建模&a…...
从FPGA实现角度介绍DP_Main_link主通道原理
DisplayPort(简称DP)是一个标准化的数字式视频接口标准,具有三大基本架构包含影音传输的主要通道(Main Link)、辅助通道(AUX)、与热插拔(HPD)。 Main Link:用…...
数据库备份-docker配置主从数据库
创建 Docker Compose 文件 创建一个 docker-compose.yml 文件,定义两个 MySQL 容器(一个主库,一个从库) services:mysql:image: mysql:8.0.27container_name: mysqlports:- "3306:3306"environment:TZ: Asia/ShanghaiM…...
YOLO11改进-Backbone-使用MobileMamba替换YOLO backbone 提高检测精度
轻量化模型的技术瓶颈 CNN 的局限性:传统 CNN(如 MobileNet)依赖局部感受野,难以捕捉长距离依赖关系,在高分辨率任务(如语义分割)中需通过增加计算量提升性能,效率低下。 Transforme…...
JavaScript学习教程,从入门到精通,DOM 操作语法知识点及案例代码(20)
DOM 操作语法知识点及案例代码 一、DOM 介绍 1. 什么是 DOM DOM (Document Object Model,文档对象模型) 是 HTML 和 XML 文档的编程接口。它提供了对文档的结构化的表示,并定义了一种方式可以使从程序中对该结构进行访问,从而改变文档的结…...
Vue3 + TypeScript中defineEmits 类型定义解析
TypeScript 中 Vue 3 的 defineEmits 函数的类型定义,用于声明组件可以触发的事件。以下是分步解释: 1. 泛型定义 ts <"closeDialog" | "getApplySampleAndItemX"> 作用:定义允许的事件名称集合,即组…...
Git命令归纳
初始化git git config --global user.name xxx:设置全局用户名,信息记录在~/.gitconfig文件中git config --global user.email xxxxxx.com:设置全局邮箱地址,信息记录在~/.gitconfig文件中git init:先创建一个目录&am…...
Oracle Recovery Tools修复ORA-600 6101/kdxlin:psno out of range故障
数据库异常断电,然后启动异常,我接手该库,尝试recover恢复 SQL> recover database; ORA-10562: Error occurred while applying redo to data block (file# 2, block# 63710) ORA-10564: tablespace SYSAUX ORA-01110: ???????? 2: H:\TEMP\GDLISNET\SYSAUX01.DBF O…...