免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动!
如果看不懂、不知道现在做的什么,那就跟着做完看效果,代码看不懂是正常的,只要会抄就行,抄着抄着就能懂了
内容参考于:易道云信息技术研究院
上一个内容:111.购买物品与拾取物品的方法封装
邮件系统主要的目标有两个,第一个可以看到收到了那些邮件,第二可以对邮件有一个操作能够自动的收邮件,自动发邮件
本次先看有哪些数据包,建立一个宏观的认识
首先是收邮件
打开邮件窗口
选择收信人
发送的内容
发送之前打开我们自己写的抓包工具(DataAnly.exe)
然后下图,今晚打老虎的客户端是,通过我们自己写的 tiStart.exe程序启动的
然后发送邮件,今晚打老虎就收到了邮箱
内容
然后数据包,首先根据内容搜索,如下图,第一步选中数据包列表中第一个数据,然后第二步点搜索,第三部写搜索的内容,第四步选数据类型,第五步搜索
搜索之后就找到了13数据包
翻译的数据包也正是邮件的内容,如下图,然后之前就没把13数据包搞出来,但是这次就必须要搞出来了,然后在 85.解析游戏结构数据包的内容 解了一张数据结构表
拆分13数据包,首先是48号结构体,它的名字是 RecvLetterRec
recv中文意思是收到
Letter中文意思是信
rec没找到中文,rec可能是某个单词的缩写,但是Letter与rec合起来有一个收到信件的意思,这就很明显了
接收信件数据包的拆分
然后发现它有一个序号,它这意思应该是通过这些序号去修改结构体
各自的意思
这个应该是一个校验码,我们不需要
邮件主题
邮件内容
还有一个xml格式的东西
这里面有时间
还有是否加急
还有下图,应该是转的物品数量或物品id的意思吧
金币,应该转的金币数量把
发邮件的人
现已知的说明
接收13数据包之前,有一个11数据包
11数据包拆分,11数据包初步猜测实际做了一个告诉游戏初始化内存(初始化一个48号结构体的操作)也就是创建一个结构,然后13数据包用来更新11创建的结构
然后它里面的4,我们邮件有5个 ,然后11和13里都有一个4,这说明4是邮件的索引,邮件有5个这说明,邮件的数量是从0开始数的
然后再看一个邮件
然后发现这个邮件是在29号数据包里初始化的,这个29之后用代码解析出来再看,它有点大
然后再发一个邮件,它就变成了05了,也就是第6个邮件,所以上方猜测是正确的,它是邮件的所以,13数据包就是更新第6个邮件的信息
然后29数据包拆分,与11数据包一样
下图中01 00 00 00 00,它对应的是一个ascii的字符串,ascii的字符串结尾是以一个0结尾的,但是为什么要搞成 01 00 00 00 00 这样?这没啥原因,数据包都是要靠猜测,如果不搞成 01 00 00 00 00 这样后面的没法拆了,它也只能这样拆才能对应到48结构体上,其余看着不合理的拆分也都是这个道理,都是猜测感觉它就要这样拆,没别的意思,也没别的好法子(逆向就是猜别人当时写代码的时候的心思)
29数据包里的字符串有长度,如下图的例子
打开邮件
打开邮件时会发送之前说它是校验码的东西
打开邮件之后会跟着一个15 24,所以15数据包又多了一个功能 24代表了更新邮件箱,然后后面跟着的13数据包与上方分析的一样
还会有18数据包,上方抓包时抓少了,下方又重新抓的(重新点开了一个位点开过的邮件)
然后收取附件
发送了一个350 8
还发送了一个350 4
然后看到13数据包,它显示把所有的邮件都更新了一次,然后单独更新了02邮件好几次(02邮件就是上方图中收取附件的那个邮件)
然后有一个 19 24 00 01 00,这个应该是告诉我们邮件的附件没有了
然后18数据包,这应该是告诉我们附件到了背包中了
删除邮件
数据包 350 5
关闭邮箱窗口时
会发送三个数据包
删除一个未领取附件的邮件时数据包是350 9
还会有一个12的数据包,初步猜测是告诉游戏客户端邮件没有了
12数据包的拆分
然后现在删下图红框的邮件,它的序号应该是4
它的内容是22222222
删除,确实是4
然后是发送邮件
发送邮件的数据包
还有两个数据包
一个是 350 6
一个是 350 0,它们俩应该是用来说明送邮件完成的数据包
然后现在就把邮件相关的数据包分析好了,分别是 接收、删除、发送、收取附件,但是现在不知道邮件最大的数量,然后我们写代码的肯定会用数组,然后就不知道数据的大小,可以用链表,然后还有邮件的序号的问题