游戏线程发包原理

yx 技术探讨1 233,2669字数 684阅读2分16秒阅读模式

a.1 什么是线程循环发包

线程发包是指在游戏一个循环线程中进行发送函数的封包。
在分析不同游戏的时候发现有的游戏 bp sead进行发包函数断点后
OD中按下Alt+K健查看堆栈返回信息列表时,发现自己明明是进行不同的动作发包断点游戏被断下后,堆栈返回信息却发现每次都是一样的信息这种情况!

这是因为遇见的这种情况的游戏,它采用的发包方式,这种发包方式情况不像“流线型发包”方式,而是采用线程循环中发包。文章源自楠竹林-https://www.nanzl.com/archives/143

一般的游戏发包过程大致如下文章源自楠竹林-https://www.nanzl.com/archives/143

游戏线程发包原理文章源自楠竹林-https://www.nanzl.com/archives/143

游戏采用这种线性发包方式,只需要先bp send 进行系统发包 断点 游戏里操作完断下后只需要ctrl+f9直接返回每一层即可到达想要找的关键动作 功能 CALL 。这种发包方式的游戏CALL很容易找,例如武林外传和诛仙2。文章源自楠竹林-https://www.nanzl.com/archives/143

现在很多老游戏和新游戏都采用了一种新的发包方式“线程循环发包”,这种发包方式。用“线型发包”方式已经无法找到。文章源自楠竹林-https://www.nanzl.com/archives/143

现在普遍很多新游戏发包过程大致如下文章源自楠竹林-https://www.nanzl.com/archives/143

游戏线程发包原理
这种线程循环发包与真正的功能CALL是独立的,所以如果要分析这种方式发包的游戏就得从发包的数据跟随找数据来源。文章源自楠竹林-https://www.nanzl.com/archives/143

文章源自楠竹林-https://www.nanzl.com/archives/143

a.2 线程发包CALL分析方法

先了解下系统ws2_32.dll 库里的 send 函数结构
游戏线程发包原理文章源自楠竹林-https://www.nanzl.com/archives/143

再来看一下此函数在OD中的反汇编
游戏线程发包原理文章源自楠竹林-https://www.nanzl.com/archives/143

再看看OD堆栈窗口
游戏线程发包原理文章源自楠竹林-https://www.nanzl.com/archives/143

因为我们要从数据的来源分析,所以就需要跟着 send函数的data参数开始着手分析。文章源自楠竹林-https://www.nanzl.com/archives/143

--------------------------------------------------------------------------
“天龙八部”就是采用这种线程循环发包方式的游戏。现在拿它演示一下。文章源自楠竹林-https://www.nanzl.com/archives/143

喊话动作断下后的 堆栈 列表信息文章源自楠竹林-https://www.nanzl.com/archives/143

游戏线程发包原理文章源自楠竹林-https://www.nanzl.com/archives/143

选怪动作断下后的 堆栈 列表信息
游戏线程发包原理文章源自楠竹林-https://www.nanzl.com/archives/143 文章源自楠竹林-https://www.nanzl.com/archives/143

yx