43.x86游戏实战-DXX寻找吸怪坐标

news2024/9/24 13:13:51

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

本次游戏没法给

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

工具下载:

链接:https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd=6tw3

提取码:6tw3

复制这段内容后打开百度网盘手机App,操作更方便哦

上一个内容:42.x86游戏实战-C++实现全图秒杀功能

之前代码中用的坐标是偏移0x18C和0x190位置,这俩未位置使用CE修改之后没有反应(怪物不瞬移),所以这俩位置并不是真正的坐标,真正的坐标改了之后怪物会瞬移,接下来先找真正的坐标。

首先来到有怪物的地图,然后把怪物清理的就剩下一个

然后注入我们写的dll,点击遍历怪物,找一下怪物的地址

然后记住怪物地址,一会CE中要用

然后使用管理员打开CE,并附加到游戏,然后输入怪物地址+0x18C位置(也就是坐标)

然后就能看到怪物坐标的数据了

然后使用CE的范围搜索

然后搜出来很多结果

这时引怪物移动改变坐标,移动之后再次使用CE搜索,如下图

然后就能找到了,修改下图红框地址的值怪物就会瞬移

然后接下来通过使用硬件断点来找基址,所以使用管理员打开OD,并附加游戏,附加之前记得过一下检测(0x755B88位置的值改成EB,详情:34.x86游戏实战-XXX过检测代码分析)

然后以十六进制显示

然后输入EB

过完检测使用管理员打开OD并附加到游戏,首先点位置1,然后按CTRL+G,然后输入上方通过CE找的可以修改的坐标地址,然后点确定(本次步骤要做两次,OD有个问题,第一次CTRL+G会乱搞)

然后下一个硬件写入断点

然后在下图位置断了下来,xmm0是专门存放浮点数的寄存器(专门存放小数的寄存器),可以看到这里给数组里的一个值进行了赋值(ecx+eax*4*4地址里的值是坐标)也就是修改坐标

xmm0寄存器的值来自于ebp+C

ebp是的值是栈顶数据(函数中的数据),ebp+C一般是函数的第二个参数,这个参数并不重要,重要的是ecx,所以接下来找ecx,ecx在下图中并没有看到有赋值的代码,所以ecx的值来自于上一层

然后取消硬件写入断点(如果不取消使用CTRL+F9功能可能会乱断点住)

取消硬件写入断点之后,按CTRL+F9来到上一层,看看ecx的值哪来的,按完CTRL+F9之后,在下图中可以看出,ecx的值来自愈ebp-64,所以接下来要找ebp的值哪来的

然后通过断点一路F8 下图红框两个位置给ecx的值都是一样的,然后ebp并没有看到在哪赋值的,但是esi看到了

用鼠标滚轮往上翻,一般来到函数头部附近就可以看到,然后如下图esi的值来自于ecx,ecx的值来自于上一层,所以还是要CTRL+F9

使用鼠标滚轮往上翻了之后,怎么回到往上翻之前的位置?这里按下图红框的C就可以

然后CTRL+F9,可以看到ecx的值又是来自于esi,如果不出意外esi的值又会是来自于ecx

然后使用鼠标滚轮往上翻,来自于ecx,所以还要继续CTRL+F9

CTRL+F9之后来到下图位置,下图红框可以看出ecx的值来自于ebp-48位置

然后找ebp的时候发现,这个函数里几乎全是vm代码,这就没法找,往上反也反不出去

上方是通过下硬件写入断点找的,接下来通过下硬件访问试试

然后访问断点断下来,然后通过dd ecx+eax*4+4,看到 ecx+eax*4+4的值是坐标,为了后续方便这里称它为坐标列表,然后找ecx

然后删除访问断点

然后CTRL+F9之后,然后发现ecx的值还是来自于ecx,所以要继续CTRL+F9

然后CTRL+F9之后,也没有ecx的赋值,这里在retn位置断下来了,要按F8,不要按CTRL+F9,然后这里push了一个0,这个0就是 ecx+eax*4+4中的eax的值

然后F8之后,看到ecx的值还是来自于ecx,所以继续往上

CTRL+F9之后,ecx的值来自于edi,edi的值来自于ebp+8,然后ebp的值来自于esp,ebp+8也就是函数第一个参数,所以要继续往上反

然后CTRL+F9之后,第一个参数是esi的值,然后esi还是来自于函数的第一个参数

然后CTRL+F9,这里比较复杂,慢慢细看发现它的值来自于ebp,并没有什么有用的东西

这里esi最后一次赋值是来自于ebp-4,这种减法是访问的函数中的局部变量,然后并没有看到给局部变量赋值的操作

然后通过断点之后按F8的方式发现,ebp-4的值来自于ecx+4

然后进入0xB09680函数

然后ecx的值来自于ebx,ebx的值来自于esi+AC,然后esi的值来自于ecx,ecx的值来自于上一层

然后CTRL+F9,到了下图位置

然后ecx的值最终还是来自于ecx,但是这里按CTRL+F9 反不动了,所以现在可以宣布通过硬件断点访问也没找到这个地址的基址

然后回到CE,看看CE中有那些我位置访问了坐标,首先玻璃OD,右击OD选择Detach,如下图

然后回到CE,右击地址选择找出是什么访问了这个地址

然后发现只有两个位置访问了坐标,这俩位置上方都分析过了,都找不到,这怎么办?

然后换个思路,现在有一件事,这个游戏中坐标数据会有多个地址存放,通过CE可以看出有两个位置存放一个是怪物地址+0x18C位置一个是通过CE新扫描出来的(修改数据会让怪物瞬移),怪物会存在多个也就是怪物列表,然后一般为了性能在同步坐标数据的时候它肯定不会先从怪物数组里一个一个找,找到之后再通过某些条件去坐标列表(坐标列表指的是上方通过访问断点找的那个)找怪物对应的坐标,所以它肯定会在怪物列表中记录了坐标列表的数据,所以接下来,来到怪物对象里找一找看看有没有5D6948C相近的数据

现在怪物列表是0x13fb6000

然后修改坐标怪物瞬移的地址是0x5D6948C

再次来到OD,鼠标单击1位置,然后输入怪物地址,然后点确定

然后双击下图红框位置,让它显示偏移

然后在怪物地址偏移0xA8位置找到了与0x5D6948C相近的值,0x5D69480

分别是x坐标、y坐标、z坐标,z坐标是高度,这些坐标修改可以让怪物瞬移,也就能实现吸怪了


img

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

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

相关文章

Xshell中弹出“ssh服务器拒绝了密码请再试一次”时,如何解决

在使用Xshell连接Ubuntu系统时,可能会弹出这个错误 可能原因如下​ 密码输入错误Ubantu系统默认禁止root用户登录ssh。 解决方法: 1. 先用root登录 (由于我买的是云服务器,所以拿这个来举例) 注:要在本地shell中登录…

基于jqury和canvas画板技术五子棋游戏设计与实现(论文+源码)_kaic

摘 要 网络五子棋游戏如今面临着一些新的挑战和机遇。一方面,网络游戏需要考虑到网络延迟和带宽等因素,保证游戏的实时性和稳定性。另一方面,网络游戏需要考虑到游戏的可玩性和趣味性,以吸引更多的玩家参与。本文基于HTML5和Canv…

银河麒麟V10忘记Root密码怎么办?

银河麒麟V10忘记Root密码怎么办? 一:进入GRUB模式二:输入GRUB账号密码三:修改启动参数四:修改root密码五:重启系统六:验证root密码 💖The Begin💖点点关注,收…

就想刷题过?新手必看的华为认证题库最强背题经验技巧

华为认证作为网络和IT领域的重要资格认证,其难度不容小觑。许多考生为了顺利通过考试,选择背题库作为备考策略。 (重点说一下啊,不提倡刷题,能学知识,把技术学透,肯定是最佳的。) …

Java基于数据库、乐观锁、悲观锁、Redis、Zookeeper分布式锁的简单案例实现(保姆级教程)

1. 分布式锁的定义 分布式锁是一种在分布式系统中用来协调多个进程或线程对共享资源进行访问的机制。它确保在分布式环境下,多个节点(如不同的服务器或进程)不会同时访问同一个共享资源,从而避免数据不一致、资源竞争等问题。 2…

简单记录:两台服务器如何超快速互传文件/文件夹

在服务器间传输文件和文件夹是一个常见的任务,尤其是在需要同步数据或进行备份时。以下是使用 scp 命令在两台服务器之间进行文件传输的基本步骤。 服务器A 至 服务器B:文件传输指南 前提条件 确保服务器A和服务器B之间网络互通。确认您有权限访问目标…

如何让孩子喜欢上读书?

1.选择合适的书籍:根据孩子的兴趣和年龄选择合适的书籍,让孩子参与选书的过程,这样可以增加他们对阅读的主动性和兴趣。同时,避免过分强调阅读的功利性,让孩子自由选择他们感兴趣的书籍。   2.定期的阅读时间和活动&…

谷粒商城实战笔记-211~212-商城业务-认证服务-环境搭建

这一部分的主要内容是开发商城的认证服务。 文章目录 一,211-商城业务-认证服务-环境搭建1,创建模块2,引入相关依赖3,各种配置3.1 注册中心配置3.2 启用注册中心3.3 本节域名配置 4,页面模板4.1 html模板4.2 静态资源上…

python---数据可视化篇

目录 1.matplotlib简介 2.安装并且导入对应的模块 3.设置中文字体 4.创建画布 5.绘制折线图 6.对于折线图的美化 7.散点图的绘制 8.双y轴叠加图 9.簇形柱状图 10.百分比堆积柱状图 11.绘制多个子图(一个画布上面) 1.matplotlib简介 matplotl…

C盘扩容遇到恢复分区怎么办?

文章目录 1.0 问题描述2.0 了解恢复分区是啥3.0 恢复分区可以删除吗?(需确认好!)4.0 删除恢复分区(需要谨慎操作)4.0.1 管理员打开CMD4.0.2 查看磁盘 给C盘扩容 1.0 问题描述 想要给C盘扩容,但…

Hyper-v ubuntu22 上外网方法

1. 前置步骤 步骤一,首先新建一个虚拟网络交换机,我这里名称为vEthernet (hyper-v-ubuntu),选【内部网络】 步骤二, 在网络设置中,找到可以上网的网卡,这里我用的是无线网卡WLAN,设置共享连接…

【SpringBoot】SpringBoot的运行原理

SpringBoot项目中都有一个如下的启动类。 SpringBootApplication public class MyApplication {public static void main(String[] args) {SpringApplication.run(MyApplication.class,args);} }其中SpringBootApplication是这个启动类的核心注解,在它下面又有三个子…

Spring Cloud Gateway动态路由及路由插件实现方案

前言 sim-framework之前使用Zuul作为网关,结合Eureka实现了动态路由及灰度路由,但是存在以下几个问题: 性能问题:Zuul基于线程隔离,一个请求需要一个线程处理,而Gateway基于事件驱动,少量线程…

Go项目布局

Go项目布局,自举语言,源码是靠Go自己实现的 所以Go源码可以参考作为项目布局 源码放在src目录下 cmd放main internal目录下放不希望外部访问的代码(业务) common目录下可以放直接 import外部访问的 etc放配置文件yaml

第二届海南大数据创新应用大赛 - 算法赛道冠军比赛攻略_海南新境界队

关联比赛: 第二届海南大数据创新应用大赛 - 智能算法赛 第二届海南大数据创新应用大赛 - 算法赛道冠军比赛攻略 首先很幸运能拿到这次初赛冠军,本着积极学习和提升自我的态度,团队成员通力合作是获胜关键,再次感谢。 赛题背景分析和理解 …

gpio的使用----->4412的裸机的使用(第三节)

这一节主要是 4412 的裸机的使用 0 4412 的硬件原理图 数据手册 然后是数据手册的解析: 每一组都有这几个 寄存器。 需要注意: 1、 4412 的中断是 与输入,输出在同一个级别的,与stm32不同。 2、 我是在uboot 上进行编程的&#x…

重头开始嵌入式第二十二天(Linux系统编程 进程)

进程 目录 进程 1.进程的概念 2.PCB(process control block) 3.进程和程序有什么区别? 4.进程的内存分布 5.进程的分类 守护进程 6.进程的作用 7.进程的状态 8.进程的调度 9.查询进程的相关指令 1.ps aux 2.top 3.kill和killa…

12 Text 组件

12 Text 组件 Tkinter 是 Python 的标准 GUI 库,而 Text 组件是其中用于显示和编辑多行文本的控件。以下是对 Text 组件的详细说明和一个使用案例。 Text 组件属性 基本属性 width: 文本框的宽度,通常以字符数为单位。height: 文本框的高度&#xff…

亚世光电:消费电子年度表演

机圈风云再起,消费电子乘风而起? 今天我们来聊——亚世光电 最近,华为mate60突然降价,被大家怀疑是为新品上市做准备,算算时间,下半年的消费电子大战也即将拉开帷幕,而亚世光电所在的光电显示领…

sklearn-线性回归

文章目录 一、sklearn-线性回归介绍二、线性回归1.一元线性回归2.多元线性回归模型3.最小二乘法 三、一元线性回归应用1.导入库2.绘制散点图3.建立回归模型并进行训练4.模型评估与数据查看5.模型测试 四、多元线性回归应用1.导入库2.计算相关性3.数据预处理4.训练评估模型5.模型…