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

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

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

相关文章

[足式机器人]Part2 Dr. CAN学习笔记 - Ch03 傅里叶级数与变换

本文仅供学习使用 本文参考: B站:DR_CAN Dr. CAN学习笔记-Ch03 傅里叶级数与变换 1. 三角函数的正交性2. 周期为 2 π 2\pi 2π的函数展开为傅里叶级数3. 周期为 2 L 2L 2L的函数展开4. 傅里叶级数的复数形式5. 从傅里叶级数推导傅里叶变换FT6. 总结 1. …

高效底座模型LLaMA

论文标题:LLaMA: Open and Efficient Foundation Language Models 论文链接:https://arxiv.org/pdf/2302.13971.pdf 论文来源:Meta AI 1 概述 大型语言模型(Large Languages Models,LLMs)通过大规模文本数…

TMC2226步进电机驱动---学习记录

基于TMC2226数据手册的学习 主要内容介绍: Package Outline TMC2226 手册中引脚解释(按照手册表格顺序) 了解每个引脚是接什么的,之后看原理图 (借用立创广场kirito的原理图,后期换个) 以前的疑…

UIUC CS241 讲义:众包系统编程书

原文:angrave/SystemProgramming 译者:飞龙 协议:CC BY-NC-SA 4.0 欢迎来到 Angrave 的众包系统编程维基书!这个维基是由伊利诺伊大学的学生和教师共同建立的,是伊利诺伊大学 CS 的 Lawrence Angrave 的众包创作实验。…

SpringMVC的四种跳转方式

默认的跳转是请求转发,直接跳转到jsp页面展示,还可以使用框架提供的关键字redirect:,进行一个重定向操作,包括重定向页面和重定向action,使用框架提供的关键字forward:,进行服务器内部转发操作,…

如何解决NAND系统性能问题?--NAND分类

一、故事引言 想象一下,你正在管理一座神奇的数据仓库,这个仓库没有沉重的门、旋转的磁盘和机械手臂,而是由一群训练有素的“数据小飞侠”组成。这些小飞侠们居住在一个叫做闪存芯片(NAND Flash,本文主人公&#xff0…

Bug:Goland左侧丢失项目结构(Goland常用快捷键)

Goland快捷键&小tips 1 常用快捷键 # 格式化代码 optioncommandL# 在项目中搜索文件中的内容 commandshiftF# 搜索.go文件 shiftshift(按两次shift)# 修改方法、变量(同时替换引用处的名称) fnshiftF6# 将选中代码抽取为方法…

设计模式—行为型模式之状态模式

设计模式—行为型模式之状态模式 状态(State)模式:对有状态的对象,把复杂的“判断逻辑”提取到不同的状态对象中,允许状态对象在其内部状态发生改变时改变其行为。 状态模式包含以下主要角色: 环境类&am…

结构体成员 分数比较大小

题目&#xff1a; 代码&#xff1a; #include <bits/stdc.h> #include<cstring>using namespace std;struct Num{double fenzi;double fenmu;char fenhao;};bool cmp(Num r1,Num r2){return r1.fenzi/r1.fenmu<r2.fenzi/r2.fenmu;}int main(){int n;Num num[n…

Android-多线程

线程是进程中可独立执行的最小单位&#xff0c;也是 CPU 资源&#xff08;时间片&#xff09;分配的基本单位&#xff0c;同一个进程中的线程可以共享进程中的资源&#xff0c;如内存空间和文件句柄。线程有一些基本的属性&#xff0c;如id、name、以及priority。 id&#xff1…

管理沟通能力测试

管理沟通能力测试用于测试管理者的潜能在交流和沟通方面的能力&#xff0c;作为管理者的能力测评是一个综合面&#xff0c;而沟通能力则是尤为重要&#xff0c;团队的凝聚力、创造力都跟管理者的沟通能力有着直接的关系。了解和提高管理沟通能力需要在实践中不断学习和总结。 …

php 字符串常用函数

目录 1.一些常用函数 2.代码示例 1.一些常用函数 函数名描述trim()删除字符串两端空行或其它预定义符rtrim()删除字符串右边空行或其它预定义符ltrim()删除字符串左边空行或其它预定义符dirname()返回路径中的目录部分str_split()把字符串分割到数组里explode()使用一个字符串…

写在学习webkit过程的前面

webkit起源于KHTML&#xff0c;是KDE开源项目的KHTML和KJS引擎的一部分。在它的诞生和发展过程中&#xff0c;由两家著名的公司参与开发过程中&#xff0c;造成两次裂变。诞生两个内核webkit和blink&#xff0c;并发展和产生了两个主流的浏览器&#xff0c;分别为safari和chrom…

c++学习笔记-STL案例-机房预约系统2-创建身份类

前言 衔接上一篇“c学习笔记-STL案例-机房预约系统1-准备工作”&#xff0c;本文主要包括&#xff1a;创建身份类&#xff0c;建立了整个系统的框架&#xff0c;Identity基类&#xff0c;派生类&#xff1a;Sudent、Teacher、Manager&#xff0c;基类无实现源文件&#xff0c;…

鸿蒙HarmonyOS兼容JS的类Web开发-开发指导

鸿蒙HarmonyOS兼容JS的类Web开发-开发指导 文章目录 鸿蒙HarmonyOS兼容JS的类Web开发-开发指导常用组件开发指导list开发指导创建list组件添加滚动条添加侧边索引栏实现列表折叠和展开场景示例 dialog开发指导创建dialog组件设置弹窗响应场景示例 form开发指导创建form组件实现…

Python笔记08-面向对象

文章目录 类和对象构造方法内置方法封装继承类型注解多态 类只是一种程序内的“设计图纸”&#xff0c;需要基于图纸生产实体&#xff08;对象&#xff09;&#xff0c;才能正常工作 这种套路&#xff0c;称之为&#xff1a;面向对象编程 类和对象 定义类的语法如下&#xff…

QT上位机开发(利用tcp/ip访问plc)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 plc是工控领域很重要的一个器件。简单的plc一般就是对io进行控制&#xff0c;但是复杂的plc&#xff0c;还可以控制电机、变频器&#xff0c;在工业…

Python3.5如何打包编译

python3.5怎么打包编译 问题&#xff1a;用Python开发的小工具有时需要编译打包为Windows(*.exe)、Mac等操作系统下的可执行性文件以供非程序员使用。 解决方案&#xff1a; 一、py2exe 目前只支持到Python3.4&#xff0c;暂不支持Python3.5 二、PyInstaller 安装&#x…

从vue小白到高手,从一个内容管理网站开始实战开发第七天,登录功能后台功能设计--通用分页、枚举以及相关工具类

上一篇实现了数据库访问层的相关功能,还没有了解的小伙伴可以去看前面文章实现的内容,因为每一篇内容都是连贯的,不学习的话可能下面的内容学习起来会有点摸不着头脑 从vue小白到高手,从一个内容管理网站开始实战开发第六天,登录功能后台功能设计--API项目中的登录实现(二…

chat-plus部署指南

目录 1.下载代码 2.启动 3.测试 1.下载代码 cd /optwget https://github.com/yangjian102621/chatgpt-plus/archive/refs/tags/v3.2.4.1.tar.gz 2.启动 cd /opt/chatgpt-plus-3.2.4.1/deploydocker-compose up -d 3.测试 管理员地址xxx:8080/admin 账号密码admin/admin1…