G.国王族 官方论坛-广州游戏资讯网

标题: [原创]讨论一个研究新bug的思路 [打印本页]

作者: 水蓝    时间: 2009-1-1 11:20
标题: [原创]讨论一个研究新bug的思路
大家如果玩的时间比较长的话,会发现点红时如果突然断网肯定会失败
但是我觉得这个失败蕴含着一个恐怖的bug。。
正在研究中。 现在只是有大体想法,还没有具体的研究思路。。
[此贴子已经被GZGame于2009-1-4 20:19:12编辑过]

作者: 水蓝    时间: 2009-1-1 11:22

等我收大量的红进行这个bug的测试ing...
了解这个bug的触发条件,内存状态,网络状态,100%失败的原理


作者: 水蓝    时间: 2009-1-1 11:32
- -对了,不知道点水晶能不能搞出失败来。。
如果能研究出点水晶失败的方法,也算很大的进展。
作者: junjun105    时间: 2009-1-1 13:21

点下确定后的进度条,就是客户端向服务器发送数据包的时间,客户端默认是失败的,所以中途断线的话,就肯定失败


作者: 水蓝    时间: 2009-1-1 13:28

点下确定后的进度条,就是客户端向服务器发送数据包的时间,客户端默认是失败的,所以中途断线的话,就肯定失败
 ------------------------
刚才用水晶验证了下。。在点确定的时候就有数据包发出和接收,而在等待的进度条的时间内没有数据过来。。。
好像数据在点水晶的时候,进度条其实并没有意义的。。


作者: shizitoutao    时间: 2009-1-1 13:41
我感觉,长时间在线以后,点红钻很容易失败。如果长时间不在线,上线点红钻很容易成功。
作者: 水蓝    时间: 2009-1-1 13:45
以下是引用shizitoutao在2009-1-1 13:41:59的发言:
我感觉,长时间在线以后,点红钻很容易失败。如果长时间不在线,上线点红钻很容易成功。

同样的。。而且我感觉,如果钻石在仓库放的时间长,容易成功。 - -.
不过我现在没红,有这个想法之前我把红全卖掉了T T
继续打红研究中。


作者: 水蓝    时间: 2009-1-1 13:47
还有就是能不能通过修改,让合成进度条走快些。。
我想知道到底合成是不是周期的。
希望里面很多东西都是以10秒和60秒为周期的。
作者: shizitoutao    时间: 2009-1-1 16:16
加快进度条的目的是什么?
作者: junjun105    时间: 2009-1-1 16:32

水晶是客户端默认成功的,希望的合成成功率是按照周期计算的!


作者: lpg3511542    时间: 2009-1-1 16:48
我一般 我打会怪 回乐园1线逛半小时左右再点 基本上都成功~  但是别太贪心~  那次我点2把大剑都点到+9了没用黑白`` 还有次直接点10成功了` 但是太贪心`  点11暴了
作者: 会飞的猫    时间: 2009-1-1 18:26
那如果把红发送成水晶的资料呢- - 没有技术含量纯粹瞎猜
作者: 水蓝    时间: 2009-1-1 22:16
以下是引用shizitoutao在2009-1-1 16:16:23的发言:
加快进度条的目的是什么?

如果合成是周期的话,加快进度条可以在一个成功的时间段内点更多的宝石,就可以稳定的连续成功了。


作者: 水蓝    时间: 2009-1-1 22:19
以下是引用junjun105在2009-1-1 16:32:39的发言:

水晶是客户端默认成功的,希望的合成成功率是按照周期计算的!

虽然水晶是客户端默认成功的,但是在点水晶的时候还是往服务器端发送的数据,虽然我看不明白那个数据。
但是如果在网络比较卡的状态下,点开始是会出现小闹钟的。而且在出现小闹钟的时候断网。
会出现虽然点击的合成,但是重新上线后,水晶和装备都还在,没有进行合成的情况。
说明还是有网络数据交换的。


作者: 客人    时间: 2009-1-2 00:06
在做委托任务的时候,可以发现希望里面的数据确实是有时间周期的。
关于合成,有一种说法是,精炼的周期分成若干个时间段,每个时间段对应+4+5+6~+12
例如在+4的时间段合成+4必然成功。
对于这个说法我是持怀疑态度,不过seal里面的合成成功率,也不是单纯的随机数能够解释的。
猜测服务器对于一段时间内所有人的成功合成次数总数也是做了限制的。
作者: diviner542    时间: 2009-1-2 00:30
我点水晶试过失败,呵呵呵
一般人做不到,呵呵呵~
作者: shizitoutao    时间: 2009-1-2 02:34

我用水蓝的思路试验了一下,有一点小进展。
我发现合成相关的内存地址附近有两组4字节数据,前面一组是基本上每次上线的时候就定死了的,后一组是随时间改变。
后一组数据大于前一组数据的时候,成功几率较大,但并不是绝对成功。反之就几乎都是失败。。。
另外关于合成读条,可以直接锁定,点确认不会出现读条,但是合成已经完成了。
郁闷的是我那20个可怜的红,哎呦我这种穷人,突然少了1E多希尔,真是要命啊。。。。


作者: shizitoutao    时间: 2009-1-2 02:35
以下是引用diviner542在2009-1-2 0:30:15的发言:
我点水晶试过失败,呵呵呵
一般人做不到,呵呵呵~

点水晶失败很容易
把+4以上的道具改成+3,用水晶合成就失败了。


作者: 水蓝    时间: 2009-1-2 13:32
以下是引用shizitoutao在2009-1-2 2:34:28的发言:

我用水蓝的思路试验了一下,有一点小进展。
我发现合成相关的内存地址附近有两组4字节数据,前面一组是基本上每次上线的时候就定死了的,后一组是随时间改变。
后一组数据大于前一组数据的时候,成功几率较大,但并不是绝对成功。反之就几乎都是失败。。。
另外关于合成读条,可以直接锁定,点确认不会出现读条,但是合成已经完成了。
郁闷的是我那20个可怜的红,哎呦我这种穷人,突然少了1E多希尔,真是要命啊。。。。

感谢偷桃子的研究哈,我还没开始研究,今天才弄了两个红。
我想根据这个思路做一个合成指示器之类的东西。。
那个数据的地址我用了两个红,不过还没找到。
如果能找到合成的规律,就可以做合成指示器之类的东西饿。
还有,两组四字节的数据估计是浮点数,你拿金山V看看,那个浮点数是多少吧。
在希望里面,好像跟时间有关的都是浮点数。
- ----
还有点的是红。。基本亏不了多少吧- -

[此贴子已经被作者于2009-1-2 13:36:11编辑过]

作者: shizitoutao    时间: 2009-1-2 16:30
那两个个float是6.xxxxx到7.xxxxx,反正是很长一串。所以应该不是浮点型。可能是类似装备属性的哪种4字节,只承认特定的值,胡乱改的话,程序就报错直接关闭。
关于找那个地址,我的方法是:点开合成技能,把背包第一格的装备放进去,查8;把第二格的装备放进去,查9。目前可以确定这个地址是与合成技能相关的。
上面说的第一个四字节是上线以后固定不变的,其实今天发现,系统会在某个时间把那个值减少很多,大概1、2分钟时间,期间不论换哪个号上都一样。我大着胆子点了+7爪子,+8面具,成功了的,没用伦石。再点面具+9,爆掉了,再点开合成技能,发现第一个四字节的值已经变大了。目前这个理论规律还不成熟,昨天我以为会成功的+7也爆掉了,建议心理承受能力不佳者不要贸然尝试。
合成有风险,砸红需谨慎。
谁便宜卖我一个伦让我研究一下吧。
作者: shizitoutao    时间: 2009-1-2 16:39
考虑到以前改脚本远程,现在可以通过改内存达到效果,可能刷红也可以这样改。
可惜我的号还不够做任务的等级。。。
作者: xuan2008    时间: 2009-1-2 18:48

我的红很多。两仓库呢。都没卖,自己打的。。。偷桃和水蓝,我可以加入你们的研究。。。就是我是网通服的。。。怎么办。。


作者: 水蓝    时间: 2009-1-2 19:01
以下是引用xuan2008在2009-1-2 18:48:29的发言:

我的红很多。两仓库呢。都没卖,自己打的。。。偷桃和水蓝,我可以加入你们的研究。。。就是我是网通服的。。。怎么办。。

- -我也是网通的。我觉得如果能研究成功,公布出去回档的可能是100%的。
不过我现在有目标,但是思路比较乱。今天研究了一下午,损失了2000多W,没什么进展。
就知道合成装备拖入的框,跟物品栏无关而已。


作者: 水蓝    时间: 2009-1-2 19:06
以下是引用shizitoutao在2009-1-2 16:30:20的发言:
那两个个float是6.xxxxx到7.xxxxx,反正是很长一串。所以应该不是浮点型。可能是类似装备属性的哪种4字节,只承认特定的值,胡乱改的话,程序就报错直接关闭。
关于找那个地址,我的方法是:点开合成技能,把背包第一格的装备放进去,查8;把第二格的装备放进去,查9。目前可以确定这个地址是与合成技能相关的。
上面说的第一个四字节是上线以后固定不变的,其实今天发现,系统会在某个时间把那个值减少很多,大概1、2分钟时间,期间不论换哪个号上都一样。我大着胆子点了+7爪子,+8面具,成功了的,没用伦石。再点面具+9,爆掉了,再点开合成技能,发现第一个四字节的值已经变大了。目前这个理论规律还不成熟,昨天我以为会成功的+7也爆掉了,建议心理承受能力不佳者不要贸然尝试。
合成有风险,砸红需谨慎。
谁便宜卖我一个伦让我研究一下吧。

怎么知道要搜8和9呢?
我也不清楚这个原理,我想把合成和制作还有进化相关的原理搞清楚的,才能找到我想要的结果。
等明天我有点结果再讨论。
 


作者: shizitoutao    时间: 2009-1-2 19:39
之前我发帖提到过的,00-07是身上装备的格子,08到之后的是背包里的格子,因为是从00开始编号,估计这个是统一的系统编号,仔细看下内存能看出来的。可以确定很多和物品相关的技能,在使用的时候是要通过格子编号来提取服务器中的数据。
我也是网通服。
作者: shizitoutao    时间: 2009-1-2 19:44
按下鼠标拽动物品到合成框的过程中,会产生一个4字节数据,弹起鼠标后,数据回复成0,多次试验,同一物品产生的4字节数据相同。不知道这个过程中,客户端有没有向服务器发送数据。水蓝用什么工具查看数据包的,WPE?
作者: 水蓝    时间: 2009-1-2 21:01
以下是引用shizitoutao在2009-1-2 19:44:41的发言:
按下鼠标拽动物品到合成框的过程中,会产生一个4字节数据,弹起鼠标后,数据回复成0,多次试验,同一物品产生的4字节数据相同。不知道这个过程中,客户端有没有向服务器发送数据。水蓝用什么工具查看数据包的,WPE?

我用的是ethereal
是一个嗅探器,我们网络课实验用的开源软件。


作者: 水蓝    时间: 2009-1-2 21:03
以下是引用shizitoutao在2009-1-2 19:39:56的发言:
之前我发帖提到过的,00-07是身上装备的格子,08到之后的是背包里的格子,因为是从00开始编号,估计这个是统一的系统编号,仔细看下内存能看出来的。可以确定很多和物品相关的技能,在使用的时候是要通过格子编号来提取服务器中的数据。
我也是网通服。

我明白了 ,多谢。
对了,在拖动物品的时候是要发送数据包的。不过是放下之后才发送的。

[此贴子已经被作者于2009-1-2 21:10:50编辑过]

作者: 水蓝    时间: 2009-1-2 21:06
以下是引用shizitoutao在2009-1-2 19:44:41的发言:
按下鼠标拽动物品到合成框的过程中,会产生一个4字节数据,弹起鼠标后,数据回复成0,多次试验,同一物品产生的4字节数据相同。不知道这个过程中,客户端有没有向服务器发送数据。水蓝用什么工具查看数据包的,WPE?

我刚刚PM了你一下,告诉你我的研究目标的。


作者: xuan2008    时间: 2009-1-3 01:39
ethereal I used a lot before...
作者: xuan2008    时间: 2009-1-3 01:56

我的红为你们准备着。。我们等待那一天,胜利的那一天。。
内存遍历器会有帮助吗?
今儿找到一个好玩的。


作者: xxx    时间: 2009-1-3 10:17

那你最好能截取到返回的数据包


作者: 水蓝    时间: 2009-1-3 15:32
截取了一部分返回数据包。。
又用了4个红T T
今天没红了,研究停止。
成果是希望的数据包没有做任何加密。
能看到内容。
+3和+4成功返回的数据包内容基本一致。
里面直接包含了合成物品的结果,是明文的。
比如合成+4 高学成功,返回的包的内容有 6f 18 00 04
就是高学的编码和合成结果+4.

还发现如果在网络状况不好的情况下。合成指令的数据包会连发两次。
如果两次都返回成功,则成功,如果有一次成功,有一次失败,则失败。。
说明大家最好在网络好的情况下合成装备。

作者: 水蓝    时间: 2009-1-3 15:39
还有一个小成果是,合成装备的结果其实在点下合成按钮的0.12秒以内就已经由服务器返回,后面的等待纯粹是客户端在浪费时间。
作者: xuan2008    时间: 2009-1-3 17:40
ethereal 用的不错!!!

我做通信的,原先静用这个分析协议了。。
你这个0.12秒包含了服务器处理时间和你的PING值。。

问题在于:能欺骗服务端发包吗?
作者: shizitoutao    时间: 2009-1-3 20:01

水蓝你的进展不错嘛~
我觉得关键在于,先要知道合成跟本地数据有多少关联,因为以我的能力,只能在本地数据上做手脚。


作者: xuan2008    时间: 2009-1-3 22:52

报告一下,我今天根据你们的思路,还有特早之前天使论坛上的帖子,做了下测试,合成6红,全成。没做钻的,因为钻的时间我不清楚。


作者: xuan2008    时间: 2009-1-3 22:54

ps:周期周期,很关键,有些思路,之前我合成了13个红左右,砸铁匠的衣服和武器,就碎了一个红,明儿继续先砸红。


作者: 客人    时间: 2009-1-4 05:54
11111
作者: 客人    时间: 2009-1-4 09:49
- -今天研究钻石,把自己的蜜蜂砸爆了。。虽然有思想准备,还是闹心ing..
作者: 水蓝    时间: 2009-1-4 09:50

今天研究砸钻石,把自己的蜜蜂翅砸爆了- -,虽然有思想准备,还是闹心ing..


作者: 水蓝    时间: 2009-1-4 09:53

不过今天的成果是猜想出服务器端的点宝石的程序框架和思路。
我果然擅长的是写程序,而不是破解- -..
我准备自己用C写一个模拟的点宝石的程序,观察下成功率,看看是不是这个思路。
如果这个思路存在的话,天使论坛的进化+0baby的bug是存在的了。


作者: 水蓝    时间: 2009-1-4 09:56
还有成果,感觉希望OL的发送包是加密的,接收包是明文。
不过还要进一步分析证实下哈。。
-----------------------
- -现在感觉自己在做希望的SF。。。。。
作者: 水蓝    时间: 2009-1-4 09:59
这里有机会顺便贴贴自己的研究资料哈。。
一会再用ethreal把喂baby的包分析下,不过估计是加密过的了。

作者: 水蓝    时间: 2009-1-4 10:03
感觉最后的成果可能是合成失败后物品不下降之类的工具软件。。
希望的bug点,可能在于合成和交换装备的两个函数没有加临界区,或者没有采用面向对象开发。而使用的是静态方法。
[此贴子已经被作者于2009-1-4 10:05:37编辑过]

作者: 捞妹宝宝    时间: 2009-1-4 11:27
很期待你们的研讨,继续努力
作者: xuan2008    时间: 2009-1-4 12:32

水蓝果然牛。
我是电信做市场的,对程序多少年都不了解了。你可以创收了。

通过你的测试,辅助软件是很好很强大,对于我,目前的周期论,是更好的选择,我也做些测试吧。点红跟点钻的时间点。可惜04年那个帖子我是找不见了。有个牛人做的测试在天使发的。。不知谁能找到,我提供红来测试。每天都能打不少红。这是我的强项。


作者: xuan2008    时间: 2009-1-4 12:57
“合成系统的判断发出应该是由客户端发出的,而客户端除了水晶与属性宝石外一律是默认失败的(不信你点合成确定前0.5秒把网线拔了,+4也会100%出现"失败”),合成进度条其实是客户端向服务端发送数据包和接纳数据包的时间期,客户端只有接收到服务端发来的成功数据后才会显示出“成功”,否则就是失败(这样就保证了不会让你利用数据包拦截、伪数据包等在自己的客户端上弄出个+12的装备后再告诉服务端,你的装备+12了),这样的设置也减少了服务端的计算量,把计算工作交给客户端,服务端只是告诉客户端,什么时间点下能成功。”
本文来自: 天使在线游戏社区 http://bbs.sa20.com 更多精彩等着您! 转载请保留此行

作者: 水蓝    时间: 2009-1-4 13:04

                       .l....

上面是第一次喂枫叶藤蔓的数据包


上面是第二次喂枫叶藤蔓的数据包

状态都一样,说明果然是加密过的数据了。

希望果然是发送数据加密,接受数据不加密的。

[此贴子已经被作者于2009-1-4 19:35:11编辑过]

作者: foxwinner    时间: 2009-1-4 13:59
楼主加油····
作者: shizitoutao    时间: 2009-1-4 18:50

两次喂食,服务器返回的包是什么?


作者: 水蓝    时间: 2009-1-4 19:42
以下是引用shizitoutao在2009-1-4 18:50:36的发言:

两次喂食,服务器返回的包是什么?


0030   07 54 6a 8e 00 00 1c 00 00 00 af f3 07 00 43 00  .Tj...........C.
0040   00 00 08 00 00 00 90 1d 00 00 48 00 00 00 00 00  ..........H.....
0050   00 00 14 00 00 00 b7 cc 07 00 bb 00 00 00 0a 00  ................
0060   00 00 8a 00 00 00                                ......


0030   07 54 c1 5a 00 00 1c 00 00 00 af f3 07 00 38 00  .T.Z..........8.
0040   00 00 08 00 00 00 90 1d 00 00 49 00 00 00 00 00  ..........I.....
0050   00 00             

1c应该是报文长度 9d 1d是枫叶藤蔓 08是在第1个背包格子里面。
af f3 07应该是操作编号。 38和49不知道是什么意思                               ..


作者: 水蓝    时间: 2009-1-4 19:45
第二次报文

0030   07 54 fd a9 00 00 1c 00 00 00 af f3 07 00 24 00  .T............$.
0040   00 00 08 00 00 00 90 1d 00 00 4a 00 00 00 00 00  ..........J.....
0050   00 00                                            ..

对比看了以后明白了4a和49是背包里面的剩下的东西个数
现在就是不知道38和24是什么意思了。。或者aff3070024就是操作代码?

作者: 水蓝    时间: 2009-1-4 19:46
af f3 07 00 24 00 
 或者是不是系统时间?

作者: 水蓝    时间: 2009-1-4 19:50

0030   07 54 f8 58 00 00 1c 00 00 00 af f3 07 00 25 00  .T.X..........%.
0040   00 00 09 00 00 00 2c 00 00 00 ac 00 00 00 00 00  ......,.........
0050   00 00                                            ..
这个是喂金鱼的。。感觉又不像时间。。25是一个很奇怪的数字。。
等明天,我换个宠物喂下看看,现在网络太卡,一用嗅探器就掉。

作者: 水蓝    时间: 2009-1-4 20:01

- -我现在明白了,seal123开发的启动易是如何防止卡3D了。
因为希望的返回数据包没有加密,如果对方卡3d的数据包在客户端接受之前被一个程序截获,发现有卡3d的现象,直接修改返回报文就可以了。。


作者: 水蓝    时间: 2009-1-4 20:06
下面是个参考资料。。明天准备从说话活着喊话功能进行一下简单的分析哈。。

封包分析的手段,说简单也挺简单的,那就是:比较!要不断地从不同的思维角度对封包进行对比分析,要充分发挥你的想象力不断地截取自己需要的包进行比较。不仅要作横向(同类)的比较,还要作纵向(不同类)的比较。即时对于同一个包,也要不断地反复研究。

  初涉封包分析的新手,一般会不知道封包分析究竟该从何入手。基于经验,本文将告诉你一般会从哪些类型的包入手进行分析以及应该怎样对封包进行初 步的分析。需要指出的是:封包分析是一件非常有趣但同时也非常考验耐心的事,通常,半天的封包分析下来,会让你眼前全是诸如“B0 EF 58 02 10 72....”之类的网络数据,而且附带有头疼、头晕症状,所以,没有充分的心理准备,还请不要轻易尝试。呵呵。

  从事封包分析的基本前提是:应该了解和熟悉TCP协议,并知道数据包“粘合”是怎么一回事。当然,我们平常截获到的包,从数量上来看,只有一小 部分是属于“粘合”的情况。但如果不了解它,将可能会对你的分析思路产生误导和困惑。关于“粘包”的更详细解释,请参考我的另外一篇文章“拼包函数及网络 封包的异常处理(含代码) (http://blog.csdn.net/sodme/archive/2005/07/10/419233.aspx)”。

  上一篇有关魔兽世界封包分析的文章(http://blog.csdn.net/sodme/archive/2005/06/18/397371.aspx)中,我根据客户端与服务器端连接及断开事件的处理流程以及登录过程中的一些数据包分析了魔兽的架构和登录逻辑。这篇文章中,我将结合聊天数据包的分析,来阐述魔兽世界封包的大体结构。  

  首先解释一下我们的目标:封包的大体结构。封包的大体结构包含哪些内容呢?一般情况下,封包的大体结构至少包括两方面的信息:
1、一个封包是如何表示它的长度的?封包长度是由哪个字段表示的?(或者说:如何表示封包的开始和结束的)
2、各种不同的封包类型是通过哪个字段表示的?

  是不是所有游戏的封包都必然会有表示“长度”信息的“字段”呢?答案是否定的。有的游戏确实没有采用这种方式,它们的作法设定特殊的包开始和包 结束标志。但是,从应用的角度来看,偶推荐使用“长度”这样的方法,因为不管在网络底层的处理效率以及上层应用的处理便捷性来说,使用“长度”字段标识一 个完整的逻辑包都是比较好的办法。在确定了封包的大体结构后,我们才方便分析具体类型包(比如聊天、行走等)的详细结构。

  作数据包分析,在单纯采用黑箱分析的阶段,我们选取的数据包,须要是具有这种性质的,即:在数据包发送前客户端未进行加密等处理时,这个数据包 中的部分内容,我们是已经知道的。这样的包,就可以作为封包分析的突破口。这样看来,我们拿“聊天封包”作为第一个分析对象也就不难理解了,因为我们说的 话,打上去的字,我们自己是知道的,但是我们说的话经过客户端的处理后,发到网络上的可能就是已经加了密的或者加了校验码的。站在黑箱分析的角度,我们能 作的,就是不断截取各种“聊天包”进行对比、判断和总结。

  OK,打开你的commview。让我们从“聊天封包”开始。

  分析“聊天包”的前提,是我们能够正常判断哪种类型的数据包是属于聊天的,不要误把行走或其它的数据包当作了聊天数据包。为了减小分析难度,建 议新手到游戏中人少或周围没有玩家的地方进行封包分析。这样一来没人打扰,二来你的网络通信量会相对小得多,比较容易进行一些封包判定。

  第一步,我们需要确定客户端与服务器通信所用的端口,然后在commview的rules->ports中设定服务器端口,截获与该端口 通信的所有数据包。服务器端口的确定方法:不要使用其它网络通信工具,打开commview,进游戏,截包,观察其通信端口。进行封包分析时,特别是初期 的封包分析时,你的网络通信应该尽可能是单一的,即:除了游戏,其它的通信软件尽可能不要开。但当你确定了服务器的IP和端口后,就可以照常使用其它网络 软件了。

  第二步,如前面述,在游戏中找个人少或没人的地方,开始“自言自语”,呵呵。说话的内容,建议以字母和数字为宜,不要说中文。因为中文是双字节 的,而字母和数字是单字节的,对于单字节的信息内容,截包软件会以单字节的文本信息显示,但对于双字节的汉字而言,截包软件在对其进行显示时由于换行等原 因会造成部分中文显示有乱码,不容易直接看出中文内容。如果执意要说中文,偶也不拦你,给你推荐一个工具:String Demander(下载地址:http://www.cnxhacker.com/Download/show/395.html),这个软件,可以查询中文所对应的编码。

  第三步,设定好commview的rules并使之生效,开始截包。

  观察通过以上的过程所截的包,可以发现,魔兽世界的聊天封包的说话内容是明文的!这一点,用不着大惊小怪,呵呵。聊天封包本身并不会对游戏的关 键逻辑造成损害,所以,即使让其明文显示也不足为奇。但是,我们还是不太相信自己的眼睛,于是再截若干个包,发现包中的说话内容确实是明文的!但是,包的 其它字段却是我们一时看不懂的“密文”。

  看来,下面的事情就是对这些包里的“密文”进行研究了。一般情况下,这种“密文”的加密方法,通过封包分析是分析不出来的,但,我们仍然可以通过封包分析来推论一些与“密文”生成算法有关的问题。我们可以作以下的对比分析:
1、连续三次输入“a”,并分别观察及保存封包数据;
2、连续三次输入“aa”,并分别观察及保存封包数据;
3、连续三次输入“aaa”,并分别观察及保存封包数据。

  输入的封包用例,我们选择了字母"a",它的ASCII码是61。输入的规律是:每种情况连续输入三次,然后逐次增加a字母的个数。于是,我们发现这样一个有趣的现象:
1、包中有关说话的内容是明文的;
2、即使针对于同样的说话内容,比如“a”,客户端所发出去的包也是不一样的;
3、当一次说话的字母个数增加1时,封包的总体长度也随之增加1;
4、除每个封包的前面6个字节以及说话的字节外,其余的封包内容每次都一样;
5、每个聊天封包的结尾字节都是0。

  于是,我们可以试着得出如下结论:
1、包是没有压缩的,它所使用的加密算法应该是按字节进行的,并没有改变封包的长度使之看上去使用统一的长度;
2、包是以0结尾的(尽管我们不知道它是以什么表示开头的,呵呵);
3、封包加密算法中所使用的密钥是可变的,即针对于相同的数据包内容由于加密的密钥不同,所以产生的密文也不同
。由于客户端的数据传到服务器端后,服务 器端还要对数据进行解密。所以,客户端的加密算法与服务器端的解密算法应该共用了前6字节中的某些内容,以此作为解密算法的密钥。如果这6字节中没有包含 有关封包加、解密所需要的同步数据,那客户端和服务器之间应该会通过其它的方式同步这样的数据。不过,偶倾向于前者,即:这6字节中应该含有加、解密所需 要的密钥信息

  回头看我们上面观察到的有趣现象,针对于第2点,反过来想,这应该也是最起码的功能了。就是说,即使客户端作出的是同样的动作,在客户端发出的包中,包的内容也是不一样的。这样,外挂就不能靠单纯的重复发相同的包而达到其目的了。

  分析来分析去,我们还是没能确定魔兽封包的大体结构。其实,到现在,我觉得我此文的目的已经达到了,即向大家展示封包分析的思维角度和思维方 式。至于具体结果,偶觉得倒真的不重要的了。可以肯定地告诉大家的是,魔兽的封包结构偶大致已经掌握了。偶仅在此公布我的分析结果:
1、魔兽的封包长度字段是每个封包的前两字节,它的表示方式是:前两字节的数值+2。之所以加这个2,是因为封包长度字段本身占用了两个字节的长度。
2、魔兽的封包类型偶推断是第三和第四字节,其中普通聊天的类型标识是“95 00”。

  请不要来信向我询问任何有关魔兽封包破解的内容,偶能说的都已经在文章里说了,偶之所以写这个系列的文章不是想破解魔兽,而是想以这样优秀的一 款游戏作为案例来向大家展示它在封包设计方面值得我们学习和讨论的地方,同时向更多的朋友普及有关封包分析的常识、工具以及思维方式,仅此而已。

  ps:由于每次封包分析的内容都很多,所以,一有了点结论后,要及时记录和总结,并与之前取得的总结进行对比,及时更新相关的记录文档。


作者: GZGame    时间: 2009-1-4 20:20
楼主讲解得很详细,加个精华再给一个高亮,大家继续讨论^^
作者: 水蓝    时间: 2009-1-4 23:44

还有悲伤的男女妖精、火鸡王/女王、龙/朱雀,有顺利的就对应有悲伤的
嗯嗯,慢慢研究。。

----------------------------------------

这里给出操作方法吧

如果你还不会登录,就先翻看一下论坛上以前别人发的帖子。
这里主要只用到两个命令:
购买物品和物品移位
购买物品代码格式如下:
1C 00 00 00 5C F3 07 00 0D 00 00 00 D6 0F 00 00
00 00 00 00 00 00 00 00 6E 00 00 00
每小段为1字节,4字节为一块
这个代码共有7块,分别代表:
1:(1C 00 00 00) 数据包长度
2:( 5C F3 07 00)动作编号,即购买物品成功
3:(0D 00 00 00 )放置于背包哪一位置(注意,0-7为装备栏上的,08-2F为背包,不要超出了,会出错的)
4:(D6 0F 00 00 )物品ID,下面会讲解如何查询物品ID
5:(00 00 00 00)物品精练属性
6:(00 00 00 00)物品签定属性
7:(6E 00 00 00)背包还剩多少钱

物品移位代码格式如下:
10 00 00 00 4D F3 07 00 0d 00 00 00 07 00 00 00
1:(1C 00 00 00) 数据包长度
2:(4D F3 07 00 )动作编号,即购物品移位
3:(0D 00 00 00 )要移动的物品位置
4:(07 00 00 00 )要移动到的位置(7是宠物,其实也可以写其它的,就出现改脚本时一样的bug了)

下面这里给出计算物品ID的方法,知道了ID就可以自己编辑编码来尝试了。

我这里下的版本是论坛之前整理过的完整版,还有一个教学录像。
里面带有ItemString.DAT这个文件
这里要用到UltraEdit打开它,如图:

[ 本帖最后由 cyrilluce 于 2008-4-1 23:46 编辑 ]
本文来自: 天使在线游戏社区 http://bbs.sa20.com 更多精彩等着您! 转载请保留此行
这个是天使的资料,记录下


作者: shizitoutao    时间: 2009-1-5 01:17
以下是引用水蓝在2009-1-4 19:50:57的发言:

0030   07 54 f8 58 00 00 1c 00 00 00 af f3 07 00 25 00  .T.X..........%.
0040   00 00 09 00 00 00 2c 00 00 00 ac 00 00 00 00 00  ......,.........
0050   00 00                                            ..
这个是喂金鱼的。。感觉又不像时间。。25是一个很奇怪的数字。。
等明天,我换个宠物喂下看看,现在网络太卡,一用嗅探器就掉。

af f3 07 00如你所说应该是动作编号,我看了下拾取和丢弃物品这两个相近的动作,编号数字相差1,某种程度上证实了你这个说法。不同类型的动作,数据格式也不同。吃药的动作编号之后,直接跟的背包格子、物品ID、剩余个数、当前HP、MP等,没有类似25 00 00 00的四个字节,而丢弃拾取物品的动作后面就有这四个字节。费解中,水蓝你前两天合成时爪的包还保留着吗?方便的话,发出来看看。谢谢


作者: 水蓝    时间: 2009-1-5 11:22
以下是引用shizitoutao在2009-1-5 1:17:44的发言:

af f3 07 00如你所说应该是动作编号,我看了下拾取和丢弃物品这两个相近的动作,编号数字相差1,某种程度上证实了你这个说法。不同类型的动作,数据格式也不同。吃药的动作编号之后,直接跟的背包格子、物品ID、剩余个数、当前HP、MP等,没有类似25 00 00 00的四个字节,而丢弃拾取物品的动作后面就有这四个字节。费解中,水蓝你前两天合成时爪的包还保留着吗?方便的话,发出来看看。谢谢


0030   09 6c 99 a0 00 00 28 00 00 00 8d 1a 08 00 20 00  .l....(....... .
0040   00 00 6f 18 00 00 04 00 00 00 00 00 00 00 1e 00  ..o.............
0050   00 00 00 00 00 00 00 00 00 00 00 00 00 00        ..............

这个是合成+4的高学下失败的报文。今天再去看雪找找资料,学习下。
28是包长度,8d 1a 08是动作。  6f18是高学下 04是+4
1e不知道什么意思。可能是包里的位置。我记不清东西放哪里了。


作者: 水蓝    时间: 2009-1-5 11:51

0030   09 6c 81 3f 00 00 28 00 00 00 7c f3 07 00 1e 00  .l.?..(...|.....
0040   00 00 09 24 00 00 03 00 00 00 94 24 49 12 1a 00  ...$.......$I...
0050   00 00 00 00 00 00 00 00 00 00 00 00 00 00        ..............

+3成功的报文,09 24是小丑的鼻子

作者: x玩l童    时间: 2009-1-6 15:00

lg


作者: xuan2008    时间: 2009-1-6 15:22

问个弱弱的问题,怎么看内存的中文?


作者: 水蓝    时间: 2009-1-7 13:18
成功结果的确是服务器返回的,水晶不验证的方法没有。。

0030   09 6c f3 87 00 00 28 00 00 00 7c f3 07 00 08 00  .l....(...|.....
0040   00 00 6e 18 00 00 04 00 00 00 00 00 00 00 09 00  ..n.............
0050   00 00 00 00 00 00 00 00 00 00 00 00 00 00        ..............
7c f3 07是成功的意思
08是第一个装备栏,09是第二个装备栏的物品消失掉。
6e 18 00 00 04是高学+4


0030   09 6c e1 00 00 00 28 00 00 00 8d 1a 08 00 08 00  .l....(.........
0040   00 00 6e 18 00 00 04 00 00 00 00 00 00 00 0a 00  ..n.............
0050   00 00 00 00 00 00 00 00 00 00 00 00 00 00        ..............
8d 1a 08是失败的意思
08是第一个装备栏,0a是第三个装备栏的物品消失掉。
6e 18 00 00 04是高学+4

高学+4费了4个红- -最近rp真差。。

作者: 水蓝    时间: 2009-1-7 13:19
以下是引用xuan2008在2009-1-6 15:22:27的发言:

问个弱弱的问题,怎么看内存的中文?

不能看哈。我一般是照着写出来然后放到UE里面看。


作者: 客人    时间: 2009-1-7 21:30
fghfgfghfgh
作者: 客人    时间: 2009-1-7 23:58
以前我发现个BUG 关于合成失败```物品跟宝石都还在的
作者: 水蓝    时间: 2009-1-8 20:49

- -我宣布。。本次研究失败。。
因为那个所谓100%失败并不存在,如果在合成前断网则没有进行合成,如果合成后断网还是服务器端判断合成结果- -.总之。因为不存在100%合成失败的方法,所以对于这个研究没有进行下去的必要了。。
不过。发现一个不太影响平衡的小小的bug,最多值200W的小bug...和法师技能有关,如果想知道请pm我。个人觉得没什么价值,不过作为一向正常合法的玩游戏的水蓝来说还值得一用。


作者: xuan2008    时间: 2009-1-8 21:37
明白。我也在研究合成,合红基本成的几率大很多,下一步看钻的了。
作者: babybbbb    时间: 2009-1-9 13:43

个人认为,物品合成判断公式没有%100可能
服务器认证物品合成(官方)
假如+9 20%成功
有两种方式
1时间判定,服务器随机生成随机数 ,例如 3 。 系统时间/3=整数 成功! 有余 失败!
2成功率判定,20%基本成功率+伦石合成成功率+合成工具箱(防止物品合成失败)的数值大于随机数范围不知,超出范围或者低处范围均失败!

我个人认为,使用系统中的道具“伦石” “合成工具箱”是可以找到使用时的状态。

某种程度上讲,提高成功率,也只能通过修改,是服务器认为你合法使用了“伦石”“合成工具箱”而已。
因为,我们无法查看服务器端原程序!
或者可以有强大的黑客可以获得服务器端????


作者: 408446957    时间: 2009-1-12 23:55

我丁水晶失败过 
用CE改成红宝放上去 1丁 失败  东西退还
如果把红改水晶点  失败 红没了

[此贴子已经被作者于2009-1-12 23:55:29编辑过]

作者: x1314520b    时间: 2009-2-15 22:01
-0-好难的问题~
作者: pc32252    时间: 2009-2-15 22:05
我积分少!!!!
作者: dd89589489    时间: 2009-2-15 22:05
额··好可怖··
作者: 客人    时间: 2009-2-16 08:53
123
作者: motuo680g    时间: 2009-2-17 12:15

进度条快了 就容易成 这是真的 开加速点的话 很 容易成


作者: wangxu898    时间: 2009-2-17 12:47
最主要是能知道希望合成的定律就好办了
作者: 无名小卒    时间: 2009-2-17 13:01
能不能把红宝石改成水晶再点,上去之后会不会是+4-6呢
  菜鸟的一个想法
作者: wangxu898    时间: 2009-2-17 13:04
楼上的,一定是失败,红消失.............
作者: wangxu898    时间: 2009-2-17 13:06
这小小的BUG怎么说??????
作者: wangxu898    时间: 2009-2-17 13:06
以下是引用水蓝在2009-1-8 20:49:32的发言:

- -我宣布。。本次研究失败。。
因为那个所谓100%失败并不存在,如果在合成前断网则没有进行合成,如果合成后断网还是服务器端判断合成结果- -.总之。因为不存在100%合成失败的方法,所以对于这个研究没有进行下去的必要了。。
不过。发现一个不太影响平衡的小小的bug,最多值200W的小bug...和法师技能有关,如果想知道请pm我。个人觉得没什么价值,不过作为一向正常合法的玩游戏的水蓝来说还值得一用。

这小小的BUG怎么说??????


作者: keyuaneric    时间: 2009-2-17 17:06
我是来刷声望的~HOHO
作者: ammopq    时间: 2009-2-17 18:10
水蓝~~支持你哦~~
作者: zuiai2005    时间: 2009-2-17 18:30

好久没上现在才发觉自己没章章了


作者: 青龙场001    时间: 2009-2-17 19:24

水蓝~~我有个想法!!相当恐怖!加我QQ,细谈!! 504900898


作者: 6847622    时间: 2009-2-17 19:57
晕~~``有钱没事做

作者: first5826    时间: 2009-2-17 21:39
- -跳失败不代表点的东西失败...
我有次开加速点 跳失败了 但是东西却成功上7拉
作者: 渔渔    时间: 2009-2-17 22:28
谁说水晶是客户端默然成功的吖?我也有试过水晶也失败的时候喔
作者: zsxme3086    时间: 2009-3-16 23:35
这贴有学习噶成分
顶丫
作者: pitychen    时间: 2009-3-17 00:06
以下是引用水蓝在2009-1-1 11:32:25的发言:
- -对了,不知道点水晶能不能搞出失败来。。
如果能研究出点水晶失败的方法,也算很大的进展。

- -点水晶失败!~我试过!把装备变回去+1~+3点水失败!


作者: mmmpppjjj    时间: 2009-3-17 10:49
楼住,我知道怎么点水晶失败,我点失败了3棵水晶了。
我把水晶ID改成红宝石了。结果连点3水晶都失败,水晶消失。。。。。。
我把钻石ID该成红宝石,结果连点3钻石都失败,可是。。。。钻石还在。。。。。
[此贴子已经被作者于2009-3-17 10:51:37编辑过]

作者: a372615091    时间: 2009-3-17 11:34

有个办法不知道你们试过没有。
点装备滴时候拿其他东西垫手。
比如要点A
那偶们就先不点A
拿B做垫手。等B 失败以后。
再点A  准成功。
偶滴东西都是这样点。
想点滴东西没有失败过。
你们可以试下。
这是偶从其他游戏得来滴灵感。很准滴!


作者: 秋珏枫    时间: 2009-3-17 12:23
呵呵,很有意思呢,要研究100%成功么?
作者: kangaishan    时间: 2009-3-17 13:11
顶 水蓝同学 !
作者: aa137282    时间: 2009-3-17 14:11
 ```````````````````
作者: 被遗忘的天使    时间: 2009-3-17 15:07
我觉得合成时进度条只是虚设的~在你点合成的那一瞬间已经决定了成功与否了
作者: 被遗忘的天使    时间: 2009-3-17 15:10

我试过开了8倍速度的时候用红宝冲装备~~其过程是缩短了很多!但一样会失败


作者: flysh    时间: 2009-3-17 15:29

1.改物品 id 自然石,灵魂石能代替白伦,黑伦,但普通方法必定合成失败,无任何东西消失

2.改水晶的物品 id,水晶可以失败,无任何东西消失

3.我认为合成绝对存在 bug,x12 非梦


作者: calbee115    时间: 2009-3-17 16:33
继续学习学习




欢迎光临 G.国王族 官方论坛-广州游戏资讯网 (http://bbs.gzgame.com.cn/) Powered by Discuz! X3.1