光碟版變硬碟版(巧奪天工) (3千字)

看雪資料發表於2001-10-04

 光碟版的遊戲一般有以下幾種情況: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複製到遊戲的安裝目錄中。
  (額外效果:這個光碟版的遊戲放入光碟玩時,有時還要讀軟碟機,可能原來是用磁碟保護的,被人解密了,但是用這個方法改成硬碟版後,就不讀軟碟機了)
  

相關文章