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

17.第二阶段x86游戏实战2-线程发包和明文包

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

本次游戏没法给

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

本人写的内容纯属胡编乱造,全都是合成造假,仅仅只是为了娱乐,请不要盲目相信。

工具下载:

链接:https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd=6tw3

提取码:6tw3

复制这段内容后打开百度网盘手机App,操作更方便哦

上一个内容:16.第二阶段x86游戏实战2-发包函数和怎么去找改写过的发包函数

上一个内容中写了send、sendto、WSASend、WSPSend发包函数和逆向的时候怎么找它们,本次就开始找此游戏明文发包位置

打开游戏打开OD,OD并附加到游戏

OD附加到游戏之后按CTRL+G,输入下图红框的内容 ws2_32.send,然后点OK跳转到send函数中,OD第一个打开需要CTRL+G两次

然后就跳转到了下图位置,send函数开始的位置

然后在游戏聊天框里输入一段内容

然后单击下图红框位置,也就是send函数的第一行

然后游戏中会有很多数据包,为了避免被干扰,有一个技巧,鼠标移动到游戏中发送消息的按钮上,然后按F2,F2是OD的打断点快捷键,按了F2打了断点之后鼠标快速点击游戏中发送消息按钮,这样可以0失误的通过发送聊天数据断在send函数上,如下图,下图红框是聊天内容数据,31是Unicode编码它表示数字1,可以看到这个游戏给服务器发送的数据没有加密(调用了send函数数据就会通过网络发送出去所以一般加密是在调用send函数之前)

然后使用Send函数一般会配合多线程使用,不要管什么意思记着就行,使用了多线程在send函数中打断点按CTRL+F9是无法找到功能的,比如上方是通过发送聊天数据触发的断点,在send函数中打断点然后按CTRL+F9是无法找到发送聊天数据的这个功能的代码的

然后下图红框位置是send函数要发送的数据,也就是数据包(封包),它是一个内存地址,可以看到不管怎么运行这个内存地址都不会变,这是因为它有两个线程,一个线程用来给这个内存地址里写数据,一个线程用来从这个内存地址里读数据发送数据,所以我们找的应该是给内存地址写数据的那个线程里的代码

然后选择数据窗口跟随

然后下一个硬件写入断点

然后它就会断下来,现在断下来的位置就是给内存地址写数据的地方

然后点击下图红框位置删除断点,如果下了硬件写入断点没有反应那就检查下图绿框里的地址是否正确,如果不正确删除断点重新打硬件写入断点

删除之后按CTRL+F9,如下图第一层

CTRL+F9,如下图第二层

CTRL+F9,如下图第三层

CTRL+F9,如下图第四层

CTRL+F9,如下图第五层

CTRL+F9,如下图第六层,按六层左右或按到CTRL+F9没反应了位置就不要按了

然后来到第三层,按键盘上的-(减号)就可以恢复按CTRL+F9之前的位置,来到第三层

来到第三层之后打断点,打了断点之后回到游戏做一个会发送数据包的事,比如走路、发送聊天数据,然后发现下图断点位置不管走路还是发送聊天数据都会断下来,所以再来到第四层

怎么回到第四层?如下图红框,如果写了内容

选择用户自定义的注释

然后根据注释列选择,找到那一行直接用鼠标双击就可以跳转过去了

在第四层打断点,然后会发现走路、发送聊天数据不会断下来了,所以0x00CA8B90函数是游戏写数据包内容的函数,也就是第三层才是我们要找的游戏发送数据包函数

然后这个游戏重启内存地址会变化,所以这里要计算一下偏移,这个函数在Game模块中

它的偏移,公式 Game模块基址+0x288B90的位置是发送数据包函数


img


http://www.kler.cn/news/324423.html

相关文章:

  • Python近红外光谱数据分析
  • 几个将ppt文件压缩变小的方法!
  • [CKA]CKA预约和考试
  • 产品包装检测系统源码分享
  • OpenGL ES简述(1)
  • 如何使用 WebRTC 获取摄像头视频
  • 组播基础-2-IGMP协议
  • ★ C++进阶篇 ★ map和set
  • 个人健康管理小程序(源码+参考文档+定制)
  • python中序列化和反序列化
  • 一步一步优化一套生成式语言模型系统
  • docker简介、安装、基础知识
  • 基于webComponents的纯原生前端框架
  • Xcode 16 上传AppStore遇到第三方库 bitcode 的问题
  • Python爬虫bs4基本使用
  • Java编程基础:类与对象的探索之旅
  • C++学习笔记----8、掌握类与对象(一)---- 对象中的动态内存分配(6)
  • 【球形空间产生器】
  • 解决 Java 中由于 parallelStream 导致的死锁
  • BUG项目管理
  • 【MAC】安装realsense
  • HttpServletRequest简介
  • 美团中间件C++一面-面经总结
  • 25维谛技术面试最常见问题面试经验分享总结(包含一二三面题目+答案)
  • 基于两分支卷积和 Transformer 的轻量级多尺度特征融合超分辨率网络 !
  • 如何组织一场考试并筛选未参加答题的考生?
  • 搜索:如何用 A*搜索算法实现游戏中的寻路功能?
  • Python脚本示例,你可以使用这个脚本来自动化登录网站、选择页面元素和提交表单
  • 『网络游戏』GoLand服务器框架【01】
  • 第 2 章:Vue 组件化编程