darkf 发表于 2024-9-2 19:21

《英雄无敌》3完整版complete(英文)——免cd修改

一、概况



《英雄无敌》3,在是魔法门6取得巨大成功,又在《英雄无敌》2大热后,new world computing大力开发并完善的一款益智类策略游戏。最初版本《埃拉西亚的光复》(简称ROE有8个种族,城堡(Castle)、塔楼(Tower)、壁垒(Rampart)、要塞(Fortress)、据点(Stronghold)、地狱(Inferno)、墓园(Necropolis)、地下城(Dungeon),每个族有7个等级的兵种,兵种都有升级模式,加上6种中立兵种,ROE共有118种单位;而资料片《末日之刃》则增加了元素生物和一些中立生物,合计141种。第二个资料片《死亡阴影》(The Shadow of Death,简称SOD),发行于2000年3月31日。因为元素城的不平衡,在SOD中被取消了,不过单位的设计依然存在,此外游戏添加了7章新战役,新的传送门和7种新的特殊地形,以及12个组合宝物,可以说很多人玩大地图就是了收集宝物特别是组合宝物的快感,同时游戏还平衡修正了一些数值,增加了护城河伤害和战役难度选择。至此SOD共有141种兵,与上一个资料片完全相同。
接着,3DO公司又将三部合并成一个完整版(Complete Edition)进行了发行,本次免CD修改就是在该版本上进行的。




二、逆向过程




首先放进Die检测一下壳情况





可知是没有壳的。


用OD打开程序






自然先去搜索字符串





情况不妙,居然没有搜索到,说明根据没有CD的提示字符串去寻找程序检查光驱的子程序,这条路径是不通的,得另想方法。


这时得祭出WinAPI了,与光驱有关的API,给下图的2个API打上断点





检查一下断点情况,没错,正是所要的







运行程序后,程序被断下







跟进去,来到调用处







此时,我的虚拟光驱是挂载的,所以,看到该API的返回值是eax=5,从注释来看,5正好是DRIVE_CDROM。







接着run to return看看是否出现没有CD的提示以及是那个调用的这个子程序。结果没有提示出现,而来到了调用处。







很显然,这个call就是检测CD的关键call了。撤掉前面对Drive的API断点,在此call处下断点。但在运行前,先看看程序后面有什么东西。显然这个程序的返回值先被保存到,后面接着的2个相同的call都是提示有问题的,会导致程序关闭的。







在上面2个提示call之后,还将存在里的那个子程序的返回值调出来,如果不为0的,将跳转;若为0的,还会在后面将5、6冲掉里面的数值。







如果关键call的子程序返回值不为0,将会跳转到这里(如图)







这样,就可以在关键call的子程序返回值上动脑筋了。


首先,返回值5、6可以排除。


接着,把正确的play盘挂载上去,看看返回值是多少?结果是0







再把虚拟光驱卸载,即没有光驱,结果是2







再把虚拟光驱加载但挂载是非play盘,结果还是2







再看该子程序中,有5种情况的返回值,分别是:


0050C21C|.B8 03000000   mov eax,3
0050C23F|.B8 04000000   mov eax,4
0050C302|.33C0          xor eax,eax
0050C4D1|.B8 02000000   mov eax,2
0050C592|.33C0          xor eax,eax


至此,知道了eax的情况,大致有:0、2、3、4、5、6。


下面,先试试不调用这个子程序情况能否运行?即将call改成直接跳过。结果是程序中断。





既然直接跳过不行,那就直接给eax赋值。先试试1。







结果还是出现没有CD的提示,说明1不正确。再试试7,结果成功了。







再试试8,也是可以的。







说明大于6的返回值都是可行的。至此,免CD基本成功了。




三、不足之处


这样免CD后,由于游戏中有的资源(如:战役模式中的动画,应该是存在光盘上的,所以只有文字而没有动画了,还有就是失败后,被斩首的动画也没有)是存在光盘上,涉及这些资源的游戏调用,自然就调用不到了。




四、hex编辑软件直接修改


如果不想使用OD的,也可以直接使用hex类的编辑软件如:010Editor,进行直接修改。从前面的图片可知,要修改的命令是在004ED9A6地址的call 0050C1C0,将其改为:mov eax,7即可。


下面用010Editor打开heroes3.exe,选search工具栏里的go to









在地址栏里输入000ED9A6,这个就是call 0050C1C0命令行的偏移地址,再回车








来到这里,其中:E8 15 E8 01 00正是call 0050C1C0







将其改成:B8 07 00 00 00,即mov eax,7即可,保存的程序就是免CD的了。








五、资源下载




《英雄无敌》3complete版(英文)下载:


https://www.123pan.com/s/7jpKVv-7bjCh


《英雄无敌》3complete版免CD修改后的程序和win11可以直接运行的HD补丁下载:


https://www.123pan.com/s/7jpKVv-YZjCh

xiangzz 发表于 2024-9-3 05:32

经典的游戏,一台电脑多个小伙伴一起玩!

plazy 发表于 2024-9-4 09:07

陪伴了二十年的游戏,一直在我的桌面上占有一席之地,每次看到图标都是满满的回忆!现在偶尔还用来摸鱼,致敬经典!!
求大佬分流一下,刚点下载要注册、收费?

EssenceA1 发表于 2024-9-3 06:33

这个厉害,当年爱不释手的游戏

简单头脑 发表于 2024-9-3 07:58

这个是真经典的,当年都是不停的刷着玩。

nitian0963 发表于 2024-9-3 07:59

这个厉害,当年爱不释手的游戏

sunshinezero 发表于 2024-9-3 08:07

经典游戏 玩了好多年

坐久落花多 发表于 2024-9-3 08:24

当年挺喜欢H3的尤其是末日之刃,可惜后面的版本都不喜欢

dopey 发表于 2024-9-3 08:24

没玩过,有时间试试

windyhef 发表于 2024-9-3 08:26

当年多么火的游戏,就是现在年纪大了玩不动了,不过还是感谢楼主分享。

wdo1106 发表于 2024-9-3 08:31

经典游戏,细节操作拉满
页: [1] 2 3 4 5 6 7 8 9
查看完整版本: 《英雄无敌》3完整版complete(英文)——免cd修改