标题:
[历史]
从程序方面谈谈ro和外挂,木马的姻缘。知彼知己,百战不殆。
[打印本页]
作者:
rabienrose
时间:
2007-4-7 17:33
标题:
从程序方面谈谈ro和外挂,木马的姻缘。知彼知己,百战不殆。
ro应该是少有的网游,能从短暂的开服无外挂期到没有外挂就无法生存期再回到无外挂期。当然造成这种实事的原因是多方面的,比如运营商方面的,国情方面的,网络游戏发展的特殊时期方面的,不过以上方面大家都讨论得很多了,现在我想就ro程序体本身方面的原因来谈谈,现在小站上面很多都是从ro公测玩到现在的,所以对ro的客户端有一些客观的了解也是必要的。
ro在2002年底诞生在传奇的阴影下。但却因为有无外挂之别而败给了传奇,许多人认为这全是因为运营商的无作为,但并不全是:以下是一个以外挂制作为业的人说的话:
“03年08月01日:现在蛮多想卖外挂捞一笔就走的技术人员图省事都去做仙境RO的外挂了真是***!前几天网金伴侣公司自己都去开发了一个仙镜伴侣简体版和繁体版的RO外挂真是**.RO现在的状况就象我们曾经在6月8日所说:我们发现RO中游戏客户端发送和接受的数据包都是明文,走路,说话,战斗一切都是赤裸裸地展现在我们的眼前,当时我们的第一念头就是:“我们可以模拟RO客户端,做一个完全脱机的外挂”,随着时间的发展,果真,现在RO的外挂满天飞,而且都是作成完全脱机。就因为RO数据包是明文所以必须频繁的更新。今后有玩仙境RO的玩家建议你们不必花钱去注册这样的外挂以后会不断出新的仙境RO外挂!
03年06月08日:关于RO-不得不说的事:接触RO,是在今年(2003)春节左右,RO是一个可爱的游戏,清新亮丽,我试着玩了玩,人物挺可爱的.作为一个程序员,我习惯性地想研究RO是怎么做的,于是我用上了Etherreal,我吃惊地发现,RO的用户验证居然是明文的!也就是说,只要我在交换型网络内随便Sniff,就可以知道玩RO的玩家的密码和帐号!!!我只要在网吧的服务器上架设Sniffer,就可以知道网吧内所有玩RO的帐号和密码!!!如果要窃取RO玩家的密码,稍微有点点知识的有心人根本就不需要木马了,太可怕了,我真为RO的玩家感到担心。
继续深入研究下去,我发现RO中游戏客户端发送和接受的数据包都是明文,走路,说话,战斗一切都是赤裸裸地展现在我们的眼前,当时我的第一念头就是:“我可以模拟RO客户端,做一个完全脱机的外挂”,随着时间的发展,果真,现在RO的外挂满天飞,而且都是作成完全脱机。
如果你们大家不信,可以自己试试,普通玩家可以用WPE,再说句话,看看如何,还可以使用NetXray,Etherreal,或者自己写程序截获数据包。:-) ”
现在的网络游戏基本都是用的ip协议,以这个协议传输数据的都是以一个包为单位,打个比方就是:一个包相当于一个邮寄的包裹,上面写有目的地址(ip地址),收信人(端口号)。而整个网络(比如路由器,交换机。。。)就是邮局,邮局负责把这个包安全的送到目的地。但是这个包的发送的程序,并不是由应用程序,比如ro客户端编写的。这些基本的发送程序都是由操作系统提供,而建立在操作系统之上的应用程序,只能通过调用这些程序才能进行网络传输。而操作系统同时也提供了许多断截这些封包的函数和方法,所以获得某个程序的封包及其容易。所以,一个网游要想加强保密性,只有在自己要传输的数据本身上做文章,比如加密什么的。
而ro因为一些原因,大概是想到减少服务器负担,较早的网络游戏都有着方面呢考虑,那个时候网速还不是很快,还是用拨号的时代,计算机也没有现在这样发达。如果,大家有兴趣去看看现在普通区的网络封包,你会发现上面的内容你一看就懂了,比如你的M语什么的。这代表什么呢?只要我们拥有了发送封包的手段(这一方面windows给了我们非常方便的途径),我们就可以很容易的不通过客户端来操作自己的人物,因为我们读客户端和服务器之间的通讯语言,几乎就像我们用鼠标操作告诉服务器我们要做什么一样容易。在这个条件上,我们就可以很容易的告诉我们自己编写的程序怎样去控制一个ro人物。
而且建立在这种目的和手段上的外挂,服务器很难识别是人的操作还程序的自动操作,因为服务器只认识封包,而这两种封包几乎是不可区分的。所以,要为外挂使用者提供无可挑剔的证据变得非常困难。偶就要坚持说偶打网游从不说话,而且一天上24小时,这个你不能说我不行啊。
但个人认为ro的服务器的安全性还是很不错的,人们常说ro的外挂很变态(某A站出来说:偶的骑士99了,但我还不知道骑士长的啥样的),但是ro外挂的功能确是很普通的,除了历史上有名的加速外挂和复制外挂(这两个东西都流传得不是很广),哪像当年传奇三天两头的什么复制,刷钱,大瞬移。。。
最早的ro外挂也是很苯的,ro才公测的时候,当时的蚯蚓区热闹呵,有的ws就在那里一动不动,只有蚯蚓来了才放放火箭,也不捡东西,这个就是早期的ro外挂了。然后,外挂的发展和ro的没落的过程大家都是很清楚的。
对于ro的外挂发展如此迅猛的原因还在于,在全球流行着这样一套程序源代码。据说它是由印度人开发的,然后开发人将这个程序定义为Open Sourse,也就是开放式程序,操作系统UNIX就是这类程序。这类程序的特点是,你可以免费得到程序源代码,可以任意改动,唯一不允许的就是你不能把它用在盈利上面。于是在这种良好的开放环境下,在来至全球的ro玩家不断的完善这个程序中,ro的外挂就飞速的发展了。这个程序就是著名的OpenKero,也是但年复制外挂的元凶。
2004年末,ro历史上第一个宣称无外挂的服务器诞生了----PKF,遗憾的是当时正是我唯一的不在ro的时间,所以没有仔细研究PKF的封包形式。但我模糊的印象是当时的PKF没有每天更新(如果不是请指正),但确定的是建立在传统KE上面的外挂的确是用不起了,对于不清楚的东西我就不多说了。
2005年末,ro历史上第二个无外挂服务器诞生了----新生时代。新生时代也没有对封包数据进行加密,而是在每个封包的末尾加上一个验证码,而这个码是在本地时间的基础上通过一些运算生成的,而且每天都为验证码生成运算更新。这样的安全措施有几点不足:
1:验证码只和时间相关,而和具体内容无关(因为考虑到修改程序的难度问题吧),所以我们可以将一条简单的命令(比如坐下)封包断下来,保留验证码,而偷梁换柱把封包内容改成其他命令,比如攻击命令,就可以欺骗服务器了。
2:从后面的事实可看出,一天一更新的速度还是慢了,只要掌握了运算的规律,完全可以编程自动破解。
3:在验证码的生成运算上也很简陋,因为在新生开放长时间后,针对新生的脱机外挂也出现了。
在新生运营1年半后,也就是2007年初,这种简陋的安全措施已经几乎不能给有心人带来任何障碍了。SD也看到了无外挂对于自己收入的影响,于是推出了第3代安全措施,这就是那次著名的封掉双开的更新了。
在这次更新中,SD取消了每天费事不得利的更新,也取消了验证码。直接对发送数据加密(注意,只是对发送数据加密,接收数据和登陆数据,比如密码什么的都没有加密),而且加密方式只要一登陆地图就更新,但转换地图不会更新。
所以,在这种情况下,要想委托程序自动向服务器发送命令就必须破解加密算法,而这次所使用的算法,已被证实不是能简单破解的。但由于在其他方面没有大的改动,所以可以这样说:我们可以临时的把一些命令数据告诉自己写的程序(比如加血,12,这些命令的封包形式,只要不退出人物,就不会发生变化,所以就可以一直有效)让程序不断的发送诸如加血,12 的命令,而且通过底层的封包发送,不会中断像用Shift+右键的跟踪操作。这个是什么意思呢?就现在而言,一些用来跟随加状态的辅助程序的确还有可能(的确这种程序已经被编写出来),但是能用于挂机的外挂,可以肯定在很长时间内是不会出现的,当然难以排除一些小概率事件。
最后想说说有关盗号的,由于ro对登陆信息没有加密,所以只要在客户端注入一个简单的封包截取木马,就能完成盗号任务了,根本用不了什么繁琐的又被众多杀毒软件关注的键盘监视程序,所以那些想在输入密码的方式上做点文章的人,就不要白费心机了。
[
本帖最后由 rabienrose 于 2007-4-7 17:34 编辑
]
作者:
钱包包
时间:
2007-4-7 17:45
那么辛苦写的 总要顶1下吧
作者:
keith
时间:
2007-4-7 17:47
写的很辛苦,可是这个话题不在交流区讨论范围。
欢迎光临 浆糊论坛-RO小站 (http://bbs.rohome.cn/)
Powered by Discuz! 7.2