Under the hood

互联网上新生活
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Diablo II中的各种hacks

Posted on 2008-10-16 10:54  sting feng  阅读(3221)  评论(1编辑  收藏  举报
Game hacks,也就是通常所说的游戏作弊软件。在网络游戏时代,也许是因为针对传奇这类游戏的作弊软件大都利用WPE之类的抓包工具来制作,因此hacks又叫外挂。不过Diablo的hacks绝大多数是和游戏代码紧密结合在一起的,也许应该叫内挂才对。
Diablo II LOD(以下简称D2X)中的hacks大概可分为exploit、bot和mod三大类。exploit即漏洞,就是利用游戏设计上的缺陷或者BUG完 成 一些正常游戏时做不到的事情,比如复制装备,偷窥其他玩家装备,显示所有场景地图等等。bot俗称机器人,是指那些能自动模拟人的操作进行游戏的程序。比 如有的bot能自动运行游戏程序,输入帐号名密码,创建、进入游戏,并自动找怪物,杀怪物,捡装备等等。mod即modification,指通过修改 D2X本身的一些(角色、怪物、场景等)设定来获得另外一种游戏体验,从这个意义上讲那些所谓的资料片都可以看做MOD,只不过是官方做的。这里主要介绍 exploit和bot。exploit和bot的主要区别在于bot是模拟人的操作自动进行游戏,exploit是帮助玩家在游戏时获得一些得到一些便 宜。exploit的用处容易理解。bot要来干吗呢?D2X中装备决定一切,没有合适的装备在游戏中寸步难行。另外装备可以卖钱,在我的印象中,战网上 出现的第一把极品弓WindForce/8卖到几千美元。想得到高级装备,就得一遍又一遍的MF(Magic Finding,术语来着,通常指打怪物捡它掉下来的装备)。一般来说好装备出现的概率都非常非常低,玩家自己MF的话要花很多时间,这时候bot就派上 用场了。--这就是Diablo中最流行的一类MF bot存在的原因。bot还可以做其他一些用途,比如,pass bot可以帮你的baby角色通关;follow bot可以让你的baby角色自动跟随高级角色打怪、通关、升级。
D2X中hack的发展过程,大概可以分为三个阶段:
  • 1.10补丁(2003年10月28日发布)之前的发展及繁荣期。这一时期由于游戏本身缺乏有效的作弊检测机制,同时暴雪忙于开发魔兽世界,对D2X基本撒手不管,因此各种hack、dupe等作弊手段层出不穷,到1.09d阶段达到高潮。
  • 1.10 的过渡期。这一时期由于1.10补丁中加入了一些作弊检测机制,导致一部分hacker终止了开发,同时最著名的d2maphack和d2jsp也开始收 费。这两个软件的收费引起了很多hacker的不满,因此又出现了一些他们的替代品,如d2hackmap, C3PO, D2BS等。
  • 1.11(2005年8月5日发布)的衰落期。1.11补丁的最大改进是引入了重量级作弊检测机制(warden),在warden的威慑下,到目前为止几乎所有公开发布的hack都陷入困境。
D2X中的hacks,大概有以下这些:
  • d2loader -- 免CD游戏启动软件。严格说来d2loader不能算作弊软件,应该称为非官方软件。D2X自带的启动软件有两个限制:1,玩游戏时游戏光盘必须放在光驱 中;2,同时只能运行一个游戏。d2loader免去了这些限制,大大方便了玩家在多个角色之间倒腾装备,也使得一台机器上跑多个bot成为可能。一个有 趣的事实是d2loader在客观上帮暴雪多卖了不少CD-KEY,在暴雪的多次打击作弊软件行动中,d2loader始终幸免于难,这是一个重要原因。
  • d2maphack/d2hackmap/C3PO/EasyPlay -- D2X中最有名影响最大的hack非maphack莫属。玩D2X的人不一定都用过maphack,但没听说过这个软件的人肯定是菜鸟。作者 Mousepad可以说是D2X hacking community的第一人。maphack最早可能是出现在“星际争霸”中,主要用来打开战争迷雾。D2X中的maphack从最开始只有开地图功能, 发展到现在已经成了一个高级的游戏辅助工具,实现了很多附加功能,如开地图,道路指引系统,显示怪物属性,偷窥其他玩家装备,高亮显示有用装备,防作弊检 测,等等等等。1.10时期由于d2maphack开始收费,出现了一些具有类似功能的免费替代软件,有名的有d2hackmap、C3PO、 EasyPlay等。
  • d2hackit及其插件 -- 可能是D2X中最早的hack。d2hackit是一个hack平台,通过提供一些接口和回调机制给其他hack做二次开发。比如,它可以截获所有游戏内 的网络数据包并提交给它的插件进行处理,其插件也可以利用它提供的接口向游戏服务器发送伪造数据包。
  • PickIt/zPickIt/SnagIt/GrabIt -- 这类hack统称PickIt,用于在游戏内自动捡装备,各种MF BOT一般都会搭配一个PickIt。用这个hack抢装备没人比你快(D2X中设定怪物身上掉下来的装备谁先抢到归谁)。缺点是可能导致LAG,另外跟 别人一起玩时用这个可能会被人鄙视。
  • d2jsp -- 最流行的bot系统。d2jsp工作原理类似于d2hackit,它通过动态劫持游戏代码、利用游戏内部函数实现了一个基于事件回调机制的系统,并提供了 一套丰富的接口,这些接口可以控制角色在游戏内的几乎所有行为。与d2hackit不同的是,d2jsp集成了一个jscript引擎。bot编写者只需 根据d2jsp提供的接口文档就可以很容易的写出高质量的bot。这就大大降低了bot的开发难度。因此基于D2JSP的各种BOT在D2X非常流行。
  • 基于autoit的 BOT。 autoit是一种脚本语言。这类BOT的工作原理是通过模拟鼠标、键盘操作操纵游戏,并通过截取游戏图片与一些预先指定的图片相比较得知当前状态,从而 决定下一步动作。这类BOT的缺点是效率较低,稳定性不好,运行时用户不能做其他电脑操作,而且游戏画面亮度的差异也会影响BOT的运行。最大的优点是这 类BOT不会修改游戏进程的代码和数据,在反检测时有一定优势。典型的有MMBOT。
  • 各种专门用途的BOT。这些 BOT一般都是通过一些通用平台(如D2JSP、D2HACKIT、AUTOIT等)提供的接口开发而成。大概有,专杀特定BOSS(如 Andy/Meph/Pindle/Baal)的MF BOT;赌博用的Gamble BOT(从NPC那里花钱买随机属性的装备);逛商店碰运气的SHOP BOT;合成物品用的CUBE BOT;带baby角色通关用的 PASS BOT;杀奶牛关的COW BOT;自动跟随其他角色的FOLLOW BOT(用于通关或升级);等等。
  • Clientless BOT。准确的说Clientless BOT应该叫GUIless bot才对。这类BOT的特点是内置了一个没有图形界面的客户端,好处是占用电脑资源较少,效率较高。
  • dupe -- 复制装备。dupe的原理一般是利用LAG(网络延迟)导致游戏服务器和角色存档服务器之间的不能同步,引起roll-back。举个例子,有两个角色A 和B。让A进入游戏,扔下一件装备;B进入游戏捡起装备然后退出,这时B的数据(B此时拥有这件装备)正常备份到角色存档服务器;用某种方法让游戏服务器 和存档服务器失去联系(比如LAG),这时存档服务器会认为游戏服务器挂了,由于这时A的最新状态还没更新到存档服务器,存档服务器只能保留A的原有存 档,这样A和B就拥有了同一件装备。这就是所谓的roll-back。
  • 各种存档编辑器。存档编辑器可以让你随意设定角色的技能等级、装备等数据,一般用于单机模式。
  • uploading。可能99.99%的D2X玩家都没听说过这种技术,知道其原理的更是少之又少。简单的说就是把你的单机存档上传到存档服务器上去。其原理我在以后的文章可能会介绍。
  • d2gs/bnetd/pvpgn -- 架设D2X私服要用到的软件。d2gs是游戏服务器,bnetd和pvpgn用于登陆验证、角色存档、分发聊天信息等。
  • Trade Hack -- 和玩家交易装备时用的作弊软件。
  • Drop hack -- 使人掉线的hack。
  • Auto-AIM -- 自动瞄准hack。就是让你成为神枪手。
主要的就这些,还有一些奇奇怪怪的,就不一一说了。