dota吧 关注:4,645,747贴子:155,352,105

[技术贴]魔兽争霸的地图验证漏洞和作弊图原理,兼谈魔兽联机机制

只看楼主收藏回复

作者 ZZ from ayssss.com


IP属地:甘肃1楼2009-03-11 18:11回复
    最近老有人问我是不是出了改dota英雄技能的外挂,什么月骑无限大,剑圣无限斩,巫妖
    无限弹之类。
    我在这里一并回答一下,并且稍微说说原理。因为我对地图方面其实是一窍不通,如果有
    说的不对的地方,还请指正。
    其实这些现象都是使用了作弊地图导致的。本来魔兽争霸是有一个地图验证的,如果你跟
    主机的图不同,是进不去的(要下载地图)。但是魔兽对地图中的war3map.j文件是进行b
    cc(block check character)校验的,bcc不同于md5,bcc一般只是用来排错的,并不是加
    密算法。所以就有人写出了这样的代码,可以在b文件末尾添加上一些不起作用的字串,来
    让b文件的bcc校验码等于a文件(具体代码我就不贴出来了,很容易搜到)。于是呢,我们
    就可以做到随意修改地图中的war3map.j ,然后再处理一下,使之跟原来的war3map.j的b
    cc校验码相同。再把改过并处理后的war3map.j文件替换原来的,这样做出来的作弊地图,
    暴雪的验证会因为bcc校验相同,而把它认为和原版图是相同的。达到的效果就是,别人用
    正版图建主机,你可以进入,你用盗版图建主机,别人用正版图也可以进入。但是别以为
    可以为所欲为的修改war3map.j ,虽然你突破了验证这一关进入了游戏,但是魔兽的联机
    机制是没有办法突破的。


    IP属地:甘肃2楼2009-03-11 18:12
    回复
      因为魔兽联机机制的存在,你要是随意改了war3map.j,例如改成给自己增加10000的钱,
      但是别人是按照的没有修改的war3map.j,在别人机器中你是没有那么多钱的。这时你买一
      个8000的物品,在你自己机器上是可以的,因为你有10000的钱,但是在其他人机器上,你
      钱却根本不够!这样的不合理动作就会造成你跟其他人断开连接。
      也就是说,你只能修改那些不会造成冲突的地方。例如有些作弊图可以显示出地图全开的
      效果,因为这些显示的东西只是在你本地机器上显示出来的,并不会对其他玩家照成冲突
      。类似这样的修改都是可行的,不会掉线。


      IP属地:甘肃5楼2009-03-11 18:12
      回复
        那么,为什么会出现这种有变态技能效果的dota作弊图呢?我刚开始也很困惑,这么夸张
        的改动怎么竟然没有掉线?我跟朋友要了个作弊图玩的replay,在我的机器上,用正版do
        ta地图播放,竟然完全再现了那些变态效果!因为我对地图方面并不了解,所以开始上网
        找资料,并通过qq向某些搞地图的高人请教,又下载了那个变态版dota作弊图和某平台私
        自山寨的所谓“原版”dota图,提取出来war3map.j来进行对比。经过n久的努力,总算搞
        明白他是怎么改出来这种效果的了。


        IP属地:甘肃6楼2009-03-11 18:12
        回复
          原来是因为dota使用到了game cache,而作弊图是单方面修改了game cache中的数据,然
          后通过函数同步给了所有的玩家。通俗点说,game cache相当于一个池子,所有玩家共享
          这块区域,任意一个玩家都可以修改这个池中的数据,也可以发出通知,让所有人都来同
          步这个池子,这样就变相修改了其他人的数据。举个例子,例如dota里黑曜石的放逐技能
          ,它可以减少一个人的智力,一分钟后再归还给他,dota里关于这个技能的函数,把目标
          和要归还的智力值记录在game cache中,1分钟之后会再从game cache取出目标和智力值,
          给目标加上相应的智力值,就完成了归还这个人的智力的过程。但是在作弊图中,这里增
          加了代码,先进行一个判断,如果黑曜石是本机玩家,会把game cache中记录的目标改成
          本方随机的一个队友,然后把game cache中记录的智力值改为500,然后通知所有玩家同步
          game cache中的这两个值,这样就完成了对所有人game chche中这两个值的修改。1分钟一
          到,dota就会向这个目标“归还”智力,这样,本方的一个玩家就凭空增加了500智力。(
          那个被减少智力的倒霉玩家就无法被归还了,可怜)


          IP属地:甘肃7楼2009-03-11 18:13
          回复
            大致的原理就是这样了,具体细节我就不详细叙述了。不过dota用到game cache的地方其
            实并不多,所以能改的地方也就那几个。这也是为什么作弊图要专门改这几个地方,而不
            是改成例如加钱或者加攻击力或者直接胜利之类的,不是不想改,而是无法实现。另外,
            暴雪官方的地图是不会这样使用game cache的,所以不用担心对战地图被改(另外对战图
            还有暴雪标志的保护)。其他的rpg地图,如果本身没有用到game cache的,也就改不出来
            什么花样,最多显示个全图之类。
            暴雪将会在1.23修补这个地图验证漏洞,目前1.23的补丁已经在测试中了,相信升级之后
            ,这种改图作弊将不复存在。只是不知国内玩家到时是不是还要继续死守bug频出的1.20呢
            ?


            IP属地:甘肃8楼2009-03-11 18:13
            回复
              1.既然他也这么说,rp挂果然不存在
              2.在旧体制下应用新技术带来新漏洞和风险,本来暴雪的game cache设计构思不是这么用的
              3.对战里即使不改数据只单方面mh也是很严重的
              4.据说暴雪标志也能被伪造


              11楼2009-03-11 18:21
              回复
                技术贴要顶


                IP属地:福建12楼2009-03-11 18:23
                回复
                  双大说的很正确
                  看标志是否是 暴雪的根本没有办法辨别地图的真伪
                  有个软件可以改的
                  ~


                  13楼2009-03-11 18:23
                  回复
                    • 58.54.248.*
                    ding ni !
                    3Q


                    14楼2009-03-11 18:24
                    回复
                      有~意思~~


                      IP属地:江苏15楼2009-03-11 18:26
                      回复
                        不是很懂啊


                        IP属地:四川17楼2009-03-11 18:31
                        回复
                          学习了。。。
                          双大的第四条必然同意。。。


                          IP属地:福建18楼2009-03-11 18:31
                          回复
                            好贴要顶,解释了很多问题,建议加精,反正现在作弊图已经泛滥成灾了,删贴禁止人们讨论也禁不过来,干脆搞透明一点让人们都了解一下


                            19楼2009-03-11 18:34
                            回复