6.网络游戏逆向分析与漏洞攻防-游戏网络架构逆向分析-通过逆向分析确定游戏明文发送数据过程

news2024/11/17 7:49:09

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

上一个内容:测试需求与需求拆解

在开始之前要了解一个小知识,在逆向开始之前要很清楚知道要找的东西是什么,大概长什么样子,只有这样才能看到它第一眼发现它,现在我们要找的是它发送数据的明文函数,如果它要实现这个过程它这个函数是怎样的函数?要提供那些内容?第一明文的数据包肯定要提供,数据包本质上是一块内存,所以它看起来就会是内存的样子,执行过去之后内存里会有数据,数据是明文的,所以里面一定有我们可以辨识的内容,第二光有数据包不行,数据包它就是一块数据,一个指针,这个内存有多次必须要给出来,所以它会有长度,所以要关注两个参数的函数。

不过也有的数据的长度在数据包里,这样的就会只有一个参数。

所以在逆向的时候要关注两个参数的函数,一个参数是指针,一个参数是长度,或者一个参数的函数,参数是指针

首先观察它是用的什么ip,打开x96dbg,在connect、WSAConnect函数上下断点

connect上,下断点

WSAConnect函数上,下断点

然后会发现是通过 connect函数进行与服务器连接的

然后可以在栈里看到ip地址与端口

然后在调用connect函数的位置,调用玩connect函数之后我们就可以获取它的socket,所以记录一下调用connect的位置,0x10617E04

然后再按一次ctrl+f9,再按f8,来到下图位置

然后这个函数它的入参是ip地址与端口,这是一个虚函数,ecx是对象指针,这里记录一下位置0x10617048,这里的ecx的值可能有用也记录一下 0x3696AD00

现在连接的已经知道了,现在看发送的,在send、WSASend函数上下断点

根据函数名跳转的方式,按ctrl+g,然后再弹出的窗口输入函数名,然后点确定就可以了,如下弹框

send函数下断点

WSASend函数下断点

然后它在send函数里断下来的,所以它用的send函数

然后来到调用它的位置

然后下图红框里的代码,esi是一个对象指针,至于为什么不使用ecx而是使用esi,这说明用的不是Visual Studio的编译器编译的代码

然后下图红框位置直接告诉了我们下方是发送失败的处理

然后现在是处在发送的位置,然后往上找就能找到加密的位置了,然后按ctrl+f9再按f8来到上一层,现在位置:0x106180A5

由于现在看不出什么东西,所以再按ctrl+f9,再按f8,来到上一层,然后就来到下图红框位置,可以看出它有两个参数

然后断点看它的参数是什么,参数是一个指针,和一个数字,这个数字太符合长度的样子,然后内容现在看不懂,因为不知道现在是个什么样的数据包

这时需要搞一个我们认识的数据包,比如发送聊天数据,然后就看到了明文,在发送聊天数据时要注意,游戏会有心跳包,发送聊天数据的时候要快点,不要让心跳的数据包触发了断点

然后我们把这个数据更改一下,把2改成了8,然后记录一下这里的位置0x10615B97

然后发送的数据也被改了

然后再刚开始connect哪里有一个指针,但是游戏我退出过,上方的指针变了,所以为了验证猜测重新在connect位置打断点,然后再发送一个数据看看,它俩是不是一个东西

connect:现在是0x368B7C0

send位置:0x368CB7C0,它与connect哪里的ecx一模一样,也就是说它是一个很重要的东西

0x368CB7C0可以通过hook掉 connect哪里的函数也就是hook0x1061704B位置

经过在send函数位置看到的数据包,发现它未加密,数据包中也没有长度,然后数据包最后只拼接了一个EE防止粘包,由此可见这是一个有问题的数据包,现在的客户端应该是一个早期版本,功能不全,但是也不影响我们逆向

下图中备注处理数据的位置是在调用send函数之前,一般加密操作都会这样,但现在的客户端是一个早期版本它并没有加密操作,只把数据拼接到数据然后在最后拼接一个EE,就完了

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

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

相关文章

Qt+VTK鼠标拾取点生成拉伸闭合三维体

程序示例精选 QtVTK鼠标拾取点生成拉伸闭合三维体 如需安装运行环境或远程调试,见文章底部个人QQ名片,由专业技术人员远程协助! 前言 这篇博客针对《QtVTK鼠标拾取点生成拉伸闭合三维体》编写代码,代码整洁,规则&…

ES6内置对象 - Map

Map(Map对象保存键值对,键值均不限制类型) 特点: 有序(Set集合是无序的);键值对(键可以是任意类型);键名不能重复(如果重复,则覆盖&…

从ViT到MAE,transformer架构改造Autoencoder

Vision Transformer (ViT) 论文出处[2010.11929] An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale (arxiv.org) 传统的卷积神经网络(CNN)在图像分类、目标检测等任务上表现出色,但其局限性也逐渐显露&#xf…

【大数据】Flink 内存管理(二):JobManager 内存分配(含实际计算案例)

Flink 内存管理(二):JobManager 内存分配 1.分配 Total Process Size2.分配 Total Flink Size3.单独分配 Heap Size4.分配 Total Process Size 和 Heap Size5.分配 Total Flink Size 和 Heap Size JobManager 是 Flink 集群的控制元素。它由三…

virtualenv env_name 使用 virtualenv 创建 python 虚拟环境

为什么要用这个 win7 32 环境下 pycharm 只能用低版本的,比如 2016,2018 此时pycharm 图形界面创建的 虚拟环境版本很低,有些包不兼容,因此用 virtualenv 模块,可以创建 20 版本以上的虚拟环境 virtualenv env_name官方文档 http…

全面解析企业财务报表系列之四:财务报表的真实性和可靠性

全面解析企业财务报表系列之四:财务报表的真实性和可靠性 一、什么是会计方法二、选择会计方法三、会计方法的重要性四、会计报表常用的造假手段五、财务报表经常被遗漏的重要事件六、财务报告造假的资信敏感性七、财务报告审计的重要性八、审计报告 一、什么是会计…

nginx重新编译添加模块或去除不需要的模块

在使用nginx中,我们可能需要对已经安装的nginx进行添加或者删除模块 1、先查看nginx安装了哪一些模块 nginx -V2、来到nginx源码目录,根据如下规则,自行根据需求更改命令 如果要去掉nginx自带的模块,就是用–without做为前缀进…

Stable Diffusion 绘画入门教程(webui)-ControlNet(IP2P)

上篇文章介绍了深度Depth,这篇文章介绍下IP2P(InstructP2P), 通俗理解就是图生图,给原有图加一些效果,比如下图,左边为原图,右边为增加了效果的图: 文章目录 一、选大模型二、写提示词三、基础参…

Siamfc论文中文翻译(详细!)

Fully-Convolutional Siamese Networks for Object Tracking 用于对象跟踪的Siamese网络 说明 建议对照siamfc(2021版)原文阅读,翻译软件翻译出来的效果不好,整体阅读体验不佳,所以我对译文重新进行了整理&#xff0…

5分钟JavaScript快速入门

目录 一.JavaScript基础语法 二.JavaScript的引入方式 三.JavaScript中的数组 四.BOM对象集合 五.DOM对象集合 六.事件监听 使用addEventListener()方法添加事件监听器 使用onX属性直接指定事件处理函数 使用removeEventListener()方法移除事件监听器 一.JavaScript基础…

悄悄话花费的时间(C语言)【二叉树各结点统计求和】

题目描述 给定一个二叉树,每个节点上站着一个人,节点数字表示父节点到该节点传递悄悄话需要花费的时间。 初始时,根节点所在位置的人有一个悄悄话想要传递给其他人,求二叉树所有节点上的人都接收到悄悄话花费的时间。 输入描述 …

element导航菜单el-menu添加搜索功能

element导航菜单-侧栏&#xff0c;自带的功能没有搜索或者模糊查询。 找了找资料 找到一个比较可行的&#xff0c;记录一下&#xff1a; //index.vue的代码 <div style"overflow:auto"><el-menu :default-active"$route.path":default-openeds&…

如何在 Tomcat 中为 Web 应用程序启用和配置缓存?

在Tomcat中为Web应用程序启用和配置缓存通常涉及到对Tomcat的连接器&#xff08;Connector&#xff09;进行配置&#xff0c;以及可能的话&#xff0c;配置Web应用程序本身以支持缓存。 1. 配置Tomcat连接器以启用缓存 Tomcat的连接器可以通过其配置来启用各种…

开源免费的NTFS for mac工具mounty

开源免费的NTFS for mac工具mounty 安装依赖 brew install gromgit/fuse/ntfs-3g-macbrew install --cask macfuse安装mounty 如果已经安装macFUSE和ntfs-3g-mac&#xff0c;可以直接点击下载的dmg安装包&#xff0c;安装升级。第一次启动mounty&#xff0c;你需要接受一系列…

Oracle迁移到mysql-导出mysql所有索引和主键

导出建库表索引等&#xff1a; [rootlnpg ~]# mysqldump -ugistar -pxxx -h192.168.207.143 --no-data -d lndb > lndb20230223-1.sql 只导出索引&#xff1a;参考&#xff1a;MYSQL导出现有库中的索引脚本_mysql 导出数据库所有表的主键和索引-CSDN博客 -- MYSQL导出现有…

国内排名比较好的ai软件有哪些?极力推荐这几款

随着人工智能技术的不断演进&#xff0c;越来越多的写作者开始借助AI写作软件来提升写作效率。在国内&#xff0c;有许多实用且易用的AI写作工具&#xff0c;让写作变得更加便捷和高效。以下是6款国内优秀的AI写作软件&#xff0c;让您的写作过程更加顺畅。 第一款&#xff1a;…

[附完整代码]群智能算法跑21种真实世界优化问题,并输出结果到excel||群智能算法跑CEC 2020真实世界优化问题,并输出结果到excel

1、简介 灰狼算法跑跑21种真实世界优化问题|足球训练队优化算法跑21种真实世界优化问题||牛顿拉夫逊算法跑21种真实世界优化问题||冠状豪猪CPO跑21种真实世界优化问题。 ‘FTTA’,‘BWO’, ‘CPO’, ‘FHO’, ‘GWO’, ‘HHO’, ‘NRBO’,‘SCA’,‘SGA’,WOA’跑21种真实世…

Python爬虫-报错requests.exceptions.SSLError: HTTPSConnectionPool

在学习python爬虫&#xff0c;在公司运行代码没有问题&#xff0c;但是下班回来把代码拉下来运行&#xff0c;却出现问题。 问题&#xff1a; requests.exceptions.SSLError: HTTPSConnectionPool(host‘campusgateway.51job.com’, port443): Max retries exceeded with url…

如何用jmeter请求application/octet-stream,image/jpeg

用postman调用时&#xff1a; 用jmeter&#xff1a; 注意上图不要勾选&#xff0c;不然会把所有的内容都以二进制传进去&#xff0c;我们不勾选只传二进制的图片内容&#xff0c;勾选了会把MIME类型、参数名称都转为二进制传进去。会报错。

MySQL-基本使用,数据类型,简单操作

1. 数据库概述 1.1 数据库(DatBase) 数据库&#xff0c;就是遵循一定数据格式的数据集合&#xff0c;可以认为他是对文件系统的改进。它解决了不同操作系统之间&#xff0c;数据格式的兼容性问题。也就是说&#xff0c;只要是同一个数据库的数据文件&#xff0c;即使从windows迁…