98.网游逆向分析与插件开发-网络通信封包解析-定位明文发送数据的关键函数

内容参考于:易道云信息技术研究院VIP课

上一个内容:项目需求与需求拆解

通过上一个内容有了对网络通信架构有一个简单认识了解,对于我们重要的点是 组织数据 到 加密数据之间的过程,这个过程的数据我们是可以看懂的,加密之后的数据我们就看不懂了

通过聊天系统来下手,聊天系统可以指定内容,也就是明文的内容是可以指定的

然后数据包里除了要发送的明文以外还有几个重要的东西:

发送数据的内容里会有数据包的地址,然后不可能把这个地址后面的数据全部发送

所以有两点第一点有一个指针并且指向数据包,第二点有一个是数据包的长度,指针和长度是成对出现的

首先来到WSASend函数打断点,然后在游戏聊天框里发送一个消息,让它断下来

98.网游逆向分析与插件开发-网络通信封包解析-定位明文发送数据的关键函数_第1张图片

然后ctrl + f9再按f8,来到了下图位置,很明显这里不是我们要找的

98.网游逆向分析与插件开发-网络通信封包解析-定位明文发送数据的关键函数_第2张图片

然后ctrl + f9再按f8,然后来到下图位置,然后按f9,这时要确保所有的断点都取消,然后在下图打了断点的位置打断点,然后再次在游戏中的聊天框发送一个消息,看看它的栈有没有我们的消息

98.网游逆向分析与插件开发-网络通信封包解析-定位明文发送数据的关键函数_第3张图片

很明显,它没有,然后把这里的断点取消掉

98.网游逆向分析与插件开发-网络通信封包解析-定位明文发送数据的关键函数_第4张图片

然后ctrl + f9再按f8,来到下图位置,这时还是确保除了下图位置的断点其余断点全部取消,

98.网游逆向分析与插件开发-网络通信封包解析-定位明文发送数据的关键函数_第5张图片

这时它的栈也还是没有我们的消息,然后把这里的断点取消掉

98.网游逆向分析与插件开发-网络通信封包解析-定位明文发送数据的关键函数_第6张图片

然后ctrl + f9再按f8,来到下图位置打断点,这时还是确保除了下图位置的断点,其余断点全部取消

98.网游逆向分析与插件开发-网络通信封包解析-定位明文发送数据的关键函数_第7张图片

然后在游戏中发送消息,触发断点,这时栈里还是没有明显的消息数据,但这时edx的值是一个指针,这个指针里的数据是我们的数据包了,所以我们现在所处的环节是组织完了数据,加密之前,但这并不是想要的,然后继续往上跟,看看还有没有更好的位置

98.网游逆向分析与插件开发-网络通信封包解析-定位明文发送数据的关键函数_第8张图片

然后ctrl + f9再按f8,来到下图位置打断点,确保其它断点全部取消

98.网游逆向分析与插件开发-网络通信封包解析-定位明文发送数据的关键函数_第9张图片

然后游戏中发送消息触发断点,这时可以在栈里看到我们的消息了,但是这个消息并不是现在断点处的函数里的

98.网游逆向分析与插件开发-网络通信封包解析-定位明文发送数据的关键函数_第10张图片

所以 ctrl + f9再按f8,来到下图位置打断点,确保其余断点全部取消

98.网游逆向分析与插件开发-网络通信封包解析-定位明文发送数据的关键函数_第11张图片

然后它还是一个组织完的数据

98.网游逆向分析与插件开发-网络通信封包解析-定位明文发送数据的关键函数_第12张图片

所以 ctrl + f9再按f8,这时只是返回没有触发断点,它都显示了我们的消息,可以直接定位了,它就是组织数据之前

98.网游逆向分析与插件开发-网络通信封包解析-定位明文发送数据的关键函数_第13张图片

然后游戏中触发断点,只看到了数据,但是并没看到数据从哪来

98.网游逆向分析与插件开发-网络通信封包解析-定位明文发送数据的关键函数_第14张图片

所以 ctrl + f9再按f8,来到下图位置,然后游戏发消息触发断点,这时确保其余断点全部取消

98.网游逆向分析与插件开发-网络通信封包解析-定位明文发送数据的关键函数_第15张图片

这里没有组织完的数据了,只有数据

98.网游逆向分析与插件开发-网络通信封包解析-定位明文发送数据的关键函数_第16张图片

所以下图位置是关键点,位置 0x914C2F

98.网游逆向分析与插件开发-网络通信封包解析-定位明文发送数据的关键函数_第17张图片

98.网游逆向分析与插件开发-网络通信封包解析-定位明文发送数据的关键函数_第18张图片

所以接下来只需要分析edi的是怎样来的,数据包里每个值都是什么意思就好了

然后现在有一个问题,就是上面的分析是一步一步通过分析栈里的明文数据详细去找,但是我们并不知道有多长的调用,如果调用很长的话,那会废很大的功夫,这时就有一个快捷的技巧,首先我们来做的话,肯定是写一个通用函数,这个通用函数是可以把参数进行加密和发送数据的,既然是参数那么它一定在栈里,如果 a =》 b =》c =》d =》e =》f =》Send,这样的调用逻辑,我们要的数据是从b开始通过参数传递的,这时有一个知识点,在Send函数执行完之前,b函数里的局部变量或者栈里的参数并不会释放,每个函数的栈都是紧挨着的,所以可以直接通过栈定位我们要找的函数,看下图

这时断到WSASend函数上

98.网游逆向分析与插件开发-网络通信封包解析-定位明文发送数据的关键函数_第19张图片

然后看它的栈,往下翻找到游戏中发送的聊天数据的第一次出现的位置

98.网游逆向分析与插件开发-网络通信封包解析-定位明文发送数据的关键函数_第20张图片

然后选择下图

98.网游逆向分析与插件开发-网络通信封包解析-定位明文发送数据的关键函数_第21张图片

这样就快速定位到了

98.网游逆向分析与插件开发-网络通信封包解析-定位明文发送数据的关键函数_第22张图片

你可能感兴趣的:(网络,网游逆向,逆向)