最近老有人问我是不是出了改dota英雄技能的外挂,什么月骑无限大,剑圣无限斩,巫妖无限弹之类。
我在这里一并回答一下,并且稍微说说原理。因为我对地图方面其实是一窍不通,如果有说的不对的地方,还请指正。

其实这些现象都是使用了作弊地图导致的。本来魔兽争霸是有一个地图验证的,如果你跟主机的图不同,是进不去的(要下载地图)。但是魔兽对地图中的war3map.j文件是进行bcc(block check character)校验的,bcc不同于md5,bcc一般只是用来排错的,并不是加密算法。所以就有人写出了这样的代码,可以在b文件末尾添加上一些不起作用的字串,来让b文件的bcc校验码等于a文件(具体代码我就不贴出来了,很容易搜到)。于是呢,我们就可以做到随意修改地图中的war3map.j ,然后再处理一下,使之跟原来的war3map.j的bcc校验码相同。再把改过并处理后的war3map.j文件替换原来的,这样做出来的作弊地图,暴雪的验证会因为bcc校验相同,而把它认为和原版图是相同的。达到的效果就是,别人用正版图建主机,你可以进入,你用盗版图建主机,别人用正版图也可以进入。但是别以为可以为所欲为的修改war3map.j ,虽然你突破了验证这一关进入了游戏,但是魔兽的联机机制是没有办法突破的。

在这里稍微谈一下魔兽的联机机制,没兴趣的请略过这一段。魔兽联机时,一直有个同步机制,每个联机的玩家都会同时计算所有数据,一旦有不一致,就会导致掉线,这也是为什么用金山游侠之类的游戏修改器单机时可以改钱,联机时一改就掉线。因为你只能修改你自己的机器上的数据,而无法改别人的,单方面修改的结果就是造成你跟其他人不同,你就会掉线。当然,如果所有人同时修改的话,仍然是不会掉线的,所以现在有一些联机修改器,参加游戏的几个玩家一起开这个修改器,可以在玩rpg时改钱什么的,我几个同学就老是用这种修改器来通关一些很难打的rpg图。顺便说一下,这样玩下来保存的replay是无法正常播放的,因为replay只记录动作,你使用修改器的改动不会被记录,播放replay时会因为你并未像你游戏时那样修改数据,造成replay不合逻辑而出错。再顺便说一下吧,为什么所谓的人品外挂并不能实现。曾有人发帖抱怨,怎么蓝胖子次次放招都多重施法,怎么某人每次都暴击,他们是不是用了人品挂。其实这是不可能的,有人以为魔兽中的随机数据都是由主机计算的,这样主机就可以找到办法来修改随机数,造成每次都对他有利的结果。但是实际中并非如此,随机数也是所有人一起计算的,也就是说魔兽里的随机是个伪随机。在一局游戏一开始时,主机会发给每个玩家一个随机数种子(这个种子很有可能就是主机从建立主机到游戏开始所经历的毫秒数),之后的一整局中,所有的随机数都根据这个随机数种子,依照事先定好的算法计算出来,这样也就保证了所有人计算出同样的“随机”结果。另外,这个随机种子也会记录进replay,这也从一个侧面说明了魔兽里的随机是伪随机,如果是真的随机,replay就无法重现了。说的有点多了,下面回到正题。

因为魔兽联机机制的存在,你要是随意改了war3map.j,例如改成给自己增加10000的钱,但是别人是按照的没有修改的war3map.j,在别人机器中你是没有那么多钱的。这时你买一个8000的物品,在你自己机器上是可以的,因为你有10000的钱,但是在其他人机器上,你钱却根本不够!这样的不合理动作就会造成你跟其他人断开连接。
也就是说,你只能修改那些不会造成冲突的地方。例如有些作弊图可以显示出地图全开的效果,因为这些显示的东西只是在你本地机器上显示出来的,并不会对其他玩家照成冲突。类似这样的修改都是可行的,不会掉线。
那么,为什么会出现这种有变态技能效果的dota作弊图呢?我刚开始也很困惑,这么夸张的改动怎么竟然没有掉线?我跟朋友要了个作弊图玩的replay,在我的机器上,用正版dota地图播放,竟然完全再现了那些变态效果!因为我对地图方面并不了解,所以开始上网找资料,并通过qq向某些搞地图的高人请教,又下载了那个变态版dota作弊图和某平台私自山寨的所谓“原版”dota图,提取出来war3map.j来进行对比。经过n久的努力,总算搞明白他是怎么改出来这种效果的了。
原来是因为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智力。(那个被减少智力的倒霉玩家就无法被归还了,可怜)
大致的原理就是这样了,具体细节我就不详细叙述了。不过dota用到game cache的地方其实并不多,所以能改的地方也就那几个。这也是为什么作弊图要专门改这几个地方,而不是改成例如加钱或者加攻击力或者直接胜利之类的,不是不想改,而是无法实现。另外,暴雪官方的地图是不会这样使用game cache的,所以不用担心对战地图被改(另外对战图还有暴雪标志的保护)。其他的rpg地图,如果本身没有用到game cache的,也就改不出来什么花样,最多显示个全图之类。

暴雪将会在1.23修补这个地图验证漏洞,目前1.23的补丁已经在测试中了,相信升级之后,这种改图作弊将不复存在。只是不知国内玩家到时是不是还要继续死守bug频出的1.20呢?
强行插入广告一则:浩方平台会再对地图进行自己的验证,md5验证,作弊图是无法通过的。
至于做山寨dota图的某平台嘛,就我目前来看,它是没有任何地图验证的,唉。

应广大群众强烈要求,这里给出山寨版dota 6.57c的作弊图链接地址,请大家自行围观(话说我参照这个做出了58b和59c的作弊图,活活活):
http://sc2dota.com/news/310.html

魔兽争霸的地图验证漏洞和作弊图原理,兼谈魔兽联机机制[转载]相关推荐

  1. 地图切片的概念与原理

    为什么80%的码农都做不了架构师?>>>    定义 地图切片:采用预生成的方法存放在服务器端,然后根据用户提交的不同请求,把相应的地图瓦片发送给客户端的过程,它是一种多分辨率层次模 ...

  2. 魔兽争霸自动地图元件的绘制原理

    魔兽争霸自动地图元件的绘制原理 序: 本文主要介绍一种简单高效的自动地图元件的绘制方法,基本的原理是基于CodeProject的作者为Colin Vella的一篇文章:http://www.codep ...

  3. openssl 签发sm2证书_首个NSA公开披露的软件系统漏洞——CVE20200601数字证书验证漏洞分析与实验...

    文/林璟锵 刘广祺 孟令佳 万会庆 王琼霄 王伟 王文杰 徐博文 中国科学院数据与通信保护研究教育中心 中国科学院信息工程研究所 信息安全国家重点实验室 1. CVE-2020-0601漏洞 2020 ...

  4. 逻辑漏洞----身份验证漏洞

    1.逻辑漏洞的概要 逻辑漏洞是基于开发人员设计程序时,逻辑不严密,导致攻击者可以修改,绕过,中断整个程序,让程序按照开发人员的预料之外去执行 如某一网页的登录验证逻辑: 输入用户名,密码------输 ...

  5. shiro 721 反序列化漏洞复现与原理以及Padding Oracle Attack攻击加解密原理

    文章目录 1. 前置知识 1.1 shiro550利用条件 原理 1.2 shiro721利用条件 原理 shiro-721对cookie中rememberMe的值的解析过程 1.3 基于返回包的sh ...

  6. 【第13章】网络安全漏洞防护技术原理与应用(信息安全工程师 )-- 软考笔记

    第13章 网络安全漏洞防护技术原理与应用 13.1 网络安全漏洞概述 13.1.1 网络安全漏洞概念 网络安全漏洞又称为脆弱性,简称漏洞.漏洞一般是致使网络信息系统安全策略相冲突的缺陷,这种缺陷通常称 ...

  7. SSL/TLS RC4 信息泄露漏洞(CVE-2013-2566)【原理扫描】

    RC4加密算法关闭 一.漏洞信息 二.验证方法 三.关闭apache对RC4的支持 一.漏洞信息 2015年3月26日,国外数据安全公司Imperva的研究员Itsik Mantin在BLACK HA ...

  8. 【文件上传绕过】——前端检测_前端js验证漏洞

    文章目录 一.实验目的: 二.工具: 三.实验环境: 四.实验目的: 五.漏洞说明: 1. 漏洞原理: 2. `js前端验证`过程代码: 六.实验过程: 1. 判断是否存在前端`js绕过漏洞`: 1. ...

  9. Samba nsswitch/pam_winbind.c文件输入验证漏洞

    漏洞名称: Samba nsswitch/pam_winbind.c文件输入验证漏洞 CNNVD编号: CNNVD-201312-047 发布时间: 2013-12-05 更新时间: 2013-12- ...

  10. 魔兽争霸3地图(WarIII Maps):梦若流星

    魔兽争霸3地图(WarIII Maps):梦若流星 梦若流星 游戏类型:RPG 通关时间:30分钟 流星蝴蝶剑后传, 即使孟星魂想独善其身, 也未必就能如愿------ 为了更好的体验游戏,请在在&q ...

最新文章

  1. 夏季编辑系统的联想感觉
  2. 从NCBI当中SRA数据库中下载高通量测序数据
  3. 程序员出身,身价 340 亿!没有他,可能我们刷不了 B 站
  4. 2021年春季学期-信号与系统-第十二次作业参考答案-第六小题
  5. python运行系统找不到指定文件_“系统无法找到指定的文件”当调用Python中的subprocess.Popen...
  6. 前端学习(2886):如何短时间内实现v-for 组件化设计方案
  7. qsort 三级排序
  8. python爬虫要不要学正则_Python爬虫入门,如何使用正则表达式
  9. XCode插件因为升级不能用了怎么办?几个步骤教你搞定
  10. eclipse快捷键 自动生成get set方法,转到所调用的方法
  11. android Monkey test测试
  12. 如何给光耦输入端限流
  13. 【WPS表格】函数的3种引用方式,4种切换模式
  14. 【CodeVS4093】EZ的间谍网络
  15. 中英文标点符号切换的组合键_(完整版)切换中英文标点快捷键
  16. J2SE 1.5的for增强循环
  17. linux notifier的理解和应用
  18. R720服务器打开Linux,戴尔服务器(R720\R820)在linux6.4下双网卡绑定具体步骤
  19. 3个自由度搬运机械手设计【CAD图纸+毕业论文+电路图+梯形图+接线图】
  20. [系统安全] 二十二.PE数字签名之(下)微软证书漏洞CVE-2020-0601复现及Windows验证机制分析

热门文章

  1. 华硕飞行堡垒atk驱动在哪_双11福利大放送 11月8日华硕再开血拼狂欢模式
  2. LibreCAD的基本使用
  3. 论文纠错和管理文献工具
  4. java dht 爬虫_DHT爬虫(golang版-附源码)
  5. DSP技术是利用计算机或,什么是dsp技术?dsp技术有哪些应用?
  6. 《别闹了,费曼先生》1
  7. 【历史上的今天】11 月 14 日:微软发布 PowerShell;彼得·诺顿出生;Firefox 更换内核
  8. 黑马程序员软件测试面试宝典
  9. ROM界面美化基础(framework-res、SystemUI)
  10. python 大智慧自定义数据_利用EXCEL函数公式制作大智慧自定义数据的方法