home *** CD-ROM | disk | FTP | other *** search
/ Various Unprotection Examples / unprotect.zip / unprotect / NINS / NINJA.UNP < prev   
Text File  |  1979-12-31  |  5KB  |  136 lines

  1. ************************************************************************
  2.  
  3.    The following text is written to demonstrate how to unprotect
  4. the game, 'THE LAST NINJA', solely for the use of making legal
  5. backup copies for the original owner.
  6.  
  7. ************************************************************************
  8.  
  9.    In order to unprotect NINJA, you first must understand the copy
  10. protection scheme which is used by ACTIVISION. The copy protection
  11. does not reside in just one program, but in three separate EXE files
  12. on disk A. If you only plan to run this program on one type of display
  13. monitor, then only one program needs to be unprotected.
  14.    ACTIVISION has three separate EXE files to accomodate the three
  15. types of graphics it supports. There is a copy protection scheme
  16. in each one of these files. However, this unprotect will work
  17. identically for all cases. The files that are in question are as
  18. follows:
  19.  
  20.             E.EXE - EGA DISPLAY
  21.             C.EXE - CGA DISPLAY
  22.             T.EXE - SPECIAL TANDY DISPLAY
  23.  
  24.    For this example, I will use E.EXE, however, as stated before,
  25. this unprotect will work for any of the display programs.
  26.  
  27. STEP 1: Make a copy of the NINJA A disk using DISKCOPY. After this
  28.         has been completed, you can put away your original disk.
  29.  
  30. STEP 2: Rename E.EXE to E.ZAP.
  31.  
  32. STEP 3: Enter DOS DEBUG by entering the following command:
  33.                 A> debug e.zap
  34.  
  35. STEP 4: ACTIVISION uses the return codes from DOS interrupt 13 to
  36.         determine if the original disk is being used. Therefore,
  37.         you must first find all occurances of interrupt 13. To
  38.         do this, use the DEBUG search command:
  39.                 -s cs:100 9999 cd 13
  40.  
  41.         The results of this command should look similar to the
  42.         following:
  43.  
  44.                     1229:0579
  45.                     1229:0588
  46.                     1229:05AB
  47.  
  48.  
  49. STEP 5: The first address displayed is where the program is checking
  50.         the boot record. This one can be ignored. The second address
  51.         is the interrupt which checks the hidden file, XEMAG.SYS.
  52.         XEMAG.SYS resides on track number nine. If you unassemble the
  53.         statements just prior to the interrupt, you should be able
  54.         to see where '09' is moved to the CH register.
  55.         This is the one in which you are interested in. Next, enter
  56.         the following command:
  57.                   -u 1229:0588     (the address used should be the
  58.                                     address obtained from the previous
  59.                                     step)
  60.  
  61.         This should produce results that look like the following:
  62.  
  63. 1229:0028               INT   13
  64. 1229:002A               JNB   0032       (this address may vary)
  65. 1229:002C               MOV   AX,000A
  66. 1229:002F               JMP   0081       (this address may also vary)
  67.  
  68.  
  69. STEP 6: The JNB instruction is the branch which is taken when the
  70.         program receives a wrong return code from the interrupt. The
  71.         address that is branched to contains the display which tells
  72.         you to insert your original disk. The JMP instruction is the
  73.         branch that is taked when everything is fine. Therefore, to
  74.         unprotect NINJA, you simply replace the JNB instruction with
  75.         the JMP instruction. To do this, enter:
  76.  
  77.               -a 1229:0028        (the addresses are obtained from
  78.                                    the previous unassemble step)
  79.  
  80.         You will then get the following prompt:
  81.  
  82.               1229:0028
  83.  
  84.         On this line, simply enter an unconditional jump.
  85.  
  86.               1229:0028 JMP 0081   (the address used here was also
  87.                                     obtained from step #5)
  88.  
  89.        At the next prompt, simply hit the enter key. This should
  90.        return the DOS DEBUG prompt.
  91.  
  92. STEP 7: Write the altered code back to disk by entering:
  93.  
  94.                -w
  95.  
  96.         When this is finished, exit DEBUG by entering:
  97.  
  98.                -q
  99.  
  100. STEP 8: Rename E.ZAP to E.EXE.
  101.  
  102.  
  103.  
  104.    The copy protection has now been removed from disk A. and you can
  105. make as many backup copies as you wish. As far as disk B is comcerned,
  106. there is no copy protection and it can be copied using DISKCOPY.
  107.  
  108.    The reason that programs such as DISKCOPY and even COPYIIPC do
  109. not effectively copy disk A is very simple yet hard to detect. In
  110. actuality, ACTIVISION has changed the boot record on the original
  111. disk so that it will receive an invalid return code from the interrupt
  112. 13 (this is the first occurance of CD13 found when doing the DEBUG
  113. search). The above mentioned programs cannot effectively copy the
  114. boot record from disk A. Therefore, when a copy is made, the programs
  115. still won't execute.
  116.  
  117.  
  118.    If you find that this text has been of any value to you, a
  119. donation of any sum of money would be greatly appreciated. Please
  120. send it to my 14 year old son (he really did all of the work !) at
  121. the following address:
  122.  
  123.                 Christian Sartler
  124.                 4530 Maple Road
  125.                 East Troy, Wisc. 53120
  126.  
  127.  
  128.     If any questions should arise or additional help is required,
  129. just leave me a note on EXEC-PC bulletin board, 414-964-5160.
  130.  
  131.  
  132.                          Gary Sartler
  133.  
  134.  
  135.  
  136.