Category : Unprotects for Games and Such
Archive   : UNPROT-2.ZIP
Filename : SYMPHONY.UNP

 
Output of file : SYMPHONY.UNP contained in archive : UNPROT-2.ZIP

;Making SYMPHONY ver 1.00 to run with out SYMPHONY'S master disk -
;unprotecting it:
;
;A>REN SYMPHONY.CMP SYMPHONY.XXX
;A>DEBUG SYMPHONY.XXX
;-R ;find the segment where loaded and add 1000 to it
; ;DS=0DFA - xxxx=1DFA (0DFAH+1000H=1DFAH)
;-E xxxx:3A05 75 ;change INT 13 to INT 75H (see label SYMINT below)
;-W ;save changed file
;-Q ;exit debuger
;A>REN SYMPHONY.XXX SYMPHONY.CMP
;A>SYMPH ;execute THIS PROGRAM (it modifies the changed interupt
; ;back to 13H since SYMPHONY does checksum of it's self)
;
;
;
; assemble, link, exe2bin
;
;Execute this program before using SYMPHONY.
;There is no need to re-execute this program after exit from SYMPHONY, in
;order to use the SYMPHONY again, since it is a resident program
;
;
;to further examine the symphony for possibly other way to solve this, using
;DEBUG, do:
;A>DEBUG SYMPHONY.EXE
;-G2
;-T3
;-G8A40
;-T ;at this point you will find the the subroutine that fills
; ;location ds:8735 with n and int 13 (the second one) which

; ;reads the serial number from flopy disk in A. Zeroing 8735
; ;fools the symphony, and prevents it from testing for special
; ;track/sector structure on the flopy. If the location 8735 is
; ;not zeroed, debugging will not be possible after IP 8A4D,
; ;since INT 3 will be modified by SYMPHONY.
;

SYMINT EQU 75H ;interupt to use

SYMFLG EQU 8735H ;see above for info

CSEG SEGMENT
ASSUME CS:CSEG,DS:CSEG
ORG 100H
PROGRA: XOR AX,AX
MOV ES,AX ;set to segment 0 (interupt table)
XOR DX,DX
MOV AL,SYMINT ;interupt number
MOV CX,4 ;get position in interupt table
MUL CX
MOV BX,AX
TEST WORD PTR ES:[BX],0 ;test if set?
JZ DOIT ;no, go set it
INT 20H ;exit to dos with out mod

DOIT: ;get interupt routine address
MOV word ptr ES:[BX],offset corc ;store it at the apropriate int address
MOV ES:[BX+2],CS ;also store the segment
MOV DX,5+16 ;lenght of this pgm in segments
MOV AX,3103H ;exit & stay resident
INT 21H

;this is the actual interupt
CORC: CLI
PUSH ES ;save all used registers
PUSH BP
PUSH BX
MOV BP,SP
MOV ES,[BP+8] ;get calling segment from stack
MOV BX,[BP+6] ;get calling address from stack
DEC BX ;back up one
MOV BYTE PTR ES:[BX],13H ;store interupt 13h there
MOV BYTE PTR DS:SYMFLG,0 ;zero out the flopy test flag
POP BX ;restore registers
POP BP
POP ES
STI
IRET ;back to symphony

CSEG ENDS
END PROGRA


  3 Responses to “Category : Unprotects for Games and Such
Archive   : UNPROT-2.ZIP
Filename : SYMPHONY.UNP

  1. Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!

  2. This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.

  3. But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: http://www.os2museum.com/wp/mtswslnk/