荔园在线

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

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


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




    ┌━━━━━━━━━┐
    ┃  5-1  无缝锁介绍 ┃
    └━━━━━━━━━┘

    方法 : 因为一个磁轨无法容纳 N=6 ,所以会格式化出坏轨(BAD CRC)
           同时利用磁碟机无法正确写入索引孔附近资料,因此拷贝卡等
           硬体拷被工具也无法拷贝,但如果仍要读该轨时,磁碟就会顺便
           将索引孔的资料读出,只要比对其资料即可知是否原版。
    流程 :           ┌━━━━━━━━┐
                     ┃  Reset Driver  ┃
                     └━━━┬━━━━┘
                     ┌━━━┴━━━━┐
                     ┃  Read a Track  ┃
                     └━━━┬━━━━┘
                     ┌━━━┴━━━━┐  不是  →
                     ┃  比对是否坏轨  ├━━━━━━┐
                     └━━━┬━━━━┘            ┃
                             ┃  是                  ┃
                     ┌━━━┴━━━━┐ 非预设资料 ┃
                     ┃   比对资料区   ├━━━━━━┤
                     └━━━┬━━━━┘        →  ├━━━━━━━┐
                     ┌━━━┴━━━━┐            ┃   失败结束   ┃
                     ┃   成功的执行   ┃            └━━━━━━━┘
                     └━━━━━━━━┘

    [[[  FORMAT A磁碟第29h轨,第零面,第1个磁区  ]]]
      *****  FORMAT UTILITY  *****

              MOV AX,0000  ; 重置磁碟
              INT 13       ;
              MOV AX,0501   ;
              MOV BX,200    ; FORMAT 参数
              MOV CX,2901   ; 请查 DOS 手册
              MOV DX,0000   ;
              INT 13
              JB  'FORMAT ERROR'
              JMP 'FORMAT COMPLETE'
       ES:200 29 01 01 06    (ID 栏值,请看第二集)

      *****  TRACK DATA  *****

              MOV AX,0000
              INT 13
              MOV BX,0000     ; ┐
              MOV DS,BX       ; ┃ 磁碟参数表,放在 0000:0525
              MOV BX,0525     ; ┘
              MOV AL,06       ; N=6
              MOV [BX],AL     ; 将 0000:0525 磁碟参数改为可读 N=6 的磁区
              MOV AX,0201      ; ┐
              MOV BX,300       ; ┃ 读取 29h 轨,第 0 面,第一号磁区
              MOV CX,2901      ; ┃ 读到的资料放到 ES:BX
              MOV DX,0000      ; ┃ 请查 DOS 手册
              INT 13           ; ┘
              CMP AL,10        ;    是否 BAD CRC
              JZ  'TEST OK'    ;    如果是则跳越到比对资料
              JMP 'ERROR'

          由於 N=6 已超过一个磁区所能容纳的范围,因此变成 BAD CRC
          AL 的返回代码请参考 DOS 技术手册。

      ┌━━━━━━━━━━┐
      ┃  5-2  雷射保护     ┃
      └━━━━━━━━━━┘
         方法 : 将磁片上某一轨用雷射将之破坏,使得该轨原磁片特性全毁
                雷射准确性高,可100%破坏特定轨,而一般使用者不会有雷
                射,也不会花钱买,而造成无法拷贝。
         流程 :
                        ┌━━━━━━━━━━━┐
                        ┃ 格式化该磁轨(Format) ├━━┐ 格式化失败
                        └━━━━━┬━━━━━┘    ┃
                            ┌━━━┴━━━━┐      ┃
                            ┃  写入该轨资料  ├━━━┤ 防写保护
                            └━━━┬━━━━┘      ┃ 或写入失败
                            ┌━━━┴━━━━┐      ┃
                            ┃  读取该轨资料  ┃      ┃
                            └━━━┬━━━━┘      ┃
                        ┌━━━━━┴━━━━━━━┐┃
                        ┃  比对是否与写入资料相同  ├┤ 完全相同
                        └━━━━━┬━━━━━━━┘┃
                            ┌━━━┴━━━┐    ┌━┴━┐
                            ┃   Test OK    ┃    ┃ 失败 ┃
                            └━━━━━━━┘    └━━━┘


            *****  TEST PROGRAM  *****

                    MOV AX,0000
                    INT 13
                    MOV AX,0509     ;
                    MOV BX,0200     ;
                    MOV CX,XXXX     ; Format a Track
                    MOV DX,XX00     ;
                    INT 13          ;
                    JB  'ERROR'
                    MOV AX,0201     ;
                    MOV BX,0200     ;
                    MOV CX,XXXX     ; Read a Track
                    MOV DX,XX00     ;
                    INT 13          ;
                    JNB 'ERROR'
                    JMP 'Compare DATA'

        ┌━━━━━━━━━┐
        ┃  5-3  Weak Bits  ┃
        └━━━━━━━━━┘

     方法 : 使用微弱的写入信号,造成磁片上有介於0与1之间的讯号
            磁碟机每次读取时会读到不同资料,一般磁碟机无法写入
            介於0与1的讯号,只能利用写入时突然 Reset 造成 Weak
            Bit ,旦准确度不高,只能靠外来硬体拷贝程式(拷贝卡)

     流程 :
               ┌━━━━━━━━━━┐
               ┃  读取该轨放入"A"区 ┃
               └━━━━┬━━━━━┘
               ┌━━━━┴━━━━━┐
               ┃  再读一次放入"B"区 ┃
               └━━━━┬━━━━━┘
               ┌━━━━┴━━━━━┐
               ┃ 比对"A"与"B"的资料 ├━┐
               └━━━━┬━━━━━┘  ┃  资料完全相同
                         ┃              ┃┌━━━┐
                     ┌━┴━━┐        └┤ 失败 ┃
                     ┃  成功  ┃          └━━━┘
                     └━━━━┘

            *****  Weak Bit Test  *****

                MOV AX,0000
                INT 13
                MOV AX,0201       ┐
                MOV BX,0200       ┃
                MOV CX,0000       ┃ 读资料到 ES:200
                MOV DX,0000       ┃
                INT 13            ┘
                MOV AX,0000
                INT 13
                MOV AX,0201       ┐
                MOV BX,0400       ┃
                MOV CX,0000       ┃ 读资料到 ES:400
                MOV DX,0000       ┃
                INT 13            ┘
        LOOP:   MOV BX,200           ┐
                MOV AL,ES:[BX]       ┃ 比对是否相同
                CMP AL,ES:[BX+200]   ┃ 若相同则 LOOP
                JZ  LOOP             ┘
                CMP BX,3FF           ┐ 是否比对完毕
                JZ  'ERROR'          ┘
                JMP 'TEST OK'        ; TEST OK

     以上的保护都是从软体上抄下的,将之简化後登出,不过上述例子都是使用
     磁碟 I/O (INT 13h) 方式读取保护,因此很容易被拦截而破解,所以最好的
     方法就是将 ROM (BIOS) SAVE 到程式内,如果须要使用到 INT 13h 时,就
     呼叫自己程式内的 BIOS ,这样就没有问题了,但是由於 ROM 有 32K ,请自
     行抓出可用的程式,摆在自己程式内,这样就算有XX防写程式也不能防止被
     写入资料,但由於此方法必需考虑程式是否过大、版权问题,所以少有人用
     之,例如目前市面常见的 SoftGard 2.00~3.01 都是自己写磁碟 I/O ,所以
     程式庞大,因此将其功能分成三个小档,分别工作之。

     SoftGard 3.00 保护简介 :

       被 SoftGard 保护住的磁片有两个隐藏档,分别为 CML0300.HCL 以及
     VDF0300.VDF。首先由一个主档启动磁片,经过自我侦测程式,然後再把
     把 DEBUG 要 TRACE 用的 INT 0~INT 3 全部换成 SoftGard 所用的程式
     使得 DEBUG 等程式完全当掉,然後再读取 CML0300.HCL 将自己程式完全
     解码,使得SoftGard有正确程式可继续执行(防单步执行),然後将保护轨
     资料与解码後的 VDF0300.VDF 资料比对,若正确的话就将原主档解码,并
     还原各中断向量,然後执行该档。
       对於该种保护的强度可能只有那些真正解过的人才知道了,但是不管保
     护如何强劲,都有其致命伤,就是不管何时都禁止按 Ctrl-Break ,因此如
     果你在 DEBUG 下执行原版的软体,那就在键入"G"後,连打 Ctrl-Break,
     因为就在它解开密码的那一点,就会将程式中断向量还原,然後执行其真正
     的程式,而因为它是最後一个步骤才还原中断向量,因此您可以中断其程式
     也就代表它正执行到保护与正确程式的交接点,就被你的快手中断掉了,此
     时记忆体只留下来真正的程式,再写回磁片就破解了,说穿就是这么诈。

     由於笔者手上有一个类似被 SoftGard 保护的软体,相当强撼,将在下一集
     为您大略说明,想写一些防止被 TRACE 的保护,不能错过。


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


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

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