当前位置: 首页 > news >正文

32.第二阶段x64游戏实战-封包-公共call

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

本次游戏没法给

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

上一个内容:31.第二阶段x64游戏实战-封包-线程发包

上一个内容,通过对ws2_32.send函数设置断点,知道了这个游戏是使用线程发包,然后通过对ws2_32.send第二个参数也就是数据包的内容设置硬件写入断点,通过激活窗口来到了一个新地方,然后硬件断点没办法设置条件,所以要解决激活窗口发送数据包的问题

下面开始,来到下图红框位置,也就是通过对数据包设置硬件写入断点,再通过激活窗口触发硬件写入断点来到的(别忘了删除硬件写入断点)

先说一下情况

这章的标题是封包公共call,意思是不管走路、释放技能、发送聊天消息、激活窗口等发送的数据包,都会有组装数据包(明文包、非加密数据)、加密、发送数据包,这三个步骤,发送数据包就是ws2_32.send函数之前找过了,然后找加密和组织数据包的代码的过程中在ws2_32.send发现线程发包和激活窗口发包这两个问题,然后激活窗口发包通过条件断点进行了跳过,然后通过对数据包的内存地址设置硬件写入断点解决的线程发包,然后硬件断点没办法设置条件,所以只能先通过激活窗口发的包触发写入断点,从而再找条件,上图是通过激活窗口触发硬件写入断点来到的,也就是说现在解决了线程发包问题,还剩下激活窗口发包的问题,解决了激活窗口发包就可以找组装数据包的函数了(加密的我们看不懂没法用,所以肯定要找非加密的明文包)

解决激活窗口问题

首先删除硬件断点

然后按CTRL+F9再按F8来到下图位置

然后继续按CTRL+F9再按F8来到下图位置

然后继续按CTRL+F9再按F8来到下图位置

然后继续按CTRL+F9再按F8来到下图位置,然后按F9让代码运行起来,每按一次CTRL+F9再按F8都会写一个注释,一会要用到,至于按几次CTRL+F9再按F8,根据经验大约按五六次就可以,多了也没事

然后再次对数据包设置硬件写入断点

然后再次通过激活窗口触发硬件断点,来到下图红框位置,这里的代码就是把rdx的值放到r10里(r10是ws2_32.send第二个参数),然后这一层就分析完了

然后在下图红框位置设置断点

通过断点发现 rcx是ws2_32.send第二个参数(下图的内存地址和上面的不一样了,是因为游戏闪退了重新打开导致的),但是它有个问题

然后按F9,可以发现rcx的值再增加

然后继续按F9,可以发现rcx的值再增加

然后继续按F9,可以发现rcx的值再增加

然后继续按F9,可以发现rcx的值再增加

然后继续按F9,可以发现rcx的值再增加,rdx的值也再变化,rdx的值是数据包的数据,这说明当前断点位置在一个循环里,我们现在正在解决激活窗口发送数据包问题,解决这个问题要找一个固定的值做判断,所在现在断点的位置不是很合适,需要继续找

rdx的值,激活窗口发送的数据包也是0x0555

然后如下图来到第三层继续观察

然后如下图通过断点观察,现在的rcx不是ws2_32.send第二个参数,但rdx的值还是数据包的数据

然后按F8,可以看到rcx的值变成了ws2_32.send第二个参数,然后数据包的数据也写进去了,这个位置就感觉很符合条件断点

如下图设置条件断点,Word(rcx)!=0x0555,Word(rcx)的意思是读rcx两个字节的数据,到这就解决了激活窗口的数据包问题,然后接下来找公共call

然后下图是通过发送聊天数据触发的断点

然后按CTRL+F9再按F8

然后继续按CTRL+F9再按F8,可以发现在第四层按了CTRL+F9再按F8之后来到的位置和通过激活窗口跳到的位置不一样了,这说明第四层就是公共call,然后按F9让代码运行起来

然后鼠标左键单机下图红框位置,然后按回车键(Enter键)

然后就来到下图红框位置,也就是第四层函数的头部,到这公共call也就找好了

这里可以换一个激活窗口的条件判断,如下图通过激活窗口触发断点,然后下图红框位置是函数第一行,所以栈里的第一个数据就是返回地址,这个返回地址是返回到激活窗口的功能里,所以可以通过判断栈第一个数据来过滤激活窗口

下图是通过激活窗口触发的断点,0x00007FF663213A65是激活窗口代码的地址,通过上面的分析第四层是分界线,所以写 [rsp]!=0x00007FF663213A65 可以用来做过滤激活窗口

总结:

通过对ws2_32.send第二个参数设置硬件写入断点,然后通过激活窗口触发硬件写入断点,然后通过多次CTRL+F9再按F8,找到了激活窗口调用函数路线,然后在通过发送聊天数据触发断点也找到了聊天调用的函数路线,通过激活窗口路线和聊天路线的对比找到了公共call,通过对公共call设置 [rsp]!=0x00007FF663213A65 条件断点解决了激活窗口发送数据包问题


img

http://www.dtcms.com/a/215990.html

相关文章:

  • [yolov11改进系列]基于yolov11引入感受野注意力卷积RFAConv的python源码+训练源码
  • 【刷题】数组拼接(超聚变暑期实习笔试)
  • GitCode镜像仓库批量下载开发实录
  • 一,关键字class和typename的区别
  • 线代第四章线性方程组第二节:线性方程组有解判断
  • 模型协同构建智能流程体
  • linux kernel 内存回收水位线调整方法
  • 《独立开发工具 • 半月刊》 第 003 期
  • java每日精进 5.27【分布式锁】
  • [网页五子棋][用户模块]客户端开发(登录功能和注册功能)
  • 《计算机组成原理》第 3 章 - 系统总线
  • 2025年- H54-Lc162--437. 路径总和 III(递归[回溯]OR深搜)--Java版
  • 24 数组基础与应用详解:定义(静态/VLA)、初始化、访问(有效/越界/内存调试)、遍历、大小端字节序
  • C++23:关键特性与最新进展深度解析
  • DAY9 热力图和箱线图的绘制
  • 翻转二叉树
  • 【基于STM32的新能源汽车智能循迹系统开发全解析】
  • React---day2
  • 软件同步机制-Peterson解决方案 简单讲解
  • day38 python Dataset和Dataloader
  • SSM整合:Spring+SpringMVC+MyBatis完美融合实战指南
  • 基于大模型的慢性胃炎全周期预测与诊疗方案研究报告
  • 【Quest开发】空间音频的使用
  • 异常:UnsupportedOperationException: null
  • 【运维_日常报错解决方案_docker系列】一、docker系统不起来
  • OpenCV CUDA模块图像处理------颜色空间处理之用于执行伽马校正(Gamma Correction)函数gammaCorrection()
  • OpenCV CUDA模块图像处理------颜色空间处理之GPU 上对两张带有 Alpha 通道的图像进行合成操作函数alphaComp()
  • 传统数据表设计与Prompt驱动设计的范式对比:以NBA投篮数据表为例
  • 【请关注】VC++ MFC常见异常问题及处理方法
  • 【LeetCode 热题 100】打家劫舍 / 零钱兑换 / 单词拆分 / 乘积最大子数组 / 最长有效括号