荔园在线

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

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


发信人: 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软件 网络书店