如何通过WPE包修改网游数据?
首先,我们将WPE截获的数据包保存为文本文件,然后打开它。这时我们会看到以下数据(这里以传说中PK archer客户端发送的数据为例进行说明):第一个文件:SEND-& gt;0000 E6 56 0D 22 7E 6B E4 17 13 13 12 13 12 13 67 1b send->;0010 17 12 DD 34 12 12 12 17 12 0E 12 12 12 12 12 12 12 9BSEND->;0000 E6 56 1E f 1 29 06 17 12 3B 0E 17 1a send->;0000 E6 56 1B C0 68 12 12 12 5a send->0000 E6 56 02 C8 13 C9 7E 6B E4 17 10 35 27 13 12 12 send->;0000 E6 56 17 C9 12第二个文件:SEND->0000 83 33 68 47 1B 0E 81 72 76 76 77 76 76 02 7 esend->0010 72 77 07 1C 77 77 77 77 72 77 72 72 77 77 6 dsend->0000 83 33 7B 94 4C 63 72 77 5E 6B 72 F3 send->0000 83 33 7E A5 21 77 77 3f send->0000 83 33 67 AD 76 CF 1B 0E 81 72 75 50 42 76 77 77 send->0000 83 33 72 AC 77我们发现两个PK弓箭手的数据格式是一样的,只是内容不同。我们是PK的NPC。为什么会不一样?原来传说中的数据包是经过加密运算后在网络上传输的,所以我们面临的问题是如何将密文解密成明文,然后进行分析。因为一般的数据包加密都是异或运算,所以我们先说说什么是异或。简单来说,XOR就是“同为0,不同为1”(这是针对二进制逐位的)。比如0001和0010异或,我们逐位比较,异或结果是0011,计算方法是:0065438。那么异或结果的第四位是0,0,0001的第三位是0,0,0010的第三位是0,按照“同为0,不同为1”的原则,异或结果的第三位是0,0010。0001的1位是1,0010的1位是0,所以异或结果的1位得到1,也就是0011。异或运算以后会遇到很多,可以先熟悉一下,对分析很有帮助。我们继续看上面两个文件。按照常理,数据包里的数据不会全是有价值的。游戏开发的时候会预留一些字节空间给以后的扩展,也就是说数据包里会有一些“00”字节。观察以上文件,会发现第一档有很多“12”,第二档有很多“77”。这是不是意味着我们说的是“00”?推理到这里,我们开始行动吧!我们将第一个文件与“12”进行异或运算,将第二个文件与“77”进行异或运算。当然,手工计算很麻烦。我们用“M2M 1.0加密包分析工具”来计算就方便多了。得到如下结果:第一个文件:1 SEND-& gt;0000 F4 44 1F 30 6C 79 F6 05 01 01 00 01 00 01 75 09 send->;0010 05 00 CF 26 00 00 00 00 05 00 1C 00 00 00 00 892发送->0000 F4 44 0C E3 3B 13 05 00 29 1C 05 083发送->;0000 F4 44 09 D2 7A 00 00 00 484发送->;0000 F4 44 10 DA 01 DB 6C 79 F6 05 02 27 35 01 00 005发送->;0000 f44 05db 00 second file:1 SEND-& gt;0000 F4 44 1F 30 6C 79 F6 05 01 01 00 01 00 01 75 09 send->;0010 05 00 70 6B 00 00 00 00 00 05 00 05 00 00 00 1 a2发送->;0000 F4 44 0C E3 3B 13 05 00 29 1C 05 843发送->;0000 F4 44 09 D2 56 00 00 00 484发送->;0000 F4 44 10 DA 01 B8 6C 79 F6 05 02 27 35 01 00 005发送->;0000f44 05db00 Ha,现在两个文件大部分是一样的,说明我们的推理是正确的,以上就是我们需要的明文!接下来就是找出一些关键字节的含义,这就需要截取大量的数据进行分析。首先,我们会发现每个包都是以“F4 44”开头的,第三个字节是变化的,但是变化是很有规律的。让我们来看看每个包的长度。你发现什么了吗?对了,第三个字节是包的长度!通过拦截大量的数据包,我们判断第四个字节代表一个指令,也就是客户端告诉服务器做什么。例如,向服务器请求的战斗指令是“30”,而战斗中的移动指令是“D4”。接下来需要分析第一个包“F4 44 65438+f 0306 c 79 f 605 01 01 0001 75 09 0500 CF 26 00000000 005 000 1 000 0000089”。应该有一个NPC通知服务器你的PK,那我们先找找这个店员的代码在哪里。让我们来PK一把黑道派-& gt;0000 F4 44 1F 30 D4 75 F6 05 01 00 01 00 01 00 01 75 09 send->;001005008 a 19000001100200000 c0根据常识分析,虽然游戏中NPC的种类不会超过65535(FFFF),但是他们在开发时不会把自己限制在单词的范围内,不利于游戏的扩展,所以我们会用双字来看。通过对比“Archer”和“Mob”两个包,我们重点关注“6C 79 F6 05”和“CF 26 00 00”。比较容易,但是不能太慢,呵呵。