darkf 发表于 2024-7-22 15:15

某游戏1代win版免CD

本帖最后由 darkf 于 2024-7-23 05:10 编辑

某游戏是95年的,但在2000年出了千禧版,加上由Verok的HD补丁,使得其在最新的Win系统如:Win11、Win10上都可以完美运行,很受我的喜欢,该游戏可以选择一个地图,没事玩一下可能1、2个小时,很能打发时间。游戏要CD,这个每次还得加载虚拟光驱添加iso不是很方便,故修改一下使其免CD。

使用OD打开游戏




点击字符串搜索


找到有关CD和CD-ROM的字符串,如上图看到4500A9和4500D5两处,回到CPU窗口,右键选择go to再选表达式,其中填上4500A9


很容易看出,下图中的两处条件跳转就是免CD的关键跳转,只要避开两处跳转下面的两个关键call就能实现免CD了。


这样就修改这两处关键跳转。很简单地看到,只要把条件跳转改成无条件跳转即可。于是在4500(C上右键选择Binary->Edit


出现下面对话框


将其改成下面这样(感谢@爱飞的猫 朋友提醒!这里原指令长度是6,现在改为5了,所以后面跳转长度要加1,因此是:E9 23 00 00 00 90,错误的截图已修正)


点击OK后,变成下图样式


同样地,再把4500C8这句也改成(和上面完全相同)如下样子


至此,两个关键跳转已经修改完成,应该能免CD了,保存修改



运行新保存的游戏就不需要CD了,但这样修改后,运行游戏时是没有开始动画的。下面用hexedit类的软件修改这个文件使其具有开始动画。用010editor打开刚修改后的文件


选择search工具栏的find,调整为选择ASCII吗,在搜索框里输入\Anim,因为该游戏的动画是放在这个目录里的


搜到这里


将其改成下图样子(即:游戏本来的动画是存于CD上的,现在将其改到存放到游戏目录里)


最后,将游戏CD里的anim目录的内容和目录一起拷贝到游戏目录,如下图所示


至此,再游戏就不要CD了,还有开机动画。

darkf 发表于 2024-7-24 19:42

wudalang123 发表于 2024-7-24 15:12
在修改条件跳转为无条件跳转时,如何确定哪些跳转是检查CD的关键跳转,而不是游戏逻辑的其他部分?

这个地方一看就明白:条件跳转就是可能跳也可能不跳。如果不跳,那就执行下面的命令,那自然就出问题了,这样自然就知道要跳才行!

但并不是所有的问题都是这样的,自然要根据具体的情况去分析,这也正是逆向的魅力所在!

darkf 发表于 2024-7-22 19:06

本帖最后由 darkf 于 2024-7-22 19:26 编辑



@echo2087@forghost22@iwojima @chunfengyidu 统一回复以上各位热心的朋友,我第一次发帖呀,怕说出游戏名称违规,所以没有敢说,也有朋友说出来了,就是《英雄无敌》1代!

ldwz 发表于 2024-7-22 18:05

很神秘的游戏~

echo2087 发表于 2024-7-22 18:15

请教这是什么游戏,看了教程感觉可以搞一搞

forghost22 发表于 2024-7-22 18:22

英雄无敌么?

电子居士 发表于 2024-7-22 18:27

现在玩单机游戏比玩手游好,不会沉迷还能放松

iwojima 发表于 2024-7-22 18:42

什么游戏呢,现在几乎只玩单机了

huakai200 发表于 2024-7-22 18:54

好复杂啊

chunfengyidu 发表于 2024-7-22 18:55

什么游戏?

江秋枫寒花月夜 发表于 2024-7-22 19:00

这是一个很古老的游戏啊
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 某游戏1代win版免CD