以勇者斗恶龙之游戏为说明 ,以前第一代保护和解法 :
保护 : 解法 :
设定磁盘参数 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 放入
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




