当前位置: 首页 > 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.xdnf.cn/news/668809.html

相关文章:

  • [Windows] 视频配音:Krillin AI v1.1.4
  • 【NLP基础知识系列课程-Tokenizer的前世今生第一课】Tokenizer 是什么?为什么重要?
  • Mac redis下载和安装
  • 【Docker】存储卷
  • 阿里云配置安全组策略开放端口
  • 阿里云CDN和腾讯云CDN综合对比
  • 飞牛fnNAS之手机访问篇
  • OpenSSH 服务配置与会话保活完全指南
  • 参数/非参数检验和连续/离散/分类等变量类型的关系
  • 好坏质检分类实战(异常数据检测、降维、KNN模型分类、混淆矩阵进行模型评估)
  • Ubuntu20.04系统安装,使用系统盘安装
  • 在thinkphp5.0中。单表使用 model clone 时就会有问题。 需要使用 alias(), 否则会报错。
  • 防腐防爆配电箱:采用 304 不锈钢材质,抗腐蚀、抗冲击,适应恶劣工况
  • 第三届黄河流域网安技能挑战赛复现
  • 2025吉林CCPC 题解(前六题)
  • [图文]图6.3会计事项-Fowler分析模式的剖析和实现
  • docker 搭建php 开发环境 添加扩展redis、swoole、xdebug(1)
  • Qt不同布局添加不同控件
  • 模型评价指标介绍
  • Spark、Hadoop对比
  • Excel 操作 转图片,转pdf等
  • Go语言中的浮点数类型详解
  • Kotlin 中 Lambda 表达式的语法结构及简化推导
  • 学习黑客 Metasploit 主要组件之Encoder
  • MS1826+MS2131 1080P@60Hz 4路输入输出USB3.0采集
  • 通过ansible playbook创建azure 资源
  • 解决ubuntu服务器未使用空间的分配
  • c++复习_第一天(引用+小众考点)
  • c#,vb.net使用OleDb写入Excel异常:字段太小而不能接受所要添加的数据的数量
  • etcd:高可用,分布式的key-value存储系统