68.网游逆向分析与插件开发-角色数据的获取-利用蓝量属性分析角色数据基址

内容参考于:易道云信息技术研究院VIP课

上一个内容:67.网游逆向分析与插件开发-角色数据的获取-分析角色数据基址-CSDN博客

然后分析任何一个东西,逆向分析的本质就是找东西的意思,找东西核心的观念是内存里得有,就是找的东西得知道它什么时候出现,如果连这个都想不清楚一定是找不着的,比如游戏中的一个怪物它有固定的寻址方法或者基址之类的东西吗?多半来讲它是没有的,人物有吗?人物是有的,一般来讲为了方便,基本上会把人物的数据独立出来,就是为了操作起来很便捷,如果没有基址能不能访问这个数据,当然是可以的,有各种各样的方法去访问(比如通过鼠标坐标),对于人物的数据来讲它比较特殊,就是对于我们玩家来说它比较特殊,这么特殊的数据要单独给它做一个指针然后指向它,这是很正常的一种现象,但是这个东西怎样找?有的时候是1级指针有的时候是N级指针,如果是多级指针的话,首先就要想到,游戏中它会怎样去使用这个数据,比如蓝量MP这个数据来去找这个基址,MP这个数据对于我们人物的数据来讲,第一个问题是人物的结构体和怪物的结构体是很有可能是同样的一种结构体,实际上大部分来讲基本都是,或者不是同一个类,那它也会是同一个基类,或者兄弟类,它们肯定有关系存在的,有关系存在那就说明在内存里的结构都差不多,这个时候用MP,MP代表通用属性,就是怪物人物它都拥有的属性,那如果怪物和人物都有的属性,利用这样的一个属性去找它的基址,其实不是特别好,因为会遇到一个问题,就是游戏中在处理这种问题的话,它一定是通用方法,就是怪物也有这种方法人物也有这种方法,那将来的话就才用系统化的方法去处理这个问题,到时它前面一定有非常非常复杂的过程用来游戏自动化获得,这个对象是人物还是怪物的,但是有一个情况是例外的,面对这种通用属性情况下,UI的显示时例外情况,怪物的MP或者某些特定属性,虽然跟人物都有,比如等级怪物也有人物也有,这个时候怪物的属性它基本上来讲不太可能显示,但是人物的属性比如蓝量,它就会在UI界面上显示出来,显示它就会访问,如果我们作为ui的设计的时候,要显示这个数据,是不是要最快最便捷的方式去访问到蓝量这个数据(或者其它人物属性),所以这个地方往往都是一个好的突破口,所以接下来就要找到蓝量,要找访问不要找写入

然后打开 Cheat Engine 搜索蓝量

然后就找到了

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

这个时候就一定能找到ui的访问情况

然后查看eax值的由来,上一个内容可以说是凭借着运气搜索,现在是通过有理有据凭借技术上的逻辑找到的这个东西,在不同的游戏里,这个过程可能会复杂,但是也不会太复杂,基本上会很轻松找到的,因为要考虑到游戏开发的时候,它处理这个问题的时候,它也不会去用很复杂的逻辑去处理这个事情,当然也有极个别的游戏是有的,但是如果说它那个很复杂的话,也可以采用它的逻辑去处理这个问题,而现在第一个点面对这种东西ui是一个非常好的突破口,因为ui和怪物,怪物是不存在ui显示这个问题的,所以这个时候就把怪物的信息干掉了,那这就基本上是针对人物的情况来处理,所以逆向分析的时候要找它独立出现的场景,这是非常重要的点

然后在看第二个函数:可以看到它有一些%d什么的,这就说明是ui数据处理的函数了

然后还有攻击的字符处理,所以第二个函数应该是角色面板绘制的过程

然后接下来用错误的方式写入去找,试一下是怎样的

然后

这时的代码:是get方法,一个成员函数的封装

然后打开动态分析工具,x96dbg,5C94F0,然后接下来追ecx

ctrl+f9,再按f8,来到调用方,ecx来自于esi,这个时候就会出错

然后现在的esi,这里很奇怪,1037D3C是它的基址,这是上一个内容中找到的,现在假设我们不知道,这上来一看esi,在看代码里的1037D3C,它俩能对的上,但是它实际用的时候是用的esi,它这个是个什么操作,它是为了读取蓝量,这只是一个巧合,实际遇到这样的东西不能采纳,因为它不准,所以只能看esi怎么来的

然后点一下高亮模式看一下esi怎么来的

可以看到有两个地方

然后加两个断点看看哪一个是,第一个数值正确

第二个位置不会执行,也就是说,调用下图红框里的函数得到了人物基址,然后它有一个参数edi

后续图中的人物地址变了,因为掉线重连了,98489B,然后edi的值看下图红框位置

然后进入AB4230函数

然后最后哪一个jmp的作用是跳到下图函数,下图函数是一个处理异常的,因为它会有ret,正常函数是用ret的,所以它是处理异常的一般不会进入

经过分析,看出下图红框的两个指令是不等于跳转,再加上调用下图函数式传入的值,它可能把人物指针放到了一个链表结构里,下图中第二个不等于就是判断是不是链表最后一个

所以如果想要人物指针就要得到调用上图函数的参数,参数来自于edi,所以接下来就要看edi从哪来的,然后上方就还剩两个函数,第一个函数调用之前还不存在那个参数,

调用之后出现了参数

514CD0函数它的参数

然后把就把eax值的位置进行更改了,也就是传一个指针进去,它就会把指针内容写成另外一个东西

想求它就要知道ebx是什么,ebx来自于栈,是一个参数,所以ctrl+f9再按f8来到上一层

然后来到了

再ctrl+f9再按f8来到上一层:

然后在这一层会被不断的调用,首先看它的入参与514CD0那里的ebx是否一致

是一致的

然后 它的edi参数,相似操作类型,然后edi又是来自于上一级的参数,这个函数再往上就不好追了

然后这里看测试一下91FAE5它是做什么的,满蓝的时候不会触发

移动的时候会触发,这时的eax的值是B021,所以B021更新的是人物的坐标

自动回蓝的时候是3057

使用物品是B04C

减物品数量时305C,它可能是一种同步数据的操作,所以当到了这个地方就不用再追了,就可以放弃了,它前面一定有一种管理整个数据组织的过程,而且一定很麻烦,再继续往上找就会到了常断的函数了,所以通过写入去追踪的话,最终通过蓝量的事情就白玩了,这是很正常的,一般来讲这个方法它是一种通用方法,就是人物怪物或者跟其它对象共用的方法的话,那么它一般管理起来都会有可能用到通用性的管理方法,会发现这种方式很痛苦,所以分析一个问题的时候要找好一个切入点,这个切入点一定是要找到的场景是它会独一无二出现的场景,就是出现的地方越少我们处理起来就越有力,通过写入找的数据就很明显不是一个有力的

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

内 存 取 证

1.用户密码 从内存中获取到用户admin的密码并且破解密码,以Flag{admin,password}形式提交(密码为6位); 1)查看帮助 -h ./volatility_2.6_lin64_standalone -h 2)获取内存镜像文件的信息 imageinfo ./volatility_2.6_lin64_stand…

【数据库原理】(21)查询处理过程

关系型数据库系统的查询处理流程是数据库性能的关键,该流程涉及到将用户的查询请求转化成有效的数据检索操作。通常可以分为四个阶段:查询分析、查询处理、查询优化和查询执行,如图所示。 第一步:查询分析 这个阶段是整个查询处理的起点。数…

CDH 6.3启动失败,由于日志写入权限原因导致cloudera-scm-server.log未生成

CDH 6.3启动失败,CM之前都能正常启动,服务器重启后,启动出现异常,需要排查具体错误,查看日志,发现日志cloudera-scm-server.log也未生成,不好定位具体原因。于是查看cloudera-scm-server状态&am…

Python流程控制语句

目录 一、分支结构 (一)单分支语句 (二)双分支语句 (三)多分支语句 (四)嵌套的分支语句 二、循环结构 循环结构概述 (一)for循环 (二&am…

最佳解决方案:如何在网络爬虫中解决验证码

Captcha(全自动区分计算机和人类的公开图灵测试)是广泛应用的安全措施,用于区分合法的人类用户和自动化机器人。它通过呈现复杂的挑战,包括视觉上扭曲的文本、复杂的图像或复杂的拼图等方式,要求用户成功解决这些挑战以…

vue3+vite+ts+pinia新建项目(略详细版)

1、新建项目 npm create vite@latest 2、安装依赖 yarn add vue-router yarn add -D @types/node vite-plugin-pages sass sass-loader 3、配置别名 //vite.config.ts import { defineConfig } from vite import path from node:path export default defineConfig({ plu…

【huggingface】【pytorch-image-models】timm框架中使用albumentations库数据增广

文章目录 一、前言二、实操2.1 声明库2.2 定义你的数据增广算子2.3 加入其中 一、前言 问题是这样的,在使用timm框架训练时,发现数据增广不够,想用Albumentations库的数据增广,怎么把后者嵌入到前者的训练中。 其实也是比较简单…

JVM(字节码文件详解)

JVM的组成 类加载器运行时数据区域执行引擎(主要理解垃圾回收器,及时编译器)本地方法 字节码文件的组成 在讲解字节码文件组成前,可以安装使用“jclasslib”工具或idea中“jclasslib”插件进行字节码文件查看 jclasslib的Github地…

写一个简单的Java的Gui文本输入窗口,JFrame的简单使用

JFrame是指一个计算机语言-java的GUI程序的基本思路是以JFrame为基础,它是屏幕上window的对象,能够最大化、最小化、关闭。 Swing的三个基本构造块:标签、按钮和文本字段;但是需要个地方安放它们,并希望用户知道如何处理它们。JFrame 类就是解决这个问题的——它是一个容器…

计算机丢失mfc140.dll怎么办?解决mfc140.dll缺失的3种方法分享

计算机丢失mfc140.dll怎么办?在使用微软办公软件的时候,可能会弹出一个错误提示框说“找不到mfc140.dll,无法继续执行代码”。为了不影响工作效率,我们可能需要亲自动手尝试修复这一问题。以下是一些mfc140.dll缺失的3种方法相关介…

代码随想录算法训练营第17天 | 110.平衡二叉树 + 257. 二叉树的所有路径 + 404.左叶子之和

今日内容 110.平衡二叉树 257. 二叉树的所有路径 404.左叶子之和 110.平衡二叉树 - Easy 题目链接:. - 力扣(LeetCode) 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为&#xff1…

PMP报考条件?

一、PMP报考条件很简单: 年龄满足22周岁有官方授权的培训机构给的 35个PDU(学时) 就能报名。 是不是相当于没有条件,题主说的三年内累计60PDU,是续证时才需要的,网上说的4500小时、7500小时项目管理经验&…

500mA High Voltage Linear Charger with OVP/OCP

一、General Description YHM2810 is a highly integrated, single-cell Li-ion battery charger with system power path management for space-limited portable applications. The full charger function features Trickle-charge, constant current fast charge and const…

2024.1.11 关于 Jedis 库操作 Redis 基本演示

目录 引言 通用命令 SET & GET EXISTS & DEL KEYS EXPIRE & TTL TYPE String 类型命令 MGET & MSET GETRANGE & SETRANGE APPEND INCR & DECR List 类型命令 LPUSH & LRANG LPOP & LPOP BLPOP & BRPOP LLEN Set 类型命…

时间序列数据库选型: influxdb; netdiscover列出docker实例们的ip

influxdb influxdb: 有收费版本、有开源版本 influxdb 安装、启动(docker) docker run -itd --name influxdb-dev -p 8086:8086 influxdb #influxdb的web客户端(端口8003)被去掉了 #8006是web-service端口#docker exec -it influxdb-dev bashinfluxdb 自带web界面 从后面的…

【设计模式-04】Factory工厂模式

简要描述 简单工厂静态工厂工厂方法 FactoryMethod 产品维度扩展 抽象工厂 产品一族进行扩展Spring IOC 一、工厂的定义 任何可以产生对象的方法或类,都可以称之为工厂单例也是一种工厂不可咬文嚼字,死扣概念为什么有了new之后,还要有工厂&am…

AJAX入门到实战,学习前端框架前必会的(ajax+node.js+webpack+git)(七)

08.什么是模块化? CommonJS 标准 09.ECMAScript 标准 - 默认导出和导入 10.ECMAScript 标准 - 命名导出和导入 11.包的概念 实操: server.js utils/lib/index.js utils/package.json 12.npm - 软件包管理器 13.npm - 安装所有依赖 从别处(网…

RTSP网络视频协议

一.RTSP网络视频协议介绍 RTSP是类似HTTP的应用层协议,一个典型的流媒体框架网络体系可参考下图,其中rtsp主要用于控制命令,rtcp主要用于视频质量的反馈,rtp用于视频、音频流从传输。 1、RTSP(Real Time Streaming P…

利用gulp工具对常规web项目进行压缩打包

前言 对于一个常规的web项目,如下项目目录 |- imgs | - img1.png | - img2.png |- js | - user.js | - utils.js |- css | - index.css | - user.css |- html | - user.html |- index.html可以使用各种构建工具(如webpack、gulp、grunt等)来…

IBM X3750 M4服务器主板故障全国协助处理

2023年12月31这天中午看到有位网络朋友加我,通过后该用户反馈说是有一台IBM System x3750 M4服务器有故障,现在无法开机。希望我们工程师协助他检测 分析 定位该故障问题原因和处理方案。 如上图所示:经过工程师与用户排查,发现该…