魔兽争霸3的MapHack制作教程(一)显示敌对单位

魔兽争霸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

你可能感兴趣的:(hack)