home *** CD-ROM | disk | FTP | other *** search
/ Various Unprotection Examples / unprotect.zip / unprotect / COPYPROT / SYMPHONY.UP2 < prev    next >
Text File  |  1985-03-20  |  4KB  |  121 lines

  1.  
  2.            SYMPH   DOCSYMPH   COM^LSYMPHONYUNPHere is the "ENGLISH" version of the Symphony Unprotect procedure:
  3.  
  4. 1. Rename the program
  5.       REN SYMPHONY.CMP SYMPHONY.XXX
  6.  
  7. 2. Type  DEBUG SYMPHONY.XXX
  8.  
  9. 3. After the - prompt appears, type   R       and press Enter
  10.  
  11.    Look at the value displayed for the DS register (left hand, second line)
  12.    Whatever the value is, add 1000 to it. For example, if the DS contains
  13.    05DF, add 1000 to make it 15DF. I will refer to this new value as yyyy
  14.    in the next step.
  15.  
  16. 4. Type  E yyyy:3A05 75      press Enter
  17.  
  18. 5. Type  W                   press Enter
  19.  
  20. 6. Type  Q                   press Enter
  21.  
  22. 7. Rename the program back to the original name
  23.  
  24.    REN SYMPHONY.XXX SYMPHONY.CMP
  25.  
  26.  
  27. Now, BEFORE you run the SYMPHONY program, run the program in this Library
  28. call SYMPH.COM. This need only be run ONCE after each boot. If you want,
  29. you may place it in your AUTOEXEC.BAT file. It uses Interrupt 75H which
  30. should not conflict with other programs (NOTE.. this may not be true on the
  31. 3270PC).
  32.  
  33. After running SYMPH.COM, you may run your patched version of SYMPHONY 
  34. without the need for the master diskette.
  35.  
  36. The other files in this library are:
  37.  
  38. The original unprotection scheme which required you to assemble a  program.
  39. The assembler SYMPH.COM.
  40.  
  41. Good Luck.
  42. nged file
  43. ;-Q            ;exit debuger
  44. ;A>REN SYMPHONY.XXX SYMPHONY.CMP
  45. ;A>SYMPH        ;execute THIS PROGRAM (it modifies the changed interupt
  46. ;            ;back to 13H since SYMPHONY does checksum of it's self)
  47. ;
  48. ;
  49. ;
  50. ;    assemble, link, exe2bin
  51. ;
  52. ;Execute this program before using SYMPHONY.
  53. ;There is no need to re-execute this program after exit from SYMPHONY, in
  54. ;order to use the SYMPHONY again, since it is a resident program
  55. ;
  56. ;
  57. ;to further examine the symphony for possibly other way to solve this, using
  58. ;DEBUG, do:
  59. ;A>DEBUG SYMPHONY.EXE
  60. ;-G2
  61. ;-T3
  62. ;-G8A40
  63. ;-T        ;at this point you will find the the subroutine that fills
  64. ;        ;location ds:8735 with n and int 13 (the second one) which
  65. ;        ;reads the serial number from flopy disk in A. Zeroing 8735
  66. ;        ;fools the symphony, and prevents it from testing for special
  67. ;        ;track/sector structure on the flopy. If the location 8735 is
  68. ;        ;not zeroed, debugging will not be possible after IP 8A4D,
  69. ;        ;since INT 3 will be modified by SYMPHONY.
  70. ;
  71.  
  72. SYMINT    EQU    75H    ;interupt to use
  73.  
  74. SYMFLG    EQU    8735H    ;see above for info
  75.  
  76. CSEG    SEGMENT
  77.     ASSUME    CS:CSEG,DS:CSEG
  78.     ORG    100H
  79. PROGRA:    XOR    AX,AX
  80.     MOV    ES,AX            ;set to segment 0 (interupt table)
  81.     XOR    DX,DX
  82.     MOV    AL,SYMINT        ;interupt number
  83.     MOV    CX,4            ;get position in interupt table
  84.     MUL    CX
  85.     MOV    BX,AX
  86.     TEST    WORD PTR ES:[BX],0    ;test if set?
  87.     JZ    DOIT            ;no, go set it
  88.     INT    20H            ;exit to dos with out mod
  89.  
  90. DOIT:                                ;get interupt routine address
  91.     MOV    word ptr ES:[BX],offset corc      ;store it at the apropriate int address
  92.     MOV    ES:[BX+2],CS        ;also store the segment
  93.     MOV    DX,5+16            ;lenght of this pgm in segments
  94.     MOV    AX,3103H        ;exit & stay resident
  95.     INT    21H
  96.  
  97. ;this is the actual interupt
  98. CORC:    CLI
  99.     PUSH    ES            ;save all used registers
  100.     PUSH    BP
  101.     PUSH    BX
  102.     MOV    BP,SP
  103.     MOV    ES,[BP+8]        ;get calling segment from stack
  104.     MOV    BX,[BP+6]        ;get calling address from stack
  105.     DEC    BX            ;back up one
  106.     MOV    BYTE PTR ES:[BX],13H    ;store interupt 13h there
  107.     MOV    BYTE PTR DS:SYMFLG,0    ;zero out the flopy test flag
  108.     POP    BX            ;restore registers
  109.     POP    BP
  110.     POP    ES
  111.     STI
  112.     IRET                ;back to symphony
  113.  
  114. CS:SYMFLG,0    ;zero out the flopy test flag
  115.     POP    BX            ;restore registers
  116.     POP    BP
  117.     POP    ES
  118.     STI
  119.     IRET                ;back to symphony
  120.  
  121. CS