┌──────────┐
    │   拷貝心得第五集   │
    └──────────┘

弟以勇者鬥惡龍之遊戲為說明 ,以前第一代保護與解法 :

保護 :                      解法 :

    設定磁碟參數 N=6            設定磁碟參數 N=6
       ↓                            ↓
   讀取壞磁軌資料               讀取 DQ.DAT (壞軌資料檔)
       ↓                            ↓
    比對資料                      比對資料

由於兩者都能讀到壞軌資料 ,只不過第二者要事先將壞軌資料存為一個檔案
(DQ.DAT) 較麻煩 ,不過以後可免 KEY DISK ,省事多了 !
弟以市面上的破解版舉例說明 ,茲列出其 EGA 版程式一部份。
-D CS:385
4B70:0385  44 51 2E-44 41 54 00 88 44 03 B9       DQ.DAT..D.9

4B70:0361 1E             PUSH   DS
4B70:0362 0E             PUSH   CS
4B70:0363 1F             POP    DS
4B70:0364 90             NOP
4B70:0365 90             NOP
4B70:0366 90             NOP
4B70:0367 B8003D         MOV    AX,3D00    ┐
4B70:036A BA8503         MOV    DX,0385    │ 開啟 DQ.DAT
4B70:036D CD21           INT    21         ┘      (壞軌資料檔)
4B70:036F 06             PUSH   ES
4B70:0370 1F             POP    DS
4B70:0371 31D2           XOR    DX,DX
4B70:0373 B90020         MOV    CX,2000    ┐
4B70:0376 89C3           MOV    BX,AX      │ 讀取檔案
4B70:0378 B43F           MOV    AH,3F      │
4B70:037A CD21           INT    21         ┘
4B70:037C 72F3           JB     0371
4B70:037E B43E           MOV    AH,3E     ┐
4B70:0380 CD21           INT    21        ┘ 關檔
4B70:0382 1F             POP    DS
4B70:0383 EB0A           JMP    038F
4B70:0385 44             INC    SP
以上程式取代了原來的 INT 7Fh(13h) 的讀取保護軌資料過程。

弟再舉例例說明 ,該遊戲是勇者鬥惡龍 ][ 的一部份程式 :

4B70:6E01 33C0           XOR    AX,AX         ┐
4B70:6E03 8ED8           MOV    DS,AX         │
4B70:6E05 A14C00         MOV    AX,[004C]     │ 將磁碟讀取之 N 值
4B70:6E08 A3FC01         MOV    [01FC],AX     │ 改為 6 (正常為 2)
4B70:6E0B A14E00         MOV    AX,[004E]     │
4B70:6E0E A3FE01         MOV    [01FE],AX     │
4B70:6E11 C5367800       LDS    SI,[0078]     │
4B70:6E15 B006           MOV    AL,06         │
4B70:6E17 884403         MOV    [SI+03],AL    ┘
4B70:6E1A B80000         MOV    AX,0000       ┐ Reset Driver
4B70:6E1D CD7F           INT    7F            ┘
4B70:6E1F BF0800         MOV    DI,0008
4B70:6E22 1E             PUSH   DS
4B70:6E23 50             PUSH   AX
4B70:6E24 B83658         MOV    AX,5836
4B70:6E27 8ED8           MOV    DS,AX
4B70:6E29 C606E22800     MOV    Byte Ptr [28E2],00
4B70:6E2E 90             NOP
4B70:6E2F 881E7E28       MOV    [287E],BL
4B70:6E33 58             POP    AX
4B70:6E34 1F             POP    DS
4B70:6E35 57             PUSH   DI
4B70:6E36 B80001         MOV    AX,0100  ┐
4B70:6E39 050101         ADD    AX,0101  │ 讀取第 27h 軌第 72h 號磁區
4B70:6E3C B97227         MOV    CX,2772  │ 第零面 ,將資料放到 ES:BX
4B70:6E3F BB0000         MOV    BX,0000  │ (9800:0000)
4B70:6E42 BA0000         MOV    DX,0000  │
4B70:6E45 CD7F           INT    7F       ┘
4B70:6E47 5F             POP    DI
4B70:6E48 80FC10         CMP    AH,10    ┐ 若是壞軌則跳越
4B70:6E4B 7403           JZ     6E50     ┘
4B70:6E4D 4F             DEC    DI
4B70:6E4E 75E5           JNZ    6E35
4B70:6E50 B002           MOV    AL,02         ┐
4B70:6E52 884403         MOV    [SI+03],AL    │
4B70:6E55 B90001         MOV    CX,0100       │ 比對資料
4B70:6E58 BB0017         MOV    BX,1700       │
4B70:6E5B B04E           MOV    AL,4E         │
4B70:6E5D 263A07         CMP    AL,ES:[BX]    │
4B70:6E60 7503           JNZ    6E65          │
4B70:6E62 43             INC    BX            │
4B70:6E63 E2F8           LOOP   6E5D          ┘
4B70:6E65 268807         MOV    ES:[BX],AL      ┐ 結果放到此位址
4B70:6E68 26884701       MOV    ES:[BX+01],AL   ┘
4B70:6E6C B80098         MOV    AX,9800     ┐
4B70:6E6F 8ED8           MOV    DS,AX       │
4B70:6E71 B80000         MOV    AX,0000     │
4B70:6E74 B9001A         MOV    CX,1A00     │ 二次比對資料
4B70:6E77 33DB           XOR    BX,BX       │
4B70:6E79 3307           XOR    AX,[BX]     │
4B70:6E7B 052301         ADD    AX,0123     │
4B70:6E7E 43             INC    BX          │
4B70:6E7F E2F8           LOOP   6E79        ┘
4B70:6E81 1E             PUSH   DS
4B70:6E82 50             PUSH   AX
4B70:6E83 B83658         MOV    AX,5836
4B70:6E86 8ED8           MOV    DS,AX
4B70:6E88 C606F32500     MOV    Byte Ptr [25F3],00
4B70:6E8D 90             NOP
4B70:6E8E 58             POP    AX
4B70:6E8F 1F             POP    DS
4B70:6E90 3D7C45         CMP    AX,457C
4B70:6E93 7403           JZ     6E98
4B70:6E95 E95BFF         JMP    6DF3

與第一代的保護法完全相同 ,怎麼去解它呢??  請參考前例
弟附上 CRCEDIT.EXE 二代給您用用,當您執行時請先將原版磁片 A 放入
A 磁碟機上 ,然後鍵入 CRCEDIT2.EXE 即可 ,接著它會讀取壞軌並將之存
檔。
┌────────────────────┐
│    IBM PC Bad Sector Save System.      │
│           Written by  Dekuo Ko.        │
│    Setting Save ID = 27/00/72/06       │
│Crcedit Now Saveing ...Complete OK !    │
└────────────────────┘
代表壞軌資料讀取成功 ,並寫回 CRC.DAT !

┌────────────────────┐
│    IBM PC Bad Sector Save System.      │
│           Written by  Dekuo Ko.        │
│    Setting Save ID = 27/00/72/06       │
│      The DISK not found This ID        │
└────────────────────┘
代表讀取磁片失敗 ,再試一次看看。

請將 RET.EXE 與 CRC.DAT 放於同一檔案區中 ,執行 RET.EXE

接著進入 PCTOOLS 取找尋備份的主檔 (DQ.EXE or DF2.EXE) ,尋找
ASCII="CD7F" 共找到兩個 ,第一個不改 ,第二個改 "CD99"
好啦 ,這個遊戲您可以自硬碟啟動也不會讀取 KEY DISK 了 ,不過切
記 ,每次玩 Game 時都要先載入 RET.EXE 唷 ,否則會當機。

解說 :
RET.EXE 會製造 INT 99h ,當有人呼叫此中斷便會將 CRC.DAT 讀進
記憶體內 ,造成與讀保護軌有同樣之功效。
弟附上該軟體 ,請勿販賣 ,未來該類軟體出新版亦可續用 ,唯 CRC.DAT
需重新存檔。