荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: samba (木星), 信区: Hacker
标  题: 拷贝心得(5)
发信站: BBS 荔园晨风站 (Thu Sep  9 07:46:34 1999), 转信


    ┌━━━━━━━━━━┐
    ┃   拷贝心得第五集   ┃
    └━━━━━━━━━━┘

弟以勇者斗恶龙之游戏为说明 ,以前第一代保护与解法 :

保护 :                      解法 :

    设定磁碟参数 N=6            设定磁碟参数 N=6

    设定磁碟参数 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
需重新存档。


--
※ 来源:.BBS 荔园晨风站 bbs.szu.edu.cn.[FROM: 202.202.37.146]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店