魔兽争霸mh:魔兽争霸3的MapHack制作教程(一)显示敌对单位 2024-05-06 19:17:07 0 0 魔兽争霸3的MapHack制作教程 转自 果子林 http://alzzl.spaces.live.com/blog/cns!C1FF77E38059705D!274.entry?wa=wsignin1.0&sa=564164344 很抱歉再次将果子林的文章给翻出来...还请原谅我多情的打扰...本文参考了Chaotic的HowTo create a basic Maphack, 原文地址如下: http://www.skillhackerz.com/Chaotic/Tutorial/Mh1/index.htm 由于对原文做了较大的修改,最好将本文与原文参照起来看。 ================================================ 正文: 软件版本: 魔兽争霸3:1.20e CheatEngine:5.3 WindowsXP VisualBasic6.0 制作MH的前期准备: -游戏修改器,推荐使用CheatEngine( http://www.cheatengine.org/) -基础的汇编语言知识 -基础的游戏修改知识 -基础的编程能力 -窗口模式下运行魔兽争霸3(加-window参数) ->为其创建一个快捷方式,右键点击,选择“属性”,在“目标”框的最后加上“-window” 第一部分 猜测地图迷雾的实现原理 经过测试,魔兽争霸3的地图迷雾的原理是: 敌对单位可见时,值为1 敌对单位不可见时,值为0 以下部分将基于这个进行内存地址的搜索。 第二部分 搜索内存地址 =用窗口模式启动游戏,随便选个小兵到野怪附近,这时由于该野怪在视野范围内所以可以看见它。 =打开CE,选择魔兽3的进程war3.exe,将Value值设为1,Value Type值设为Byte,点击First Scan开始搜索。 =搜索完毕后,切换到WC3,拉开小兵使那个野怪不可见,返回CE,将Value值改为0,点击Next Scan。 =搜索完毕后,再回到游戏,移动小兵,使那个野怪可见,返回CE,搜索1 =这样反复搜索,最后可以得到大约10多个地址,然后依次锁定为1,测试是否是我们在找的那个。 =我这次的值是09C15CE2,我锁定这个地址的值为1,切换到游戏中会看到那个野怪在不断的闪烁。 =找到了地址就可以对其跟踪了,非常方便CE就有这个功能! =取消该地址的锁定,右键点击这个地址,在弹出的菜单中选择Find out what reads from this address =马上就可以看到CE帮我们找到了这句6f2a08b1 -668b3c41 -mov di,[ecx+eax*2] =点击 show disassembler 看看它附近的汇编代码,双击这句改为mov di,01 =哈,地图上所有的野怪都可见了! =至此,最最简单的MH的前期准备就做完了,虽然只能在主地图上看到敌对单位(RPG地图好像不能正常显示),且只能用于你制作时所用的魔兽版本,但是我相信,读了这篇文章聪明的你一定能做出更完善的MH mov di,[ecx+eax*2] movzx esi,word ptr [esi+edx*2] 第三部分 编写代码 由于我不会C,所以只好把Chaotic的代码翻译过来用VB写了。 大致思路如下: 1.获取魔兽争霸3的进程号。 2.提升自己的debug权限(否则无法用writeprocessmemory)。 3.对魔兽进程的相关地址进行改写 最终效果如下: 具体代码不贴了,想看的自己下载。由于我用的是1.20e搜索的地址,所以其他版本需自行按教程找到相应的地址 果子林用VB写的源代码 http://user.iriverchina.com/3470/WC3MaphackDEMO.rar 收藏(0)