home *** CD-ROM | disk | FTP | other *** search
/ The Hacker's Encyclopedia 1998 / hackers_encyclopedia.iso / pc / crack / ld12.txt < prev    next >
Encoding:
Text File  |  2003-06-11  |  3.5 KB  |  197 lines

  1. ;Symphony ver 1.0, 1.1 and lotus 123 unprotect with out mods to pgm
  2. ;Change name to ld12.asm
  3. ;modified for 1.1 by P.B. 08/30/85
  4. ;
  5. ;=================================================
  6. ;For SYMPHONY 1.1 :
  7. ;
  8. ; LD program will read a disk in a drive that is
  9. ; loged on during loading of SYMPHONY 1.1.
  10. ; You may optionally specify drive that is to be 
  11. ; examined during initial execution of SYMPHONY
  12. ; D>LD C: will always check drive C:
  13. ; This optional drive can be changed at any time
  14. ; by re-executing LD n:
  15. ;
  16. ;This is a part of COPY UN-PROTECT. 
  17. ;=================================================
  18.  
  19. CSEG    SEGMENT
  20.     ASSUME DS:CSEG, SS:CSEG ,CS:CSEG ,ES:CSEG
  21.  
  22.     ORG    5CH
  23.  
  24. FCB    DB    0
  25.  
  26.     ORG    0100H
  27.  
  28. FIRST:    JMP    INIT
  29.  
  30. BCKADR    DB    4 DUP(0)
  31. SERIAL    DB    ' (no serial #) '
  32. TEMP    DB    0
  33.  
  34. UNPROT    PROC    FAR
  35.     STI
  36.     CMP    CL,19H
  37.     JNZ    UNPR1
  38.  
  39.     PUSH    DS
  40.     PUSH    SI
  41.     PUSH    DI
  42.     PUSH    CX
  43.     PUSH    CS
  44.     POP    DS
  45.     MOV    SI,OFFSET SERIAL
  46.     MOV    DI,BX
  47.     MOV    CX,0FH
  48.     CLD
  49.     REPZ    MOVSB
  50.     POP    CX
  51.     POP    DI
  52.     POP    SI
  53.     POP    DS
  54.  
  55.  
  56.     JMP    NOSER
  57.  
  58. UNPR1:    CMP    CL,20H    ;' '
  59.     JZ    UNPR2
  60.     CMP    CL,30H    ;'0'
  61.     JZ    UNPR2
  62.     CMP    CL,40H    ;'@'
  63.     JNZ    UNPR3
  64.  
  65. UNPR2:    MOV    AH,10H
  66.     JMP    UNPR7
  67. UNPR3:
  68.     PUSH    BP
  69.     MOV    BP,SP
  70.     CMP    WORD PTR [BP+2],OFFSET 0A8ABH
  71.     JZ    UNPR4
  72.     CMP    WORD PTR [BP+2],OFFSET 0A88BH
  73.     JZ    UNPR4
  74.     CMP    WORD PTR [BP+2],OFFSET 66F4H
  75.     JZ    UNPR5
  76.  
  77. ;SYMPHONY 1.1 -------------------
  78.     CMP    DL,0        ;access drive a?
  79.     JNZ    GBACK        ;no..
  80.     CMP    AH,2        ;read function?
  81.     JNZ    GBACK        ;no..
  82.     CMP    CS:TEMP,63H    ;was last request for sector 63h?
  83.     JZ    DO11        ;yes..
  84.     CMP    CS:TEMP,DL    ;is the counter 0?  (dl is 0)
  85.     JNZ    DO11X        ;no, do not read disk
  86.     CMP    CL,63H        ;is the requested sector 63h?
  87.     JNZ    GBACK        ;no, just a regular read request..
  88.     MOV    CS:TEMP,CL    ;save it as a flag
  89.  
  90.     PUSH    AX
  91.  
  92.     MOV    AL,CS:FCB    ;see if user indicated drive?
  93.     OR    AL,AL
  94.     JNZ    HAVE        ;yes...
  95.  
  96.     MOV    AH,19H        ;get the current drive
  97.     INT    21H
  98.     INC    AL
  99.  
  100. HAVE:    CMP    AL,2        ;above B:?
  101.     JG    HARDD        ;yes..
  102.     DEC    AL
  103.  
  104. SAVEIT:    MOV    BYTE PTR CS:DRIVE,AL    ;store the default
  105.     JMP    SHORT NODRV
  106.  
  107. HARDD:    CMP    AL,4        ;above D:?
  108.     JG    NODRV        ;yes, that's no good
  109.  
  110.     SUB    AL,3
  111.     OR    AL,80H        ;make it hard drive
  112.     JMP    SHORT SAVEIT
  113.  
  114. NODRV:    POP    AX
  115.  
  116.     MOV    DL,0        ;force hard disk 80=c: , 81=d:
  117.                 ;if no hard disk, then will have to re-execute
  118.                 ;SYMPHONY few times until it comes up
  119. DRIVE    EQU    $-1
  120.  
  121.     JMP    SHORT GBACK1    ;it works for some reason
  122.  
  123.  
  124. DO11:    MOV    CS:TEMP,CL    ;save sector number (will use it as counter)
  125. DO11X:    DEC    CS:TEMP        ;decrement count
  126.     JMP    SHORT UNPR5    ;return with carry clear (read ok)
  127. ;SYMPHONY 1.1 ==================
  128.  
  129.  
  130.  
  131. GBACK:    MOV    BYTE PTR CS:TEMP,0    ;clear counter (just in case)
  132. GBACK1:    POP    BP
  133.     JMP    SHORT BACK
  134.  
  135. UNPR4:    CMP    CL,8
  136.     JNZ    UNPR6
  137. UNPR5:    XOR    AH,AH
  138.     POP    BP
  139. NOSER:    CLC
  140.     RET    2
  141.  
  142. UNPR6:    MOV    AH,2
  143.     POP    BP
  144. UNPR7:    STC
  145.     RET    2
  146.  
  147. BACK:    JMP    DWORD PTR    CS:BCKADR
  148. UNPROT    ENDP
  149.  
  150. INIT    PROC    NEAR    
  151.     CLI
  152.     PUSH    CS
  153.     POP    ES
  154.     MOV    CL,FCB
  155.     PUSH    DS
  156.     MOV    SI,4CH
  157.     XOR    AX,AX
  158.     MOV    DS,AX
  159.     MOV    DI,OFFSET BCKADR
  160.     CMP    WORD PTR [SI],OFFSET UNPROT
  161.     JNZ    DOIT
  162.     OR    CL,CL
  163.     JZ    INI2
  164.     MOV    AX,[SI+2]
  165.     MOV    ES,AX
  166.     MOV    ES:FCB,CL
  167. INI2:    POP    DS
  168.     MOV    DX,OFFSET MSG2
  169.     MOV    AH,9
  170.     INT    21H
  171.     RET
  172.  
  173. DOIT:    MOV    CX,4
  174.     CLD
  175.     REPZ    MOVSB
  176.     POP    DS
  177.     PUSH    DS
  178.     MOV    DX,OFFSET MSG1
  179.     MOV    AH,9
  180.     INT    21H
  181.     MOV    DX,OFFSET UNPROT
  182.     MOV    AX,2513H
  183.     INT    21H
  184.     POP    DS
  185.     MOV    DX,OFFSET init
  186.     STI
  187.     INT    27H
  188. MSG1    DB    'LD 1.2 UNPROTECT for SYMPHONY 1.0 & 1.1, LOTUS now resident.'
  189.     DB    0DH,0AH
  190.     DB    'Usage: LD [d:]$'
  191. MSG2    DB    'LD already loaded.$'
  192. INIT    ENDP
  193.  
  194.     CSEG    ENDS
  195. ;
  196. END    FIRST
  197.