荔园在线
荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀
[回到开始]
[上一篇][下一篇]
发信人: samba (木星), 信区: Hacker
标 题: 拷贝心得(6)
发信站: BBS 荔园晨风站 (Thu Sep 9 07:47:54 1999), 转信
Microsoft (R) Symbolic Debug Utility Version 4.00
Copyright (C) Microsoft Corp 1984, 1985. All rights reserved.
Processor is [80286] ,Files Name : S.EXE (RS2的游戏保护)
-r
AX=0000 BX=0000 CX=9765 DX=0000 SP=0080 BP=0000 SI=0000 DI=0000
DS=1B5D ES=1B5D SS=333D CS=24AF IP=0012 NV UP EI PL NZ NA PO NC
24AF:0012 06 PUSH ES
-u 12 70
24AF:0012 06 PUSH ES ━━━ 未来跳跃用,暂不用到
24AF:0013 0E PUSH CS ┐ 断落对齐
24AF:0014 1F POP DS ┘
24AF:0015 8B0E0C00 MOV CX,[000C] ┐
24AF:0019 8BF1 MOV SI,CX ┃
24AF:001B 4E DEC SI ┃一些没营养的资料 ,待会
24AF:001C 89F7 MOV DI,SI ┃比对资料时的
24AF:001E 8CDB MOV BX,DS ┃长度、位置 资料放入暂存器
24AF:0020 031E0A00 ADD BX,[000A] ┃
24AF:0024 8EC3 MOV ES,BX ┃请注意 BX=DS=CS
24AF:0026 B400 MOV AH,00 ┃
24AF:0028 31ED XOR BP,BP ┃
24AF:002A FD STD ┘
24AF:002B AC LODSB ┐ AX=DS:SI=0-525
24AF:002C 01C5 ADD BP,AX ┃ 将CS:0到CS:525的指令码加起来
24AF:002E AA STOSB ┃ 放到 BP ,若有人单步执行则 BP
24AF:002F E2FA LOOP 002B ┘ 值就有误 ,因但部执行会产生CC码
24AF:0031 8B160E00 MOV DX,[000E] ━ 正常主程式码相加後所得 1/2
24AF:0035 8AC2 MOV AL,DL ┐
24AF:0037 29C5 SUB BP,AX ┃ 等於 SUB BP,DX
24AF:0039 8AC6 MOV AL,DH ┃
24AF:003B 29C5 SUB BP,AX ┘
24AF:003D 39D5 CMP BP,DX ┐ 比对是否曾单步执行
24AF:003F 740C JZ 004D ┘ 未单步执行则跳越
24AF:0041 BA9101 MOV DX,0191 ┐
24AF:0044 B409 MOV AH,09 ┃ 印出 Crc Err 字样
24AF:0046 CD21 INT 21 ┘
24AF:0048 B8FF4C MOV AX,4CFF ┐ End files
24AF:004B CD21 INT 21 ┘
24AF:004D 53 PUSH BX ┐
24AF:004E B85300 MOV AX,0053 ┃ 跳到 CS:53 去执行程式
24AF:0051 50 PUSH AX ┃
24AF:0052 CB RETF ┘
24AF:0053 2E8B2E0800 MOV BP,CS:[0008] ┐
24AF:0058 8CDA MOV DX,DS ┃
24AF:005A 89E8 MOV AX,BP ┃
24AF:005C 3D0010 CMP AX,1000 ┃
24AF:005F 7603 JBE 0064 ┃ 主程式
24AF:0061 B80010 MOV AX,1000 ┃
24AF:0064 29C5 SUB BP,AX ┃
24AF:0066 29C2 SUB DX,AX ┃
24AF:0068 29C3 SUB BX,AX ↓
这个 Game 的保护有点类似 SoftGard ,都利用了计算程式码的长度 ,这
种保护可以 100%侦测出对方是否有过单步执行。
"G 100" 这个指令看起来很单纯 ,只是要求程式执行到 CS:100 时停下来
让使用者能够Debug 自己的程式 ,事实上它真的就是这样 ,不过在 Debug
上是如何执行工作 ,首先它会将 CS:100 的指令码暂时存起来 ,改放个 "CC"
(INT 3) 码来取代 CS:100 的指令码 ,一但执行到此就会触动 INT 3 的中断
而将程式复原 ,并暂时终止程式继续执行 ,等使用者下命令。
程式解说 :
CS:0012 为主程式
↓
设定 SI=523,CX=525
↓←━━━━━━━━┐
取得 CS:SI 的指令码 ┃
↓ ┃还
将此码加入 BP 内 ┃未
↓ ┃加
将 SI 减 1 ,与 CX-1 ┃完
↓ ┃程
CX 是否为零 ┃式
(是否将程式码由头加到尾 ┃码
即CS:0-CS:523) ┃
├━━━━━━━━━┘
↓
比对是否正确
├━━━━━━━┐程
↓ ┃式
印出 Crc Err ┃码
结束程式 ┃正
┌━━━━━━━┘确
↓
执行程式
後记 : 时代一直在变 ,观念也在变 ,尊重版权 ,才能发展出更好用的软体
病毒才能因此灭迹。
希望"防拷"在国内能够早日灭迹 ,这就有赖各位大哥们不要任意将
软体复制给他人使用 (PD例外)。
其实任何保护都是在磁片上制造某种错误 ,然後根据这个错误来判
定是否原版。
拷贝是利用程式来复制这个错误 ,让软体能正确无误的执行。
破解是保护的最大杀手 ,不但将这个错误砍掉 ,更使得软体复制更
为简单容易 ,一道 DISKCOPY 即可搞定。
--
※ 来源:.BBS 荔园晨风站 bbs.szu.edu.cn.[FROM: 202.202.37.146]
[回到开始]
[上一篇][下一篇]
荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店