Category : Unprotects for Games and Such
Archive   : MORE_UNP.ZIP
Filename : PRTSHOP.TXT

 
Output of file : PRTSHOP.TXT contained in archive : MORE_UNP.ZIP

The Print Shop employs two sections of code to copy protect itself. The first
is embedded in PS.EXE and is exercised when the program is run from a floppy.
The second is embedded in PSINIT.OVR and is employed when the program is run
from a hard or ram disk. Once activated, both seek out a specially formatted
track on the A: drive and terminate the program if not found.

Both sections of code will be un-hooked here so that the program will run
from either a floppy or a hard disk.

RENAME PS.EXE PS.ZAP Rename for DEBUG

DEBUG PS.ZAP Start DEBUG

S0 9000 CD 13 Search for Disk interrupt 13

XXXX:3AC6 You should find these two:
XXXX:3ADF

U 3AC6 Unassemble code to make sure
you're in the right place :

XXXX:3AC6 INT 13 A test for any disk in A:
XXXX:3AC8 MOV BYTE PTR [0A91],02
XXXX:3ACD DEC BYTE PTR [0A91]
XXXX:3AD1 JZ 3AE6
XXXX:3AD3 MOV DH,00 \
XXXX:3AD5 MOV DL,00 | This sets up a look for the
XXXX:3AD7 MOV CH,09 | special track
XXXX:3AD9 MOV CL,0A |
XXXX:3ADB MOV AL,01 |
XXXX:3ADD MOV AH,04 |
XXXX:3ADF INT 13 /
XXXX:3AE1 CMP AH,00 If not there ... Loop then
XXXX:3AE4 JNZ 3ACD Zonk! Terminate Program...


A 3AC6 Get rid of 1 st diskette look

XXXX:3AC6 NOP Remove the INT 13
XXXX:3AC7 NOP
XXXX:3AC8

A 3ADD Get rid of the real test:

XXXX:3ADD MOV AH,00 Give it what it wants in AH
XXXX:3ADF NOP Remove the INT 13
XXXX:3AE0 NOP
XXXX:3AE1

W Write out the changed code

Q Quit DEBUG

RENAME PS.ZAP PS.EXE Rename for running program

(The program will now run from floppy disks without further changes)

Now for the second portion of the copy protection :

DEBUG PSINIT.OVR Start DEBUG (using a copy !)

S0 2000 CD 13 Look for disk interrupt 13

XXXX:0479 You should find these three:
XXXX:0492
XXXX:04BD

U 0479

XXXX:0479 INT 13 A test for any disk in A:
XXXX:047B MOV BYTE PTR [CD57],02
XXXX:0480 DEC BYTE PTR [CD57]
XXXX:0484 JZ 04DB
XXXX:0486 MOV CL,11 \
XXXX:0488 MOV AH,04 |
XXXX:048A MOV DH,00 |
XXXX:048C MOV CH,09 | This sets up a look for the
XXXX:048E MOV DL,00 | special track
XXXX:0490 MOV AL,01 |
XXXX:0492 INT 13 /
XXXX:0494 CMP AH,00 If not there ... Loop then
XXXX:0497 JNZ 0480 Zonk ! Terminate Program...

(Look familiar ?)

U 04BD

XXXX:04BD INT 13 This one's a read (same idea)
XXXX:04BF CMP AH,00
XXXX:04C2 JNZ 04A5
XXXX:04C4 ADD BX,018B
XXXX:04C8 MOV CL,05
XXXX:04CA ES:
XXXX:04CB MOV AL,[BX]
XXXX:04CD CMP AL,41
XXXX:04CF JNZ 04DB
XXXX:04D1 INC BX
XXXX:04D2 DEC CL
XXXX:04D4 JNZ 04CA
XXXX:04D6 MOV AX,0000 This is the success exit !
XXXX:04D9 JMP 04DE

A 0479

XXXX:0479 NOP Remove INT 13
XXXX:047A NOP
XXXX:047B

A 0490

XXXX:0490 MOV AH,00 Give it what it wants in AH
XXXX:0492 NOP Remove INT 13
XXXX:0493 NOP
XXXX:0494

A 04BD

XXXX:04BD JMP 04D6 Jump to success exit code
XXXX:04BF

W Write out the changed code

Q Quit DEBUG


The program may now be run from a hard disk or floppy as desired. The hard
disk set up will ask for the master diskette to be inserted but won't do
any checking or diskette access at all.
-----------------------------------------------------------------------------


  3 Responses to “Category : Unprotects for Games and Such
Archive   : MORE_UNP.ZIP
Filename : PRTSHOP.TXT

  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/