C++实现11平台魔兽全图外挂
上周学校考试,《随机过程》随机过,考过的人都知道。
小白也很愿意玩dota,但是技术拙计,只能靠全图作为辅助。一直用着别人的外挂,所以考完试花了2天时间研究了一下,现在和大家分享一下。
魔兽争霸1.20E本来是一个很稳定的版本,但是国人似乎不热衷于开发游戏而更青睐于研发外挂,所以最先出现了dota“互通图”,这种技术比较低端,自己修改J文件,在HF建主挂机2天,让大家几乎都下载他的盗版图。后来玩家知道了不和进去需要下载地图的主机玩,这些人又发现了bcc校验,一中略显低端的异或校验,再简单的绕过平台地图检测,他们发现竟可以肆意修改J文件并且进别人主机不需要读图。
这里要说一下暴雪研发魔兽争霸时就设计了同步机制,每个玩家的动作会发送给其他玩家,仅仅是动作,比如我打了你一下,但是爆不暴击还是miss就由每个玩家本地运算,为了使大家运算结果相同,游戏开始时会发给每个玩家相同的随机种子。大家运算之后再将结果存在Game Cache(GC),这是公用的地方,如果你的和别人的不同,数据不同步,就会发生网上大家一直在问的“11平台检测到不匹配”。
但是修改J文件之后你的异常数据是通过魔兽的合法函数修改GC的,别人也会按照这个数据计算,就出现了“不读主机地图,却可以剑圣无限无敌斩”的情况。
这本身没什么,但是牛逼的程序猿们又发现1.20的致命bug,J文件里可以运行任意机器码。通俗点就是我修改了地图你如果下载了我的地图和我一起玩,我就可以通过这张地图格式化你的硬盘!
暴雪还是很负责任的公司,立即推出了1.22,1.23过渡版本,几次测试后终于在1.24彻底解决互通地图问题,冰蛙的地图不支持新版本魔兽(因为他还使用的是GC),也随着魔兽的更新立即更改GC为现在的哈希表。
其实没有破解不了的程序,但是对于低玩的我们或者说外挂还不够发展的1.24E版本,目前为止刷钱秒杀修改属性等还不是很容易,因为不好突破魔兽的同步机制。但是互通还是可以实现的,虽然魔兽争霸3摒弃了bcc换了高级一点的校验,但md5都能没破解,过地图校验没什么。
既然同步不好过,那就干点不同步的事————开图!
你在这里开个全图是不会发送给别人的,所以不会出现 数据异常。值得注意的一点就是:开了图可以选中敌方阴影中的单位,这个选中动作会发送出去,记录在录像中,所以举报的话铁证如山。
有些魔兽地图本身自带反mh的,比如在不可见区域建立一个魔法特效,谁看见了就证明谁开图。但dota从没见谁打-AntiHack(-ah),冰蛙也不主修反mh,所以地图反mh这一关就算过了。
那剩下的就是过平台检测。
11平台的检测机制我没有研究,我是win7的电脑,没开XT研究钩子,但从我用的外挂来看有一点可以肯定:各个房间的检测机制不一样。我在教育房玩从未被检测,但一去双线房立马被关小黑屋。
刚开始我用CE直接修改人物属性,金钱,很开心,可是我修改过的数据一旦需要上传立即被T,我还天真的想怎么能做到修改,后来一查资料心就凉了:以我目前的水平所能理解的唯一办法就是所有人同一时间修改数据,这不是废话么!
马上我就改变思路了,既然做外挂的都做不出来我一个外行更不可能研究出来,于是就很现实的把目标转向全图。
目前网上能搜到的全图代码不多,百度文库有一份修改单机版的,还是修改game.dll的,修改完了以后每次都是开全图,想不开都不行。我的目的是想开的时候才开。
于是我就打起了我使用的这个外挂的主意,没学过破解,不知道怎么分析汇编代码,但是好在他没有壳,我知道这类外挂主要就是修改内存,不会涉及注入线程之类的,所以直接OD附加对“写内存”函数下断,花了半天时间找到了所有需要修改的内存地址,并记录了修改之后的值。
我在网上查到说魔兽的不可见区域存在一个位于本地内存中的2维数组里,修改那里可以达到效果。
但据我“破译”的我这款外挂修改的内存来看,他修改的应该是函数,我看见了许多“e9”“90”字节。
以上是对我2天来搜索以及思考的结果有个交代,下面来说说怎么用C++实现开图。
第一步,打开魔兽进程。
这里我用我之前帖子里提过的万能开头发现不好用了!网上一查发现权限不够,我就搜了一段提升权限的代码,之后就可以打开魔兽进程了(魔兽争霸3的窗口标题是“Warcraft III”,那个三可不好打了!)。
注意:上传附件及图片大小不得大于30M。
⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途。
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。
