• 标 题:光盘版变硬盘版(巧夺天工) (3千字)
  • 作 者:getiteasy
  • 时 间:2001-10-4 9:31:14
  • 链 接:http://bbs.pediy.com

 光盘版的游戏一般有以下几种情况:A、安装时全部装进去了,运行时只比较有没有光盘;B、安装时绝大部分已经装进去了,运行时只读光盘上的动画和声音;C、安装时只装了一个引导程序,运行时的要从光盘上读所有的数据(很多多媒体教学光盘就是这样的)。我们主要是破解A、B两种情况。
  前些天从伪装者大哥的破解乐园下载了一个非常好玩的游戏:“奇妙大百科:不可思议的机器”,觉得很不错,今天逛碟市,发现了“重返奇妙大百科:不可思议的机器-巧夺天工”,当即买了下来(D版),回到家一装,最大安装结果竟是光盘版的,可怜我那用了两年的老光驱!如果是别的游戏我就退了,但是这可是我最喜欢的游戏,就自己动手改成硬盘版,它是上面的B型,过程如下:(请先用最大安装)
  首先,如果不放光盘进去的话,它就会出一个对话框,要求你放入这个游戏的光盘,这说明它肯定先判断是否有光盘放进去了,没有就弹出这个对话框,好,就用loader载入evenmore.exe,下bpx getdrivetypea,进入游戏以后马上就被拦下来了,按一下F12,就返回到evenmore的领空,来到这里:
:0042C056 8B0D381F4A00            mov ecx, dword ptr [004A1F38]
:0042C05C C605351F4A0001          mov byte ptr [004A1F35], 01
:0042C063 E858030000              call 0042C3C0
:0042C068 8BD0                    mov edx, eax
:0042C06A 8D4C244C                lea ecx, dword ptr [esp+4C]
:0042C06E E85D070200              call 0044C7D0
:0042C073 8A44244C                mov al, byte ptr [esp+4C]
:0042C077 881D351F4A00            mov byte ptr [004A1F35], bl
:0042C07D 3AC3                    cmp al, bl
:0042C07F 7410                    je 0042C091
:0042C081 8D4C244C                lea ecx, dword ptr [esp+4C]
:0042C085 51                      push ecx
:0042C086 FFD7                    call edi       ----从这里出来;实际上就是getdrivetypea
:0042C088 83F805                  cmp eax, 00000005    ----比较是不是光盘(光盘的返回值是5,硬盘是3)
:0042C08B 0F8455010000            je 0042C1E6      ----是光盘就跳到后面接着执行,不是光盘就要你放入光                                盘
  因此,从0042C086的那个CALL中出来,EAX中应为3,下R EAX 5,将返回值强制改成5,让程序以为放了光盘,按一下F5,程序继续执行,没有要你放入光盘了,但是屏幕过一下就黑了,没有什么反应。按一下ALT+F4,程序会问你是否退出,按“确定”,就正常的退出来了。
  估计造成以上现象的原因是:程序在执行时不仅判断是否有光盘放进去了,还要读光盘上的某个文件(多半是动画文件或声音文件),由于读不到,因此停下来了。
  打开注册表,发现在hkey_local_machines\software\sierra online\setup\evenmore下有一个键:cdpath,值为:F:\Contraptions\Files,我就将它改成了:D:\Contraptions\Files,并将光盘上对应的目录地F:\Contraptions\Files拷贝到硬盘上D:\Contraptions\Files。再运行一遍程序,还是不行。
  这次换一个方法,先运行filemon,再用loader载入,还是下bpx getdrivetypea,拦下后还是按一下F12,还是下r eax 5,还是按一下F5,等屏幕黑了以后,按一下ALT+Tab,切换到filemon中,看到有很多的not found,这多半就是我们缺的文件,看一下,intro.tbv,还有很多的wav文件。将光盘的\Contraptions\Files下的这几个文件(tbv)拷贝到这个游戏的安装目录中,再用上面的方法执行一次,哈,成功了!可以玩了。
  但是别高兴的太早了,过一段时间它又要读光盘,如果没有检测到光盘,还会要你放入光盘。我们就下bpx getdrivetypea,按确定,马上就被拦下来了,按一下F12,又来到了0042C088的位置,下r eax 5,按一下F5,又被拦下来了,再以后,就有很多的中断,并且还读软驱,我受不了了!
    改吧:我一开始是将0042C086处的那个CALL改成了mov al,5(机器码是B005),可是不行,再将je 0042C1E6改成了jmp 0042C1E6,还是不行,只好将cmp eax,5改成cmp eax ,3。
  用ue找到:FFD783F8050F8455010000,改成
       FFD783F8030F8455010000
  问题就解决了!
  最后说一句:如果还想要背景音乐的话,还要将光盘下的music.tbv这个文件拷贝到游戏的安装目录中去;如果想要听解说的话,就将光盘下的voice.tbv拷贝到游戏的安装目录中。
  (额外效果:这个光盘版的游戏放入光盘玩时,有时还要读软驱,可能原来是用磁盘保护的,被人解密了,但是用这个方法改成硬盘版后,就不读软驱了)