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

内容参考于:易道云信息技术研究院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,就完了

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

前端学习——JS学习

文章目录 1. 定义变量,关键字 var、let、const2. 定义变量,数据类型3. 数组变量的操作4. 对象的操作5. JSON 字符串 1. 定义变量,关键字 var、let、const 这里主要是对var、let做比较 /** 1. var存在变量提升、let不存在变量提升 **/ cons…

袁庭新ES系列10节 | 使⽤kibana对⽂档操作

前言 在前面的小节中,我们已经给大家介绍了Elasticsearch中文档的相关概念,想必有些同学都已经忘记了,那我们一块儿再来回顾下,文档即索引库中某个类型下的数据,会根据规则创建索引,将来用来搜索。可以类比…

政安晨:【示例演绎机器学习】(一)—— 剖析神经网络:学习核心的Keras API

打开这篇文章,相信您已经了解了TensorFlow的一些基础知识,可以用它从头开始实现一个简单模型。 如果您对这些概念还不是太清晰,可以浏览一下我这个栏目中的相关文章: 政安晨的机器学习笔记http://t.csdnimg.cn/DHcyL 尤其是其中…

学习JAVA的第二天(基础)

目录 基本概念 关键字 class关键字 字面量 练习 变量 定义格式 变量使用 数据类型 基本数据类型 标识符 命名规则 键盘录入 1.导包 2.创建对象 3.接受数据 运算符 算术运算符 练习 隐式转换(自动类型提升) 强制转换 自增自减运算符 …

【AIGC】大语言模型

大型语言模型,也叫大语言模型、大模型(Large Language Model,LLM;Large Language Models,LLMs) 什么是大型语言模型 大型语言模型(LLM)是指具有数千亿(甚至更多&#xf…

Openstack云计算框架及前期服务搭建

openstack介绍 Openstack是一个开源的云计算管理平台项目,由几个主要的组件组合起来完成具体工作,支持几乎所有的云环境,项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台 ----百度百科 Openstack是一个云操作系统&a…

可视化 RAG 数据 — EDA for Retrieval-Augmented Generation

目录 一、说明 二、准备好 三、准备文件 四、拆分和创建数据集的嵌入 五、构建 LangChain 六、问一个问题 七、可视化 八、下一步是什么? 九、引用 一、说明 像 GPT-4 这样的大型语言模型 (LLM) 在文本理解和生成方面表现出令人印象深刻的能力…

太阳能光伏电池模型参数辨识模型介绍

一、太阳能光伏电池模型参数辨识模型介绍 由于传统化石能源短缺问题日益严重,我国对新能源发展的重视提到了前所未有的高度。太阳能作为一种可再生能源,不会对环境造成污染,受到了越来越多的关注太阳能由于其储量丰富,无污染和无地域限制等优…

计算机网络面经-TCP三次握手一文说清

目录 说一下TCP的三次握手? 为什么要三次握手?两次行不行?四次呢? 为什么建立连接是三次握手,关闭连接确是四次挥手呢? TCP四次挥手的过程? 如果已经建立了连接,但是客户端突然出…

Java零基础 - 条件运算符

哈喽,各位小伙伴们,你们好呀,我是喵手。 今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一个人虽可以走的更快,但一群人可以走的更远。 我是一名后…

How to implement multiple file uploads based on Swagger 3.x in Spring boot 3.x

How to implement multiple file uploads based on Swagger 3.x in Spring boot 3.x Projectpom.xmlOpenAPIConfigFileUploadControllerapplication.yaml Project pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://…

实现外网手机或者电脑随时随地远程访问家里的电脑主机(linux为例)

文章目录 一、背景概要二、安装配置花生壳软件(linux版本)三、手机端(外网)验证连接四、安装ubuntu20server版系统遇到的问题记录 一、背景概要 由于经常在遇到某些问题的时候&#xff0c;针对某一个场景的理解&#xff0c;需要借助于自己的电脑去编译(aosp/linux/qemu)代码查…

2023全新UI最新自助打印系统/云打印小程序源码 PHP后端 附教程

应用介绍 本文来自&#xff1a;2023全新UI最新自助打印系统/云打印小程序源码 PHP后端 附教程 - 源码1688 简介&#xff1a; 2023全新UI最新自助打印系统/云打印小程序源码 PHP后端 附教程 图片&#xff1a; ©软件著作权归作者所有。本站所有软件均来源于网络&#xff…

【C++STL】STL容器详解

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;c系列专栏&#xff1a;C/C零基础到精通 &#x1f525; 给大…

基于MATLAB优化的多焦点相位

1、概要 目前智能手机的显示屏得益于机械或化学性能的稳定&#xff0c;让这些手机非常耐用&#xff0c;显示屏具有足够硬度使其可以承受住很大的压力&#xff0c;甚至多年使用下来都没有磨损迹象。 但是另一方面&#xff0c;材料的硬度通常伴随着脆性&#xff0c;手机的屏幕玻…

无公网IP情况下如何远程查看本地群晖NAS存储的文件资源

文章目录 前言本教程解决的问题是&#xff1a;按照本教程方法操作后&#xff0c;达到的效果是前排提醒&#xff1a; 1. 搭建群晖虚拟机1.1 下载黑群晖文件vmvare虚拟机安装包1.2 安装VMware虚拟机&#xff1a;1.3 解压黑群晖虚拟机文件1.4 虚拟机初始化1.5 没有搜索到黑群晖的解…

4.寻找两个正序数组的中位数

题目&#xff1a;给定两个大小分别为 m 和 n 的正序&#xff08;从小到大&#xff09;数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。 解题思路&#xff1a;用二分法查找。使用归并的方式&#xff0c;合并两个有序数组&#xff0c;得到一个大的有序数组。大的…

LeetCode 热题 100 | 二叉树(一)

目录 1 基础知识 1.1 先序遍历 1.2 中序遍历 1.3 后序遍历 2 94. 二叉树的中序遍历 3 104. 二叉树的最大深度 4 226. 翻转二叉树 5 101. 对称二叉树 菜鸟做题&#xff0c;语言是 C 1 基础知识 二叉树常见的遍历方式有&#xff1a; 先序遍历中序遍历后序遍历…

C#,动态规划(DP)模拟退火(Simulated Annealing)算法与源代码

1 模拟退火 *问题:**给定一个成本函数f:r^n–>r*&#xff0c;找到一个 n 元组&#xff0c;该元组最小化 f 的值。请注意&#xff0c;最小化函数值在算法上等同于最大化(因为我们可以将成本函数重新定义为 1-f)。 很多有微积分/分析背景的人可能都熟悉单变量函数的简单优化。…

Python读取.nc数据并提取指定时间、经纬度维度对应的变量数值

本文介绍基于Python语言的netCDF4库&#xff0c;读取.nc格式的数据文件&#xff0c;并提取指定维&#xff08;时间、经度与纬度&#xff09;下的变量数据的方法。 我们之前介绍过.nc格式的数据&#xff0c;其是NetCDF&#xff08;Network Common Data Form&#xff09;文件的扩…