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

news/发布时间2024/5/15 3:39:31

内容参考于:易道云信息技术研究院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.bcls.cn/kJlW/3689.shtml

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

相关文章

2024年 最新python调用ChatGPT实战教程

2024年 最新python调用ChatGPT实战教程 文章目录 2024年 最新python调用ChatGPT实战教程一、前言二、具体分析1、简版程序2、多轮对话3、流式输出4、返回消耗的token 一、前言 这个之前经常用到,简单记录一下,注意目前chatgpt 更新了,这个是最新版的&am…

k8s学习(RKE+k8s+rancher2.x)成长系列之简配版环境搭建(四)之Helm及cert-manager安装

安装Helm(三台都安装) 下载helm安装包并加入执行目录 tar zxf helm-v3.2.4-linux-amd64.tar.gz cd linux-amd64 cp helm /usr/bin/ helm version添加rancher稳定版仓库(三台都安装) helm repo add rancher-stable http://rancher-mirror.oss-cn-beijing.aliyuncs.com/serve…

CSS 字体和文本详解

CSS 字体和文本详解 字体设置 如果字体名有空格,使用引号包裹。建议使用常见字体, 否则兼容性不好。字体名称可以用英文,也可以用中文, 推荐使用英文。 示例代码: 运行结果: 字体大小 不同的浏览器默认字号不一样,…

华清远见嵌入式学习——驱动开发——day9

目录 作业要求: 作业答案: 代码效果: ​编辑 Platform总线驱动代码: 应用程序代码: 设备树配置: 作业要求: 通过platform总线驱动框架编写LED灯的驱动,编写应用程序测试&…

MariaDB落幕和思考

听过MySQL的基本也都知道 MariaDB。MariaDB由MySQL的创始人主导开发,他早前曾以10亿美元的价格,将自己创建的公司MySQL AB卖给了SUN,此后,随着SUN被甲骨文收购,MySQL的所有权也落入Oracle的手中。传闻MySQL的创始人担心…

sql面试题--业务培训(一)

题目 为管理业务培训信息,现需建立3个表: 表S(S#,SN,SD,SA)S#,SN,SD,SA分别代表学号,学员姓名,所属单位,学员年龄、 表C(C#,CN)C#,CN分别代表课程编号,课程名称 表SC(S#,C#,G)S#,C#,G分别代表学号&#xf…

Excel 面试题及答案(2)

一、VLOOKUP+IF案例: A1 :根据左侧数据源,按姓名匹配《职级》,仅限用函数,不能做任何辅助A2 :根据左侧数据源,按姓名匹配《部门》,仅限用函数,不能做任何辅助A3 :根据右侧考核规则,匹配《绩效比例》,用函数完成(可适当做辅助的单元格区域) =VLOOKUP(F8,IF({1,0},…

Docker的常用命令

Docker 常用的命令整理一下供大家参考 1、Docker Run 启动一个新的容器。可以通过指定镜像、容器名、端口映射等参数启动运行容器。 例子: docker run -d -p 8080:80 --name mynginx nginxdocker run -it centos /bin/bash 这个命令会启动一个名为mynginx的容器…

PyTorch基础:Tensor类型张量的构建与相互转换

PyTorch基础:Tensor类型张量的构建与相互转换 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程 👈 希望得到您的订…

反序列化 [NPUCTF2020]ReadlezPHP1

打开题目 直接查看源代码 打开源代码发现了个./time.php?source 访问一下 审计代码: 现存在反序列化语句:$ppp unserialize($_GET["data"]);和执行漏洞:echo $b($a); 发现在__destruct()方法里面有 echo $b($a); 这个是php的…

即时设计和sketch对比

在设计领域,有很多易于使用的设计软件,每个软件都有自己的特点,但在使用中也会有一些限制。例如,传统的Sketch。Sketch是一款古老的UI设计软件。自2010年推出以来,已有10多年的历史,但它始终仅限于MAC。到目…

C++中的STL数据结构

内容来自:代码随想录:哈希表理论基础 1.常见的三种哈希结构 当我们想使用哈希法来解决问题的时候,我们一般会选择如下三种数据结构 数组 set (集合) map(映射) 在C中,set 和 map 分别提供以下三种数据结构…

抖音短视频:表情包账号的魅力与运营之道以及制作与工具

在短视频的浪潮中,抖音以其独特的创意和趣味性成为了年轻人的最爱。其中,表情包账号更是凭借其生动、形象的表现方式,赢得了众多用户的青睐。本文将深入探讨抖音短视频表情包账号的魅力所在以及如何有效运营。 一、表情包账号的独特魅力 情…

最新授权系统源码,代理分销,盗版检测,盗版密码查看

级授权源码 – 高价值企业授权系统,内含授权系统、代理分销、工单系统和盗版检测功能 功能简介: 1、网站管理:包括基本管理、系统设置、公告设置、接口设置、价格设置和下载设置等。 2、内容管理:包括文章管理和广告轮图管理&am…

台式电脑电源功率越大越费电吗?装机选购多少W电源

要组装一台电脑,我们首先需要选择硬件。 硬件搭配最关键的一点就是CPU和主板的兼容性。 硬件、电源等之间的平衡都需要仔细考虑。 那么台式电脑电源多大功率合适呢? 下面分享组装电脑电源瓦数选购指南,教您正确选择合适的电源瓦数。 让我们来…

day02_java基础_变量_数据类型等

零、今日内容 1 HelloWorld程序 2 idea使用 3 变量 4 数据类型 5 String 一、复习 班规班纪。。。。。 安装jdk JDK 是开发工具 JRE 是运行代码 JDK包含JRE 配置环境变量 二、HelloWorld程序 前提:JDK已经安装配置完毕,有了这些环境就敲代码 代码…

程序环境和预处理(1)

文章目录 目录1. 程序的翻译环境和执行环境2. 详解编译链接2.1 翻译环境2.2 编译本身也分为几个阶段2.3 运行环境 3. 预处理详解3.1 预定义符号3.2 #define3.2.1 #define 定义标识符3.2.2 #define 定义宏3.2.3 #define 替换规则3.2.4 #和##3.2.5 带副作用的宏参数3.2.6 宏和函数…

解锁服务器外联:TinyProxy一键搭建指南

引言 在服务器需要访问外网的情况下,由于网络安全等原因,许多生产服务器限制了对外网的访问。本文介绍如何通过在一台能够访问外网的服务器上部署TinyProxy来实现代理,使得其他服务器可以通过该代理访问外网。 安装 TinyProxy是一个轻量级…

【群智能算法转让】一种新的群智能算法||一种超越隐喻的元启发算法||一种基于数学的群智能算法

1、简介 本次全新出推出一个新的基于种群的元启发算法,基于数学中求解非线性方程组的基本思想而开发的,性能不错 新算法转让Q1 top级(一种基于数学的超越隐喻的元启发式算法) 新的群智能算法转让,新的元启发式算法转…

离散化学习笔记(超详细)

离散化学习笔记 什么是离散化 对于“什么是离散化”,搜索帖子你会发现有各种说法,比如“排序后处理”、“对坐标的近似处理”等等。哪个是对的呢?哪个都对。关键在于,这需要一些例子和不少的讲解才能完全解释清楚。 离散化是程序…
推荐文章