【游戏逆向】逆向基础之发包函数和线程发包

|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 网络游戏是需要服务器的,这样才能玩家之间,服务器和玩家之间进行通信。 所以,我们的很多动作,都是要向服务器发包的,那么我们只要能够锁定正确的发包函数,就能很容易的通过调用关系找到该动作的函数,以实现调用的目的。 当然并不是所有动作都会发包,例如打开包裹,这样动作只要我们自己知道就可以了,不需要其他玩家或则服务器知道,那么就不需要发包。 API中有三大发包函数分别是 send sendto和WSASend 如果我们是游戏开发者,不考虑破解风险以及外挂风险的话,我们会毫不犹豫的选择其中之一使用。 因为谁也不想干些徒劳的事情,但是正如之前所说,网游都需要发包,那么外挂制作者都知道这一点,只要对这三个发包函数下断,几乎可以拿到所有想要的功能函数,所以,现在的游戏公司大多都会重新实现发包函数。 那么,重新实现的发包函数又怎么查找呢?其实并不困难 方法一,无论发包函数怎么重新实现,结构,特征都是不会发生太大的变化的,只要搜索其特征码即可,当然这样的工作量并不小,一是我们并不确定其所在的模块是什么?那么挨个实验?太苦恼了。二是我们不知道,他用的这三个中的哪一个,那么挨个实验?苦恼*2! 方法二,send sendto和WSASend三个函数内部都会调用更内层的系统函数WSPSend,那么我们只要找到WSPSend 就可以对其下断,然后返回到真正的发包函数了,WSPSend怎么找呢?我们可以找一个简单的程序,例如直接用send发包的函数,在send函数内的第一个虚表函数上下断,断下以后F7进去就是WSPSend了,是不是很简单呢?当然,这个函数也有可能被破坏或则下钩子之类的,那么特征吧。。。更内层函数吧。。。没有他法了。 方法三,通过人物喊话等频繁拷贝内存的动作,找到一些关键的缓冲区,而实现直接找到明文发包函数的位置,如果得到明文发包函数还是不够,通过明文发包正向追踪发包函数还是比较麻烦的,这个以后会专题讲解。 找到了发包函数,就万事大吉了吗?还没有,这只是第一关,还有第二关,找到了发包函数,有时候我们发现,他并不能断到功能函数,无论什么动作,堆栈返回都是一样的,怎么也返回不到功能函数,这种情况往往就是线程发包。 那么我们来看看线程发包又是怎样的情况 以图来说明 知道原理,处理方法就很简单了。 追踪包内容的来源或则改写发包标志位的位置即可, 因为标志位的改写和包内容的来源一定是线程以外的,只要找到这些位置,那么我们也必然是跳出了线程。那么所有功能函数唾手可得。 |

相关推荐
AA陈超1 天前
虚幻引擎5 GAS开发俯视角RPG游戏 P05-08 UI 部件数据表
c++·游戏·ue5·游戏引擎·虚幻
向宇it1 天前
【unity实战】MapMagic 2实战例子
游戏·3d·unity·c#·游戏引擎
串流游戏联盟2 天前
steam新品节游戏推荐!手机怎么玩steam游戏!
游戏·远程工作
麦麦大数据2 天前
F029 vue游戏推荐大数据可视化系统vue+flask+mysql|steam游戏平台可视化
vue.js·游戏·信息可视化·flask·推荐算法·游戏推荐
今夕资源网2 天前
牛童三国单机游戏Unity源码 免费开源
游戏·unity·单机游戏·游戏源码·unity源码·unity游戏
wanhengidc2 天前
云手机的多元功能应用
运维·服务器·网络·游戏·智能手机
嘀咕博客2 天前
h5游戏免费下载:《下一个数字》
游戏
wanhengidc3 天前
如何使用云手机进行游戏挂机?
运维·服务器·游戏·智能手机·云计算
Minecraft红客3 天前
火柴人遗产战争五
c++·游戏·青少年编程·电脑·娱乐
wanhengidc3 天前
操作简单稳定选巨 椰 云手机
运维·服务器·游戏·智能手机·云计算