home *** CD-ROM | disk | FTP | other *** search
/ Cracking 101 / C101-90.004 < prev    next >
Encoding:
Text File  |  1990-01-01  |  54.9 KB  |  1,173 lines

  1.  
  2.                           CRACKING 101 - 1990 Edition
  3.  
  4.                                     Lesson 4
  5.                                    revision 1
  6.  
  7.                   ┌─────────────────────────────────────────┐
  8.                   │ REMOVING THE DOC CHECK FOR STAR CONTROL │
  9.                   └─────────────────────────────────────────┘
  10.  
  11.          <
  12.  
  13.           Added for revision 1 -
  14.  
  15.               First, let  me  tell  you  about  a major fuckup I made.
  16.          When I first wrote this file, I  left out a major part of the
  17.          patch.  For all of the user who got that version,  I'm  sorry
  18.          but even I  make  mistakes  at  3:00 in the morning.  Anyway,
  19.          just replace the original with this updated version
  20.  
  21.                                             - Buckaroo Banzai
  22.  
  23.          >
  24.  
  25.               Hey, Buckaroo Banzai .. Cracking Guru back once again to
  26.          help you lesser crackist learn.   This time, we will be going
  27.          over Star Control.  This is the last lesson in  the  original
  28.          4.  From here  on  out,  I  will  simply release lessons as I
  29.          write them.
  30.  
  31.               I want to say a few things  about some of the groups out
  32.          there right now.  Speed isn't everything.  I really wish that
  33.          for example when you remove a doc check, most  of  us want it
  34.          REMOVED.  We don't  want  to have to enter your group name or
  35.          even typing 1 letter is to much.   We  shouldn't even see the
  36.          menu for the doc check.  Now, I don't direct  this  to all of
  37.          you, but there  seems  to  have  been  a move from quality to
  38.          quickness.  Let's go back to the  days  of  SPI (and INC when
  39.          they were first getting started) and crack right.   If  there
  40.          is a doc check, remove it, not just fake it.
  41.  
  42.               Nuff said, on with the tutorial.
  43.  
  44.               Star Control  (SC  for  here out) is a preaty good game.
  45.          The protection on it wasn't too  hard, but if you didn't read
  46.          enough in to it, you would just kill the title music also.
  47.  
  48.               So, how do we go about cracking SC.  Well for this one I
  49.          opted to break out when SC asks for the code  from  the  code
  50.          wheel.  Originaly I  did this just for the hell of it, but it
  51.          turned out to be a luck guess and made life a lot easier.
  52.  
  53.               As usual we will be using periscope to crack SC.  I used
  54.          PSKEY (using int 3 as the trap interrupt not int 2) to pop in
  55.          at the input routine.  So lets  get  started.  Load up PS and
  56.          PSKEY, then execute Star Control.  When you get  to  the  doc
  57.          check, break out.
  58.  
  59.               Now you  should  be at the usual IRET insturction that's
  60.          part of PSKEY.  Now comes the  tricky  part.   Since  we  are
  61.          using a key trap to break out during the input  sequence,  we
  62.          could be anywhere  inside  the  entire  input routine.  So in
  63.          cases like this I suggest finding a reference point.
  64.  
  65.               So how  do you pick the reference  point.   Well,  since
  66.          this doc check must be entered via the keyboard  you  can bet
  67.          somewhere it will  call  INT  16h  (bios  keyboard) (although
  68.          there are times when this is not  true, it rare).  I think we
  69.          should go off and find that call to that interrupt.
  70.  
  71.               So we  trace (using the 'T' command) through  some  code
  72.          and finally come apon the follow subroutine ....
  73.  
  74.          ( NOTE: all comments were added by me )
  75.  
  76.  
  77.          ; This is the actual routine that is used to get a key
  78.  
  79.          2A00:09D4 55            PUSH BP
  80.          2A00:09D5 8BEC          MOV BP,SP
  81.          2A00:09D7 8A6606        MOV AH,[BP+06]
  82.          2A00:09DA 8AD4          MOV DL,AH
  83.          2A00:09DC 80E20F        AND DL,0F
  84.          2A00:09DF CD16          INT 16      ; Call to bios.  We will
  85.          2A00:09E1 7509          JNZ   09EC      ;  use  this  as  our
  86.          2A00:09E3 80FA01        CMP DL,01   ; reference point
  87.          2A00:09E6 7504          JNZ 09EC
  88.          2A00:09E8 33C0          XOR AX,AX
  89.          2A00:09EA EB0A          JMP 09F6
  90.          2A00:09EC 80FA02        CMP DL,02
  91.          2A00:09EF 7405          JZ 09F6
  92.          2A00:09F1 0BC0          OR AX,AX
  93.          2A00:09F3 7501          JNZ 09F6
  94.          2A00:09F5 48            DEC AX
  95.          2A00:09F6 5D            POP BP
  96.          2A00:09F7 CB            RETF
  97.  
  98.               So we write down the address  of our REFERENCE point and
  99.          get ready to procede.  Now, It's really kinda  boring to keep
  100.          trying to trace through the entire input routine while trying
  101.          to enter the  code  string, so what we want to do next, is to
  102.          figure out the input routine.   A  quick  look  at  this last
  103.          section of code shows that it only reads in a  character  but
  104.          really does not handle it.
  105.  
  106.               So, we  exit via the RETF at 9F7 enter the next level of
  107.          the subroutine.  Again,  if you  manual  trace  through  this
  108.          routine (as well as the next level up) you see that it simple
  109.          exits out rather quickly.  This is definitly not the top loop
  110.          of the imput routine.
  111.  
  112.               So, we trace through the next level up,  and  again exit
  113.          quickly to a  higher  level.   But  this  time,  as  we trace
  114.          through, we find that the it loops  back on itself.  AHA, the
  115.          outer input loop.  Here is the code to the entire input loop.
  116.          I have marked the place where you should enter from the lower
  117.          level.
  118.  
  119.          ( String input loop -- Outer level )
  120.  
  121.          7C00:0835 FF365220      PUSH [2052]
  122.          7C00:0839 FF365020      PUSH [2050]
  123.          7C00:083D 9A2802FD41    CALL 41FD:0228     ;  Entery here
  124.          7C00:0842 888670FE      MOV [BP+FE70],AL
  125.          7C00:0946 0AC0          OR AL,AL
  126.          7C00:0848 7503          JNZ 084D
  127.          7C00:084A E99200        JMP 08DF
  128.          7C00:084D 2AE4          SUB AH,AH
  129.          7C00:084F 2D0800        SUB AX,0008
  130.          7C00:0852 745A          JZ 08AE
  131.          7C00:0854 48            DEC AX
  132.          7C00:0855 48            DEC AX
  133.          7C00:0856 7503          JNZ 085B
  134.          7C00:0858 E90901        JMP 0964
  135.          7C00:085B 2D0300        SUB AX,0003
  136.          7C00:085E 7503          JNZ 0863
  137.          7C00:0860 E90101        JMP 0964
  138.          7C00:0863 8A9E70FE      MOV BL,[BP+FE70]
  139.          7C00:0867 2AFF          SUB BH,BH
  140.          7C00:0869 F687790B57    TEST BYTE PTR [BX+0B79],57
  141.          7C00:086E 746F          JZ 08DF
  142.          7C00:0870 F687790B03    TEST BYTE PTR [BX+0B79],03
  143.          7C00:0875 740C          JZ 0883
  144.          7C00:0877 F687790B02    TEST BYTE PTR [BX+0B79],02
  145.          7C00:087C 7405          JZ 0883
  146.          7C00:087E 80AE70FE20    SUB BYTE PTR [BP+FE70],20
  147.          7C00:0883 8A8670FE      MOV AL,[BP+FE70]
  148.          7C00:0887 C49E7EFE      LES BX,[BP+FE7E]
  149.          7C00:088B 8BB682FE      MOV SI,[BP+FE82]
  150.          7C00:088F 26            ES:
  151.          7C00:0890 8800          MOV [BX+SI],AL
  152.          7C00:0892 FF8682FE      INC WORD PTR [BP+FE82]
  153.          7C00:0896 FFB688FE      PUSH [BP+FE88]
  154.          7C00:089A 8D8678FE      LEA AX,[BP+FE78]
  155.          7C00:089E 50            PUSH AX
  156.          7C00:089F 9A56049324    CALL 2493:0456
  157.          7C00:08A4 83C404        ADD SP,+04
  158.          7C00:08A7 0BC0          OR AX,AX
  159.          7C00:08A9 7534          JNZ 08DF
  160.          7C00:08AB EB27          JMP 08D4
  161.          7C00:08AD 90            NOP
  162.          7C00:08AE 83BE82FE00    CMP WORD PTR [BP+FE82],+00
  163.          7C00:08B3 7404          JZ 08B9
  164.          7C00:08B5 FF8E82FE      DEC WORD PTR [BP+FE82]
  165.          7C00:08B9 B008          MOV AL,08
  166.          7C00:08BB 50            PUSH AX
  167.          7C00:08BC 9A1003443D    CALL 3D44:0310
  168.          7C00:08C1 8D8684FE      LEA AX,[BP+FE84]
  169.          7C00:08C5 16            PUSH SS
  170.          7C00:08C6 50            PUSH AX
  171.          7C00:08C7 9A6A00843D    CALL 3D84:006A
  172.          7C00:08CC B047          MOV AL,47
  173.          7C00:08CE 50            PUSH AX
  174.          7C00:08CF 9A1003443D    CALL 3D44:0310
  175.          7C00:08D4 8D8678FE      LEA AX,[BP+FE78]
  176.          7C00:08D8 16            PUSH SS
  177.          7C00:08D9 50            PUSH AX
  178.          7C00:08DA 9A8202C93C    CALL 3CC9:0282
  179.          7C00:08DF 83BE8CFE00    CMP WORD PTR [BP+FE8C],+00
  180.          7C00:08E4 7503          JNZ 08E9
  181.          7C00:08E6 E94CFF        JMP 0835    ; <───┐
  182.                                                    │
  183.               as you can see, at this point it loops back  on  itself.
  184.          This is what  tells  use  that  it's the outer loop.  Knowing
  185.          that, we can just set a code  breakpoint  at  8E9  (the  next
  186.          instruction after the loop) and execute the code.
  187.  
  188.               At this  point,  the SC will pause waiting  for  you  to
  189.          enter the code key.  Use the code wheel and enter the correct
  190.          key (after all,  it's  kinda  hard  to  crack  a game without
  191.          having the proper codes right...)
  192.  
  193.               So, we have now exited the  input  loop  with everything
  194.          intact (ie: the proper code was entered).  Next  step  is  to
  195.          figure out what  happens  when  the  proper  code is entered.
  196.          Well, since you have entered  the  proper  code,  just follow
  197.          this routine out.  Remember back to lesson 2.   What  we want
  198.          to do is find the call the to routine that does the doc check
  199.          and remove it  somehow (a PROPER crack).  So since everything
  200.          is in the right place, if we just  keep jumping over the code
  201.          we should find our way out.
  202.  
  203.               So after jumping over many instructions, we come the the
  204.          follow piece of code
  205.  
  206.          7C00:0B74 8BE5          MOV SP,BP
  207.          7C00:0B76 5D            POP BP
  208.          7C00:0B77 CB            RETF
  209.  
  210.               By now, you should know that what you are  looking at is
  211.          the exit routine for a higher level language's (C or pascal)
  212.          code.  So we  have  found  the  end  of the doc check.  After
  213.          tracing through the RETF you find yourself looking down a cmp
  214.          and a conditional jump.  Here  is  the  code  (NOTE!  I  have
  215.          included the actual call to the doc check just for reference)
  216.  
  217.          45E2:0235 9A46010F4A    CALL 7C00:146   ; Call to Doc Check
  218.          45E2:023A 83C404        ADD  SP,+04
  219.          45E2:023D 0BC0          OR   AX,AX
  220.          45E2:023F 7465          JZ   02A6
  221.  
  222.               Notice the value of the AX register.  Since  right after
  223.          the doc check, it is acted upon, then it has some importance.
  224.          So, now that  we know where the doc check takes place, how do
  225.          we remove it.
  226.  
  227.               Well, We could patch it with the code
  228.  
  229.          45E2:0235 B40100        MOV  AX,0001
  230.          45E2:0238 90            NOP
  231.          45E2:0239 90            NOP
  232.  
  233.               This patch will work (I know,  it's  how I first patched
  234.          the program).  But there is one small problem.   If  you  run
  235.          the program after  adding  this patch, you will find that the
  236.          title music doesn't play.  So,  this  is  now a good place to
  237.          put the patch.
  238.  
  239.               So where  then.  Well, make note of the address  of  the
  240.          call to the  doc  check.   Now,  restart the process but this
  241.          time right after SC switches in to graphics mode, break out.
  242.  
  243.               Now, set a breakpoint at  the  address from above (in my
  244.          case 45E2:0235).  Let SC run in to the intro.   You will find
  245.          that although the  title  screen  comes up, the music doesn't
  246.          kick in before the breakpoint is reached.
  247.  
  248.               No, they couldn't...they wouldn't..  well they did.  The
  249.          music routines for  the intro are stored in the  routine  for
  250.          the doc check.   Here  is  the  entire  doc  check.   I  have
  251.          commented on some of the code
  252.  
  253.  
  254.          ; these first few calls seem to load something from disk
  255.  
  256.  
  257.          7C00:0146 55            PUSH BP
  258.          7C00:0147 8BEC          MOV BP,SP
  259.          7C00:0149 81EC9001      SUB SP,0190
  260.          7C00:014D 57            PUSH DI
  261.          7C00:014E 56            PUSH SI
  262.          7C00:014F 8B4608        MOV AX,[BP+08]
  263.          7C00:0152 0B4606        OR AX,[BP+06]
  264.          7C00:0155 740E          JZ 0165
  265.          7C00:0157 FF7608        PUSH [BP+08]
  266.          7C00:015A FF7606        PUSH [BP+06]
  267.          7C00:015D 9A65341E2D    CALL 2D1E:3465
  268.          7C00:0162 83C404        ADD SP,+04
  269.          7C00:0165 FF365220      PUSH [2052]
  270.          7C00:0169 FF365020      PUSH [2050]
  271.          7C00:016D 9A2802FD41    CALL 41FD:0228
  272.          7C00:0172 0AC0          OR AL,AL
  273.          7C00:0174 75EF          JNZ 0165
  274.          7C00:0176 B80200        MOV AX,0002
  275.          7C00:0179 898664FF      MOV [BP+FF64],AX
  276.          7C00:017D 898672FF      MOV [BP+FF72],AX
  277.          7C00:0181 2BC0          SUB AX,AX
  278.          7C00:0183 898662FF      MOV [BP+FF62],AX
  279.          7C00:0187 89866AFF      MOV [BP+FF6A],AX
  280.          7C00:018B 898674FF      MOV [BP+FF74],AX
  281.          7C00:018F B80100        MOV AX,0001
  282.          7C00:0192 898666FF      MOV [BP+FF66],AX
  283.          7C00:0196 89866CFF      MOV [BP+FF6C],AX
  284.          7C00:019A 898670FF      MOV [BP+FF70],AX
  285.          7C00:019E 898676FF      MOV [BP+FF76],AX
  286.          7C00:01A2 B80300        MOV AX,0003
  287.          7C00:01A5 898668FF      MOV [BP+FF68],AX
  288.          7C00:01A9 89866EFF      MOV [BP+FF6E],AX
  289.          7C00:01AD 898678FF      MOV [BP+FF78],AX
  290.  
  291.          ; Although I have NO IDEA what the hell is being setup
  292.          ; here I suspect that it is the must
  293.  
  294.          7C00:01B1 C746860400    MOV WORD PTR [BP-7A],0004
  295.          7C00:01B6 C746880100    MOV WORD PTR [BP-78],0001
  296.          7C00:01BB C7468A0200    MOV WORD PTR [BP-76],0002
  297.          7C00:01C0 C7468C0000    MOV WORD PTR [BP-74],0000
  298.          7C00:01C5 C7468E0000    MOV WORD PTR [BP-72],0000
  299.          7C00:01CA C746900500    MOV WORD PTR [BP-70],0005
  300.          7C00:01CF C746920600    MOV WORD PTR [BP-6E],0006
  301.          7C00:01D4 C746940700    MOV WORD PTR [BP-6C],0007
  302.          7C00:01D9 C746960C00    MOV WORD PTR [BP-6A],000C
  303.          7C00:01DE 894698        MOV [BP-68],AX
  304.          7C00:01E1 C7469A0500    MOV WORD PTR [BP-66],0005
  305.          7C00:01E6 C7469C0D00    MOV WORD PTR [BP-64],000D
  306.          7C00:01EB C7469E0000    MOV WORD PTR [BP-62],0000
  307.          7C00:01F0 C746A00100    MOV WORD PTR [BP-60],0001
  308.          7C00:01F5 C746A20200    MOV WORD PTR [BP-5E],0002
  309.          7C00:01FA C746A40800    MOV WORD PTR [BP-5C],0008
  310.          7C00:01FF B80400        MOV AX,0004
  311.          7C00:0202 8946A6        MOV [BP-5A],AX
  312.          7C00:0205 8946A8        MOV [BP-58],AX
  313.          7C00:0208 C746AA0600    MOV WORD PTR [BP-56],0006
  314.          7C00:020D C746AC0800    MOV WORD PTR [BP-54],0008
  315.          7C00:0212 C746AE0700    MOV WORD PTR [BP-52],0007
  316.          7C00:0217 C746B00900    MOV WORD PTR [BP-50],0009
  317.          7C00:021C C746B20A00    MOV WORD PTR [BP-4E],000A
  318.          7C00:0221 8946B4        MOV [BP-4C],AX
  319.          7C00:0224 C746B60C00    MOV WORD PTR [BP-4A],000C
  320.          7C00:0229 C746B80300    MOV WORD PTR [BP-48],0003
  321.          7C00:022E C746BA0B00    MOV WORD PTR [BP-46],000B
  322.          7C00:0233 C746BC0D00    MOV WORD PTR [BP-44],000D
  323.          7C00:0238 C746BE0B00    MOV WORD PTR [BP-42],000B
  324.          7C00:023D C746C00500    MOV WORD PTR [BP-40],0005
  325.          7C00:0242 C746C20100    MOV WORD PTR [BP-3E],0001
  326.          7C00:0247 C746C40700    MOV WORD PTR [BP-3C],0007
  327.          7C00:024C C746C60000    MOV WORD PTR [BP-3A],0000
  328.          7C00:0251 C746C80600    MOV WORD PTR [BP-38],0006
  329.          7C00:0256 C746CA0200    MOV WORD PTR [BP-36],0002
  330.          7C00:025B C746CC0300    MOV WORD PTR [BP-34],0003
  331.          7C00:0260 C746CE0800    MOV WORD PTR [BP-32],0008
  332.          7C00:0265 C746D00900    MOV WORD PTR [BP-30],0009
  333.          7C00:026A C746D20A00    MOV WORD PTR [BP-2E],000A
  334.          7C00:026F C746D40B00    MOV WORD PTR [BP-2C],000B
  335.          7C00:0274 C746D60C00    MOV WORD PTR [BP-2A],000C
  336.          7C00:0279 C746D80A00    MOV WORD PTR [BP-28],000A
  337.          7C00:027E C746DA0500    MOV WORD PTR [BP-26],0005
  338.          7C00:0283 C746DC0D00    MOV WORD PTR [BP-24],000D
  339.          7C00:0288 C746DE0800    MOV WORD PTR [BP-22],0008
  340.          7C00:028D C746E00900    MOV WORD PTR [BP-20],0009
  341.          7C00:0292 C746E20300    MOV WORD PTR [BP-1E],0003
  342.          7C00:0297 C746E40B00    MOV WORD PTR [BP-1C],000B
  343.          7C00:029C C78692FE0000  MOV WORD PTR [BP+FE92],0000
  344.          7C00:02A2 C78694FE2B00  MOV WORD PTR [BP+FE94],002B
  345.          7C00:02A8 C78696FE0200  MOV WORD PTR [BP+FE96],0002
  346.          7C00:02AE C78698FE0300  MOV WORD PTR [BP+FE98],0003
  347.          7C00:02B4 89869AFE      MOV [BP+FE9A],AX
  348.          7C00:02B8 C7869CFE0500  MOV WORD PTR [BP+FE9C],0005
  349.          7C00:02BE C7869EFE0600  MOV WORD PTR [BP+FE9E],0006
  350.          7C00:02C4 C786A0FE0E00  MOV WORD PTR [BP+FEA0],000E
  351.          7C00:02CA C786A2FE2B00  MOV WORD PTR [BP+FEA2],002B
  352.          7C00:02D0 C786A4FE0900  MOV WORD PTR [BP+FEA4],0009
  353.          7C00:02D6 C786A6FE0A00  MOV WORD PTR [BP+FEA6],000A
  354.          7C00:02DC C786A8FE0B00  MOV WORD PTR [BP+FEA8],000B
  355.          7C00:02E2 C786AAFE0C00  MOV WORD PTR [BP+FEAA],000C
  356.          7C00:02E8 C786ACFE2B00  MOV WORD PTR [BP+FEAC],002B
  357.          7C00:02EE C786AEFE0F00  MOV WORD PTR [BP+FEAE],000F
  358.          7C00:02F4 C786B0FE0D00  MOV WORD PTR [BP+FEB0],000D
  359.          7C00:02FA C786B2FE1000  MOV WORD PTR [BP+FEB2],0010
  360.          7C00:0300 C786B4FE1100  MOV WORD PTR [BP+FEB4],0011
  361.          7C00:0306 C786B6FE1200  MOV WORD PTR [BP+FEB6],0012
  362.          7C00:030C C786B8FE1300  MOV WORD PTR [BP+FEB8],0013
  363.          7C00:0312 C786BAFE1400  MOV WORD PTR [BP+FEBA],0014
  364.          7C00:0318 C786BCFE1500  MOV WORD PTR [BP+FEBC],0015
  365.          7C00:031E C786BEFE1600  MOV WORD PTR [BP+FEBE],0016
  366.          7C00:0324 C786C0FE1700  MOV WORD PTR [BP+FEC0],0017
  367.          7C00:032A C786C2FE0800  MOV WORD PTR [BP+FEC2],0008
  368.          7C00:0330 C786C4FE1800  MOV WORD PTR [BP+FEC4],0018
  369.          7C00:0336 C786C6FE2B00  MOV WORD PTR [BP+FEC6],002B
  370.          7C00:033C C786C8FE1900  MOV WORD PTR [BP+FEC8],0019
  371.          7C00:0342 C786CAFE2B00  MOV WORD PTR [BP+FECA],002B
  372.          7C00:0348 C786CCFE1A00  MOV WORD PTR [BP+FECC],001A
  373.          7C00:034E C786CEFE1B00  MOV WORD PTR [BP+FECE],001B
  374.          7C00:0354 C786D0FE1C00  MOV WORD PTR [BP+FED0],001C
  375.          7C00:035A C786D2FE1D00  MOV WORD PTR [BP+FED2],001D
  376.          7C00:0360 C786D4FE1E00  MOV WORD PTR [BP+FED4],001E
  377.          7C00:0366 C786D6FE1F00  MOV WORD PTR [BP+FED6],001F
  378.          7C00:036C C786D8FE2000  MOV WORD PTR [BP+FED8],0020
  379.          7C00:0372 C786DAFE2100  MOV WORD PTR [BP+FEDA],0021
  380.          7C00:0378 C786DCFE0700  MOV WORD PTR [BP+FEDC],0007
  381.          7C00:037E C786DEFE2200  MOV WORD PTR [BP+FEDE],0022
  382.          7C00:0384 C786E0FE2300  MOV WORD PTR [BP+FEE0],0023
  383.          7C00:038A C786E2FE2400  MOV WORD PTR [BP+FEE2],0024
  384.          7C00:0390 C786E4FE2500  MOV WORD PTR [BP+FEE4],0025
  385.          7C00:0396 C786E6FE2600  MOV WORD PTR [BP+FEE6],0026
  386.          7C00:039C C786E8FE2B00  MOV WORD PTR [BP+FEE8],002B
  387.          7C00:03A2 C786EAFE2700  MOV WORD PTR [BP+FEEA],0027
  388.          7C00:03A8 C786ECFE2800  MOV WORD PTR [BP+FEEC],0028
  389.          7C00:03AE C786EEFE2900  MOV WORD PTR [BP+FEEE],0029
  390.          7C00:03B4 C786F0FE2A00  MOV WORD PTR [BP+FEF0],002A
  391.          7C00:03BA 8D46F4        LEA AX,[BP-0C]
  392.          7C00:03BD 50            PUSH AX
  393.          7C00:03BE 8D867AFF      LEA AX,[BP+FF7A]
  394.          7C00:03C2 50            PUSH AX
  395.          7C00:03C3 8D862CFF      LEA AX,[BP+FF2C]
  396.          7C00:03C7 50            PUSH AX
  397.          7C00:03C8 8D8628FF      LEA AX,[BP+FF28]
  398.          7C00:03CC 50            PUSH AX
  399.          7C00:03CD E832FC        CALL 0002   ; Music Plays
  400.          7C00:03D0 0BC0          OR AX,AX
  401.          7C00:03D2 7503          JNZ 03D7
  402.          7C00:03D4 E99B07        JMP 0B72
  403.          7C00:03D7 FF36AA1E      PUSH [1EAA]
  404.          7C00:03DB 9A0200443D    CALL 3D44:0002
  405.          7C00:03E0 FF36AE1E      PUSH [1EAE]
  406.          7C00:03E4 FF36AC1E      PUSH [1EAC]
  407.          7C00:03E8 9A0C008D3D    CALL 3D8D:000C
  408.          7C00:03ED B80201        MOV AX,0102
  409.          7C00:03F0 50            PUSH AX
  410.          7C00:03F1 9ADE02443D    CALL 3D44:02DE
  411.          7C00:03F6 B80400        MOV AX,0004
  412.          7C00:03F9 BA4000        MOV DX,0040
  413.          7C00:03FC 52            PUSH DX
  414.          7C00:03FD 50            PUSH AX
  415.          7C00:03FE 8D868CFE      LEA AX,[BP+FE8C]
  416.          7C00:0402 50            PUSH AX
  417.          7C00:0403 9A7000963B    CALL 3B96:0070    ; Music plays
  418.          7C00:0408 89868EFE      MOV [BP+FE8E],AX
  419.          7C00:040C 899690FE      MOV [BP+FE90],DX
  420.          7C00:0410 0BD0          OR DX,AX
  421.          7C00:0412 7471          JZ 0485
  422.          7C00:0414 2BC0          SUB AX,AX
  423.          7C00:0416 898686FE      MOV [BP+FE86],AX
  424.          7C00:041A 898684FE      MOV [BP+FE84],AX
  425.          7C00:041E FFB690FE      PUSH [BP+FE90]
  426.          7C00:0422 FFB68EFE      PUSH [BP+FE8E]
  427.          7C00:0426 9A0A00F93C    CALL 3CF9:000A
  428.          7C00:042B 898688FE      MOV [BP+FE88],AX
  429.          7C00:042F 89968AFE      MOV [BP+FE8A],DX
  430.          7C00:0433 833EB41E00    CMP WORD PTR [1EB4],+00
  431.          7C00:0438 7514          JNZ 044E
  432.          7C00:043A 8B4608        MOV AX,[BP+08]
  433.          7C00:043D 0B4606        OR AX,[BP+06]
  434.          7C00:0440 740C          JZ 044E
  435.          7C00:0442 B80100        MOV AX,0001
  436.          7C00:0445 50            PUSH AX
  437.          7C00:0446 9AF4019324    CALL 2493:01F4
  438.          7C00:044B 83C402        ADD SP,+02
  439.          7C00:044E 2AC0          SUB AL,AL
  440.          7C00:0450 50            PUSH AX
  441.          7C00:0451 9A4803443D    CALL 3D44:0348
  442.          7C00:0456 9A57331E2D    CALL 2D1E:3357
  443.          7C00:045B 9A9911A73B    CALL 3BA7:1199
  444.          7C00:0460 8D8684FE      LEA AX,[BP+FE84]
  445.          7C00:0464 16            PUSH SS
  446.          7C00:0465 50            PUSH AX
  447.          7C00:0466 9A04007E3D    CALL 3D7E:0004    ; Music plays
  448.          7C00:046B FFB68AFE      PUSH [BP+FE8A]
  449.          7C00:046F FFB688FE      PUSH [BP+FE88]
  450.          7C00:0473 9AF001F93C    CALL 3CF9:01F0
  451.          7C00:0478 FFB690FE      PUSH [BP+FE90]
  452.          7C00:047C FFB68EFE      PUSH [BP+FE8E]
  453.          7C00:0480 9A78068D3D    CALL 3D8D:0678    ; Music plays
  454.          7C00:0485 8B4608        MOV AX,[BP+08]
  455.          7C00:0488 0B4606        OR AX,[BP+06]
  456.          7C00:048B 7429          JZ 04B6
  457.          7C00:048D 833EB41E00    CMP WORD PTR [1EB4],+00
  458.          7C00:0492 740C          JZ 04A0
  459.          7C00:0494 B80100        MOV AX,0001
  460.          7C00:0497 50            PUSH AX
  461.          7C00:0498 9AF4019324    CALL 2493:01F4    ; Music Plays
  462.          7C00:049D 83C402        ADD SP,+02
  463.          7C00:04A0 9A8C341E2D    CALL 2D1E:348C
  464.          7C00:04A5 FF7608        PUSH [BP+08]
  465.          7C00:04A8 FF7606        PUSH [BP+06]
  466.          7C00:04AB 9A2A006342    CALL 4263:002A
  467.          7C00:04B0 50            PUSH AX
  468.          7C00:04B1 9A54006342    CALL 4263:0054
  469.  
  470.          ; this is the start of the actual  doc check.  OH! As you can
  471.          ; tell, I wasn't too intrested in the music routines, but
  472.          ; thought it might be fun to track them down
  473.  
  474.          7C00:04B6 9AD0098D3D    CALL 3D8D:09D0  ; Show Doc check
  475.                                                  ; screen
  476.          7C00:04BB B80301        MOV AX,0103
  477.          7C00:04BE 50            PUSH AX
  478.          7C00:04BF 9ADE02443D    CALL 3D44:02DE
  479.          7C00:04C4 C746F60B00    MOV WORD PTR [BP-0A],000B
  480.          7C00:04C9 C746F87900    MOV WORD PTR [BP-08],0079
  481.          7C00:04CE C746FA2801    MOV WORD PTR [BP-06],0128
  482.          7C00:04D3 C746FC4500    MOV WORD PTR [BP-04],0045
  483.          7C00:04D8 B008          MOV AL,08
  484.          7C00:04DA 50            PUSH AX
  485.          7C00:04DB 9A1003443D    CALL 3D44:0310
  486.          7C00:04E0 8D867AFF      LEA AX,[BP+FF7A]
  487.          7C00:04E4 16            PUSH SS
  488.          7C00:04E5 50            PUSH AX
  489.          7C00:04E6 9A36007E3D    CALL 3D7E:0036  ; Show alien's face
  490.  
  491.          7C00:04EB C746E6A000    MOV WORD PTR [BP-1A],00A0
  492.          7C00:04F0 C746EA0100    MOV WORD PTR [BP-16],0001
  493.          7C00:04F5 C746840300    MOV WORD PTR [BP-7C],0003
  494.          7C00:04FA 2AC0          SUB AL,AL
  495.          7C00:04FC 50            PUSH AX
  496.          7C00:04FD 9A1003443D    CALL 3D44:0310
  497.          7C00:0502 8B46F8        MOV AX,[BP-08]
  498.          7C00:0505 050700        ADD AX,0007
  499.          7C00:0508 8946E8        MOV [BP-18],AX
  500.          7C00:050B FFB62EFF      PUSH [BP+FF2E]
  501.          7C00:050F FFB62CFF      PUSH [BP+FF2C]
  502.          7C00:0513 FFB62EFF      PUSH [BP+FF2E]
  503.          7C00:0517 FFB62CFF      PUSH [BP+FF2C]
  504.          7C00:051B 9AE400FC44    CALL 44FC:00E4
  505.          7C00:0520 8BF0          MOV SI,AX
  506.          7C00:0522 9A1201E245    CALL 45E2:0112
  507.          7C00:0527 B90500        MOV CX,0005
  508.          7C00:052A 8BD0          MOV DX,AX
  509.          7C00:052C 8BC6          MOV AX,SI
  510.          7C00:052E 8BDA          MOV BX,DX
  511.          7C00:0530 2BD2          SUB DX,DX
  512.          7C00:0532 F7F1          DIV CX
  513.          7C00:0534 8BD0          MOV DX,AX
  514.          7C00:0536 4A            DEC DX
  515.          7C00:0537 8BC3          MOV AX,BX
  516.          7C00:0539 8BDA          MOV BX,DX
  517.          7C00:053B 2BD2          SUB DX,DX
  518.          7C00:053D F7F3          DIV BX
  519.          7C00:053F 42            INC DX
  520.          7C00:0540 8BC2          MOV AX,DX
  521.          7C00:0542 D1E2          SHL DX,1
  522.          7C00:0544 D1E2          SHL DX,1
  523.          7C00:0546 03D0          ADD DX,AX
  524.          7C00:0548 52            PUSH DX
  525.          7C00:0549 9A2801FC44    CALL 44FC:0128
  526.          7C00:054E 89868EFE      MOV [BP+FE8E],AX
  527.          7C00:0552 899690FE      MOV [BP+FE90],DX
  528.          7C00:0556 C78672FE0000  MOV WORD PTR [BP+FE72],0000
  529.  
  530.          ; This is the start of the loop the prints out the stupid
  531.          ; message
  532.  
  533.          7C00:055C 52            PUSH DX
  534.          7C00:055D 50            PUSH AX
  535.          7C00:055E 9A4602FC44    CALL 44FC:0246
  536.          7C00:0563 8946EC        MOV [BP-14],AX
  537.          7C00:0566 8956EE        MOV [BP-12],DX
  538.          7C00:0569 FFB690FE      PUSH [BP+FE90]
  539.          7C00:056D FFB68EFE      PUSH [BP+FE8E]
  540.          7C00:0571 9AF201FC44    CALL 44FC:01F2
  541.          7C00:0576 8946F0        MOV [BP-10],AX
  542.          7C00:0579 8D46E6        LEA AX,[BP-1A]
  543.          7C00:057C 16            PUSH SS
  544.          7C00:057D 50            PUSH AX
  545.          7C00:057E 9A8202C93C    CALL 3CC9:0282
  546.          7C00:0583 8346E80A      ADD WORD PTR [BP-18],+0A
  547.          7C00:0587 FFB690FE      PUSH [BP+FE90]
  548.          7C00:058B FFB68EFE      PUSH [BP+FE8E]
  549.          7C00:058F B80100        MOV AX,0001
  550.          7C00:0592 50            PUSH AX
  551.          7C00:0593 9A7E01FC44    CALL 44FC:017E
  552.          7C00:0598 89868EFE      MOV [BP+FE8E],AX
  553.          7C00:059C 899690FE      MOV [BP+FE90],DX
  554.          7C00:05A0 FF8672FE      INC WORD PTR [BP+FE72]
  555.          7C00:05A4 83BE72FE05    CMP WORD PTR [BP+FE72],+05
  556.          7C00:05A9 7CB1          JL 055C
  557.  
  558.          ; Reads in the code to check  (I think.  Oh hell it really
  559.          ; doesn't matter)
  560.  
  561.          7C00:05AB 9A1201E245    CALL 45E2:0112
  562.          7C00:05B0 B90C00        MOV CX,000C
  563.          7C00:05B3 99            CWD
  564.          7C00:05B4 F7F9          IDIV CX
  565.          7C00:05B6 895682        MOV [BP-7E],DX
  566.          7C00:05B9 9A1201E245    CALL 45E2:0112
  567.          7C00:05BE B90C00        MOV CX,000C
  568.          7C00:05C1 99            CWD
  569.          7C00:05C2 F7F9          IDIV CX
  570.          7C00:05C4 8956F2        MOV [BP-0E],DX
  571.          7C00:05C7 9A1201E245    CALL 45E2:0112
  572.          7C00:05CC B90C00        MOV CX,000C
  573.          7C00:05CF 99            CWD
  574.          7C00:05D0 F7F9          IDIV CX
  575.          7C00:05D2 8956FE        MOV [BP-02],DX
  576.          7C00:05D5 9A1201E245    CALL 45E2:0112
  577.          7C00:05DA B90C00        MOV CX,000C
  578.          7C00:05DD 99            CWD
  579.          7C00:05DE F7F9          IDIV CX
  580.          7C00:05E0 8996F4FE      MOV [BP+FEF4],DX
  581.          7C00:05E4 FFB62AFF      PUSH [BP+FF2A]
  582.          7C00:05E8 FFB628FF      PUSH [BP+FF28]
  583.          7C00:05EC FF7682        PUSH [BP-7E]
  584.          7C00:05EF 9A2801FC44    CALL 44FC:0128
  585.          7C00:05F4 89868EFE      MOV [BP+FE8E],AX
  586.          7C00:05F8 899690FE      MOV [BP+FE90],DX
  587.          7C00:05FC 52            PUSH DX
  588.          7C00:05FD 50            PUSH AX
  589.          7C00:05FE 8D86F6FE      LEA AX,[BP+FEF6]
  590.          7C00:0602 16            PUSH SS
  591.          7C00:0603 50            PUSH AX
  592.          7C00:0604 9A9A02FC44    CALL 44FC:029A
  593.          7C00:0609 FFB62AFF      PUSH [BP+FF2A]
  594.          7C00:060D FFB628FF      PUSH [BP+FF28]
  595.          7C00:0611 8B46FE        MOV AX,[BP-02]
  596.          7C00:0614 050C00        ADD AX,000C
  597.          7C00:0617 50            PUSH AX
  598.          7C00:0618 9A2801FC44    CALL 44FC:0128
  599.          7C00:061D 89868EFE      MOV [BP+FE8E],AX
  600.          7C00:0621 899690FE      MOV [BP+FE90],DX
  601.          7C00:0625 52            PUSH DX
  602.          7C00:0626 50            PUSH AX
  603.          7C00:0627 8DBEF6FE      LEA DI,[BP+FEF6]
  604.          7C00:062B 16            PUSH SS
  605.          7C00:062C 07            POP ES
  606.          7C00:062D B9FFFF        MOV CX,FFFF
  607.          7C00:0630 33C0          XOR AX,AX
  608.          7C00:0632 F2            REPNZ
  609.          7C00:0633 AE            SCASB
  610.          7C00:0634 F7D1          NOT CX
  611.          7C00:0636 49            DEC CX
  612.          7C00:0637 8BF1          MOV SI,CX
  613.          7C00:0639 8D82F6FE      LEA AX,[BP+SI+FEF6]
  614.          7C00:063D 16            PUSH SS
  615.          7C00:063E 50            PUSH AX
  616.          7C00:063F 9A9A02FC44    CALL 44FC:029A
  617.          7C00:0644 FFB62AFF      PUSH [BP+FF2A]
  618.          7C00:0648 FFB628FF      PUSH [BP+FF28]
  619.          7C00:064C 8B46F2        MOV AX,[BP-0E]
  620.          7C00:064F 051800        ADD AX,0018
  621.          7C00:0652 50            PUSH AX
  622.          7C00:0653 9A2801FC44    CALL 44FC:0128
  623.          7C00:0658 89868EFE      MOV [BP+FE8E],AX
  624.          7C00:065C 899690FE      MOV [BP+FE90],DX
  625.          7C00:0660 52            PUSH DX
  626.          7C00:0661 50            PUSH AX
  627.          7C00:0662 8DBEF6FE      LEA DI,[BP+FEF6]
  628.          7C00:0666 16            PUSH SS
  629.          7C00:0667 07            POP ES
  630.          7C00:0668 B9FFFF        MOV CX,FFFF
  631.          7C00:066B 33C0          XOR AX,AX
  632.          7C00:066D F2            REPNZ
  633.          7C00:066E AE            SCASB
  634.          7C00:066F F7D1          NOT CX
  635.          7C00:0671 49            DEC CX
  636.          7C00:0672 8BF1          MOV SI,CX
  637.          7C00:0674 8D82F6FE      LEA AX,[BP+SI+FEF6]
  638.          7C00:0678 16            PUSH SS
  639.          7C00:0679 50            PUSH AX
  640.          7C00:067A 9A9A02FC44    CALL 44FC:029A
  641.          7C00:067F FFB62AFF      PUSH [BP+FF2A]
  642.          7C00:0683 FFB628FF      PUSH [BP+FF28]
  643.          7C00:0687 8B86F4FE      MOV AX,[BP+FEF4]
  644.          7C00:068B 052400        ADD AX,0024
  645.          7C00:068E 50            PUSH AX
  646.          7C00:068F 9A2801FC44    CALL 44FC:0128
  647.          7C00:0694 89868EFE      MOV [BP+FE8E],AX
  648.          7C00:0698 899690FE      MOV [BP+FE90],DX
  649.          7C00:069C 52            PUSH DX
  650.          7C00:069D 50            PUSH AX
  651.          7C00:069E 8DBEF6FE      LEA DI,[BP+FEF6]
  652.          7C00:06A2 16            PUSH SS
  653.          7C00:06A3 07            POP ES
  654.          7C00:06A4 B9FFFF        MOV CX,FFFF
  655.          7C00:06A7 33C0          XOR AX,AX
  656.          7C00:06A9 F2            REPNZ
  657.          7C00:06AA AE            SCASB
  658.          7C00:06AB F7D1          NOT CX
  659.          7C00:06AD 49            DEC CX
  660.          7C00:06AE 8BF1          MOV SI,CX
  661.          7C00:06B0 8D82F6FE      LEA AX,[BP+SI+FEF6]
  662.          7C00:06B4 16            PUSH SS
  663.          7C00:06B5 50            PUSH AX
  664.          7C00:06B6 9A9A02FC44    CALL 44FC:029A
  665.          7C00:06BB C746E8B200    MOV WORD PTR [BP-18],00B2
  666.          7C00:06C0 8D86F6FE      LEA AX,[BP+FEF6]
  667.          7C00:06C4 8946EC        MOV [BP-14],AX
  668.          7C00:06C7 8C56EE        MOV [BP-12],SS
  669.          7C00:06CA 8DBEF6FE      LEA DI,[BP+FEF6]
  670.          7C00:06CE 16            PUSH SS
  671.          7C00:06CF 07            POP ES
  672.          7C00:06D0 B9FFFF        MOV CX,FFFF
  673.          7C00:06D3 33C0          XOR AX,AX
  674.          7C00:06D5 F2            REPNZ
  675.          7C00:06D6 AE            SCASB
  676.          7C00:06D7 F7D1          NOT CX
  677.          7C00:06D9 49            DEC CX
  678.          7C00:06DA 894EF0        MOV [BP-10],CX
  679.          7C00:06DD B084          MOV AL,84
  680.          7C00:06DF 50            PUSH AX
  681.          7C00:06E0 9A1003443D    CALL 3D44:0310
  682.          7C00:06E5 8D46E6        LEA AX,[BP-1A]
  683.          7C00:06E8 16            PUSH SS
  684.          7C00:06E9 50            PUSH AX
  685.          7C00:06EA 9A8202C93C    CALL 3CC9:0282  ; Displays the code
  686.                                                  ; to check
  687.  
  688.          7C00:06EF 8346E80A      ADD WORD PTR [BP-18],+0A
  689.          7C00:06F3 FFB62AFF      PUSH [BP+FF2A]
  690.          7C00:06F7 FFB628FF      PUSH [BP+FF28]
  691.          7C00:06FB B85B00        MOV AX,005B
  692.          7C00:06FE 50            PUSH AX
  693.          7C00:06FF 9A2801FC44    CALL 44FC:0128
  694.          7C00:0704 89868EFE      MOV [BP+FE8E],AX
  695.          7C00:0708 899690FE      MOV [BP+FE90],DX
  696.          7C00:070C 52            PUSH DX
  697.          7C00:070D 50            PUSH AX
  698.          7C00:070E 9A4602FC44    CALL 44FC:0246
  699.          7C00:0713 8946EC        MOV [BP-14],AX
  700.          7C00:0716 8956EE        MOV [BP-12],DX
  701.          7C00:0719 FFB690FE      PUSH [BP+FE90]
  702.          7C00:071D FFB68EFE      PUSH [BP+FE8E]
  703.          7C00:0721 9AF201FC44    CALL 44FC:01F2
  704.          7C00:0726 8946F0        MOV [BP-10],AX
  705.          7C00:0729 2AC0          SUB AL,AL
  706.          7C00:072B 50            PUSH AX
  707.          7C00:072C 9A1003443D    CALL 3D44:0310
  708.          7C00:0731 8D46E6        LEA AX,[BP-1A]
  709.          7C00:0734 16            PUSH SS
  710.          7C00:0735 50            PUSH AX
  711.          7C00:0736 9A8202C93C    CALL 3CC9:0282   ; Displays "PROPER
  712.                                                   ; response" msg
  713.  
  714.          7C00:073B 8B86F4FE      MOV AX,[BP+FEF4]
  715.          7C00:073F 2B46F2        SUB AX,[BP-0E]
  716.          7C00:0742 898672FE      MOV [BP+FE72],AX
  717.          7C00:0746 0346FE        ADD AX,[BP-02]
  718.          7C00:0749 898676FE      MOV [BP+FE76],AX
  719.          7C00:074D 0BC0          OR AX,AX
  720.          7C00:074F 7D09          JGE 075A
  721.          7C00:0751 050C00        ADD AX,000C
  722.          7C00:0754 898676FE      MOV [BP+FE76],AX
  723.          7C00:0758 EB0A          JMP 0764
  724.          7C00:075A 3D0C00        CMP AX,000C
  725.          7C00:075D 7C05          JL 0764
  726.          7C00:075F 83AE76FE0C    SUB WORD PTR [BP+FE76],+0C
  727.          7C00:0764 8B4682        MOV AX,[BP-7E]
  728.          7C00:0767 038672FE      ADD AX,[BP+FE72]
  729.          7C00:076B 898674FE      MOV [BP+FE74],AX
  730.          7C00:076F 0BC0          OR AX,AX
  731.          7C00:0771 7D09          JGE 077C
  732.          7C00:0773 050C00        ADD AX,000C
  733.          7C00:0776 898674FE      MOV [BP+FE74],AX
  734.          7C00:077A EB0A          JMP 0786
  735.          7C00:077C 3D0C00        CMP AX,000C
  736.          7C00:077F 7C05          JL 0786
  737.          7C00:0781 83AE74FE0C    SUB WORD PTR [BP+FE74],+0C
  738.          7C00:0786 8BB6F4FE      MOV SI,[BP+FEF4]
  739.          7C00:078A D1E6          SHL SI,1
  740.          7C00:078C 8BB262FF      MOV SI,[BP+SI+FF62]
  741.          7C00:0790 89B672FE      MOV [BP+FE72],SI
  742.          7C00:0794 8B8676FE      MOV AX,[BP+FE76]
  743.          7C00:0798 D1E0          SHL AX,1
  744.          7C00:079A D1E0          SHL AX,1
  745.          7C00:079C 03F0          ADD SI,AX
  746.          7C00:079E D1E6          SHL SI,1
  747.          7C00:07A0 8B8292FE      MOV AX,[BP+SI+FE92]
  748.          7C00:07A4 8986F4FE      MOV [BP+FEF4],AX
  749.          7C00:07A8 3D2B00        CMP AX,002B
  750.          7C00:07AB 7515          JNZ 07C2
  751.          7C00:07AD 8BB674FE      MOV SI,[BP+FE74]
  752.          7C00:07B1 D1E6          SHL SI,1
  753.          7C00:07B3 D1E6          SHL SI,1
  754.          7C00:07B5 03B672FE      ADD SI,[BP+FE72]
  755.          7C00:07B9 D1E6          SHL SI,1
  756.          7C00:07BB 8B4286        MOV AX,[BP+SI-7A]
  757.          7C00:07BE 8986F4FE      MOV [BP+FEF4],AX
  758.          7C00:07C2 C78684FE7800  MOV WORD PTR [BP+FE84],0078
  759.          7C00:07C8 B85100        MOV AX,0051
  760.          7C00:07CB 898686FE      MOV [BP+FE86],AX
  761.          7C00:07CF 898688FE      MOV [BP+FE88],AX
  762.          7C00:07D3 C7868AFE0900  MOV WORD PTR [BP+FE8A],0009
  763.          7C00:07D9 C78678FE7900  MOV WORD PTR [BP+FE78],0079
  764.          7C00:07DF C7867AFE5900  MOV WORD PTR [BP+FE7A],0059
  765.          7C00:07E5 C7867CFE0000  MOV WORD PTR [BP+FE7C],0000
  766.          7C00:07EB 8D86F6FE      LEA AX,[BP+FEF6]
  767.          7C00:07EF 89867EFE      MOV [BP+FE7E],AX
  768.          7C00:07F3 8C9680FE      MOV [BP+FE80],SS
  769.          7C00:07F7 C78682FE0000  MOV WORD PTR [BP+FE82],0000
  770.          7C00:07FD FFB62AFF      PUSH [BP+FF2A]
  771.          7C00:0801 FFB628FF      PUSH [BP+FF28]
  772.          7C00:0805 8B86F4FE      MOV AX,[BP+FEF4]
  773.          7C00:0809 053000        ADD AX,0030
  774.          7C00:080C 50            PUSH AX
  775.          7C00:080D 9A2801FC44    CALL 44FC:0128
  776.          7C00:0812 89868EFE      MOV [BP+FE8E],AX
  777.          7C00:0816 899690FE      MOV [BP+FE90],DX
  778.          7C00:081A 52            PUSH DX
  779.          7C00:081B 50            PUSH AX
  780.          7C00:081C 8D8630FF      LEA AX,[BP+FF30]
  781.          7C00:0820 16            PUSH SS
  782.          7C00:0821 50            PUSH AX
  783.          7C00:0822 9A9A02FC44    CALL 44FC:029A
  784.          7C00:0827 B047          MOV AL,47
  785.          7C00:0829 50            PUSH AX
  786.          7C00:082A 9A1003443D    CALL 3D44:0310
  787.          7C00:082F C7868CFE0000  MOV WORD PTR [BP+FE8C],0000
  788.  
  789.          ; All the code you just saw.  I have no clue what it does
  790.          ; (hey at least I'm honest) but it wasn't important.
  791.  
  792.          ; Here is the imput outer loop
  793.  
  794.          7C00:0835 FF365220      PUSH [2052]
  795.          7C00:0839 FF365020      PUSH [2050]
  796.          7C00:083D 9A2802FD41    CALL 41FD:0228
  797.          7C00:0842 888670FE      MOV [BP+FE70],AL
  798.          7C00:0846 0AC0          OR AL,AL
  799.          7C00:0848 7503          JNZ 084D
  800.          7C00:084A E99200        JMP 08DF
  801.          7C00:084D 2AE4          SUB AH,AH
  802.          7C00:084F 2D0800        SUB AX,0008
  803.          7C00:0852 745A          JZ 08AE
  804.          7C00:0854 48            DEC AX
  805.          7C00:0855 48            DEC AX
  806.          7C00:0856 7503          JNZ 085B
  807.          7C00:0858 E90901        JMP 0964
  808.          7C00:085B 2D0300        SUB AX,0003
  809.          7C00:085E 7503          JNZ 0863
  810.          7C00:0860 E90101        JMP 0964
  811.          7C00:0863 8A9E70FE      MOV BL,[BP+FE70]
  812.          7C00:0867 2AFF          SUB BH,BH
  813.          7C00:0869 F687790B57    TEST BYTE PTR [BX+0B79],57
  814.          7C00:086E 746F          JZ 08DF
  815.          7C00:0870 F687790B03    TEST BYTE PTR [BX+0B79],03
  816.          7C00:0875 740C          JZ 0883
  817.          7C00:0877 F687790B02    TEST BYTE PTR [BX+0B79],02
  818.          7C00:087C 7405          JZ 0883
  819.          7C00:087E 80AE70FE20    SUB BYTE PTR [BP+FE70],20
  820.          7C00:0883 8A8670FE      MOV AL,[BP+FE70]
  821.          7C00:0887 C49E7EFE      LES BX,[BP+FE7E]
  822.          7C00:088B 8BB682FE      MOV SI,[BP+FE82]
  823.          7C00:088F 26            ES:
  824.          7C00:0890 8800          MOV [BX+SI],AL
  825.          7C00:0892 FF8682FE      INC WORD PTR [BP+FE82]
  826.          7C00:0896 FFB688FE      PUSH [BP+FE88]
  827.          7C00:089A 8D8678FE      LEA AX,[BP+FE78]
  828.          7C00:089E 50            PUSH AX
  829.          7C00:089F 9A56049324    CALL 2493:0456
  830.          7C00:08A4 83C404        ADD SP,+04
  831.          7C00:08A7 0BC0          OR AX,AX
  832.          7C00:08A9 7534          JNZ 08DF
  833.          7C00:08AB EB27          JMP 08D4
  834.          7C00:08AD 90            NOP
  835.          7C00:08AE 83BE82FE00    CMP WORD PTR [BP+FE82],+00
  836.          7C00:08B3 7404          JZ 08B9
  837.          7C00:08B5 FF8E82FE      DEC WORD PTR [BP+FE82]
  838.          7C00:08B9 B008          MOV AL,08
  839.          7C00:08BB 50            PUSH AX
  840.          7C00:08BC 9A1003443D    CALL 3D44:0310
  841.          7C00:08C1 8D8684FE      LEA AX,[BP+FE84]
  842.          7C00:08C5 16            PUSH SS
  843.          7C00:08C6 50            PUSH AX
  844.          7C00:08C7 9A6A00843D    CALL 3D84:006A
  845.          7C00:08CC B047          MOV AL,47
  846.          7C00:08CE 50            PUSH AX
  847.          7C00:08CF 9A1003443D    CALL 3D44:0310
  848.          7C00:08D4 8D8678FE      LEA AX,[BP+FE78]
  849.          7C00:08D8 16            PUSH SS
  850.          7C00:08D9 50            PUSH AX
  851.          7C00:08DA 9A8202C93C    CALL 3CC9:0282
  852.          7C00:08DF 83BE8CFE00    CMP WORD PTR [BP+FE8C],+00
  853.          7C00:08E4 7503          JNZ 08E9
  854.          7C00:08E6 E94CFF        JMP 0835
  855.  
  856.          ; Next comes the code that checks your entry.  If you follow
  857.          ; it through you will see it handles not only clearing the
  858.          ; screen and printing the "GOOD GOING" message but it also
  859.          ; handles bad entries, etc.
  860.  
  861.          7C00:08E9 8BB682FE      MOV SI,[BP+FE82]
  862.          7C00:08ED C682F6FE00    MOV BYTE PTR [BP+SI+FEF6],00
  863.          7C00:08F2 8DBE30FF      LEA DI,[BP+FF30]
  864.          7C00:08F6 8DB6F6FE      LEA SI,[BP+FEF6]
  865.          7C00:08FA 16            PUSH SS
  866.          7C00:08FB 07            POP ES
  867.          7C00:08FC B9FFFF        MOV CX,FFFF
  868.          7C00:08FF 33C0          XOR AX,AX
  869.          7C00:0901 F2            REPNZ
  870.          7C00:0902 AE            SCASB
  871.          7C00:0903 F7D1          NOT CX
  872.          7C00:0905 2BF9          SUB DI,CX
  873.          7C00:0907 F3            REPZ
  874.          7C00:0908 A6            CMPSB
  875.          7C00:0909 7405          JZ 0910
  876.          7C00:090B 1BC0          SBB AX,AX
  877.          7C00:090D 1DFFFF        SBB AX,FFFF
  878.          7C00:0910 3D0100        CMP AX,0001
  879.          7C00:0913 1BC0          SBB AX,AX
  880.          7C00:0915 F7D8          NEG AX
  881.          7C00:0917 8986F2FE      MOV [BP+FEF2],AX
  882.          7C00:091B 0BC0          OR AX,AX
  883.          7C00:091D 7509          JNZ 0928
  884.          7C00:091F 837E8401      CMP WORD PTR [BP-7C],+01
  885.          7C00:0923 7703          JA 0928
  886.          7C00:0925 E91C02        JMP 0B44
  887.          7C00:0928 0BC0          OR AX,AX
  888.          7C00:092A 7506          JNZ 0932
  889.          7C00:092C 837E8403      CMP WORD PTR [BP-7C],+03
  890.          7C00:0930 740A          JZ 093C
  891.          7C00:0932 0BC0          OR AX,AX
  892.          7C00:0934 745E          JZ 0994
  893.          7C00:0936 837E8403      CMP WORD PTR [BP-7C],+03
  894.          7C00:093A 7358          JNB 0994
  895.          7C00:093C B047          MOV AL,47
  896.          7C00:093E 50            PUSH AX
  897.          7C00:093F 9A1003443D    CALL 3D44:0310
  898.          7C00:0944 8D867AFF      LEA AX,[BP+FF7A]
  899.          7C00:0948 16            PUSH SS
  900.          7C00:0949 50            PUSH AX
  901.          7C00:094A 9A36007E3D    CALL 3D7E:0036
  902.          7C00:094F 83BEF2FE00    CMP WORD PTR [BP+FEF2],+00
  903.          7C00:0954 7518          JNZ 096E
  904.          7C00:0956 FF7680        PUSH [BP-80]
  905.          7C00:0959 FFB67EFF      PUSH [BP+FF7E]
  906.          7C00:095D 9A1C04F93C    CALL 3CF9:041C
  907.          7C00:0962 EB16          JMP 097A
  908.          7C00:0964 C7868CFE0100  MOV WORD PTR [BP+FE8C],0001
  909.          7C00:096A E972FF        JMP 08DF
  910.          7C00:096D 90            NOP
  911.          7C00:096E FF7680        PUSH [BP-80]
  912.          7C00:0971 FFB67EFF      PUSH [BP+FF7E]
  913.          7C00:0975 9A7204F93C    CALL 3CF9:0472
  914.          7C00:097A 89867EFF      MOV [BP+FF7E],AX
  915.          7C00:097E 895680        MOV [BP-80],DX
  916.          7C00:0981 B008          MOV AL,08
  917.          7C00:0983 50            PUSH AX
  918.          7C00:0984 9A1003443D    CALL 3D44:0310
  919.          7C00:0989 8D867AFF      LEA AX,[BP+FF7A]
  920.          7C00:098D 16            PUSH SS
  921.          7C00:098E 50            PUSH AX
  922.          7C00:098F 9A36007E3D    CALL 3D7E:0036
  923.          7C00:0994 B047          MOV AL,47
  924.          7C00:0996 50            PUSH AX
  925.          7C00:0997 9A1003443D    CALL 3D44:0310
  926.          7C00:099C 8D46F6        LEA AX,[BP-0A]
  927.          7C00:099F 16            PUSH SS
  928.          7C00:09A0 50            PUSH AX
  929.          7C00:09A1 9A6A00843D    CALL 3D84:006A
  930.          7C00:09A6 B008          MOV AL,08
  931.          7C00:09A8 50            PUSH AX
  932.          7C00:09A9 9A1003443D    CALL 3D44:0310
  933.          7C00:09AE 8D8684FE      LEA AX,[BP+FE84]
  934.          7C00:09B2 16            PUSH SS
  935.          7C00:09B3 50            PUSH AX
  936.          7C00:09B4 9A6A00843D    CALL 3D84:006A
  937.          7C00:09B9 83BEF2FE00    CMP WORD PTR [BP+FEF2],+00
  938.          7C00:09BE 7503          JNZ 09C3
  939.          7C00:09C0 E98500        JMP 0A48
  940.          7C00:09C3 2AC0          SUB AL,AL
  941.          7C00:09C5 50            PUSH AX
  942.          7C00:09C6 9A1003443D    CALL 3D44:0310
  943.          7C00:09CB 8B46F8        MOV AX,[BP-08]
  944.          7C00:09CE 050700        ADD AX,0007
  945.          7C00:09D1 8946E8        MOV [BP-18],AX
  946.          7C00:09D4 FFB62EFF      PUSH [BP+FF2E]
  947.          7C00:09D8 FFB62CFF      PUSH [BP+FF2C]
  948.          7C00:09DC 2BC0          SUB AX,AX
  949.          7C00:09DE 50            PUSH AX
  950.          7C00:09DF 9A2801FC44    CALL 44FC:0128
  951.          7C00:09E4 89868EFE      MOV [BP+FE8E],AX
  952.          7C00:09E8 899690FE      MOV [BP+FE90],DX
  953.          7C00:09EC C78672FE0000  MOV WORD PTR [BP+FE72],0000
  954.          7C00:09F2 EB04          JMP 09F8
  955.          7C00:09F4 FF8672FE      INC WORD PTR [BP+FE72]
  956.          7C00:09F8 83BE72FE05    CMP WORD PTR [BP+FE72],+05
  957.          7C00:09FD 7C03          JL 0A02
  958.          7C00:09FF E94201        JMP 0B44
  959.          7C00:0A02 52            PUSH DX
  960.          7C00:0A03 50            PUSH AX
  961.          7C00:0A04 9A4602FC44    CALL 44FC:0246
  962.          7C00:0A09 8946EC        MOV [BP-14],AX
  963.          7C00:0A0C 8956EE        MOV [BP-12],DX
  964.          7C00:0A0F FFB690FE      PUSH [BP+FE90]
  965.          7C00:0A13 FFB68EFE      PUSH [BP+FE8E]
  966.          7C00:0A17 9AF201FC44    CALL 44FC:01F2
  967.          7C00:0A1C 8946F0        MOV [BP-10],AX
  968.          7C00:0A1F 8D46E6        LEA AX,[BP-1A]
  969.          7C00:0A22 16            PUSH SS
  970.          7C00:0A23 50            PUSH AX
  971.          7C00:0A24 9A8202C93C    CALL 3CC9:0282
  972.          7C00:0A29 8346E80A      ADD WORD PTR [BP-18],+0A
  973.          7C00:0A2D FFB690FE      PUSH [BP+FE90]
  974.          7C00:0A31 FFB68EFE      PUSH [BP+FE8E]
  975.          7C00:0A35 B80100        MOV AX,0001
  976.          7C00:0A38 50            PUSH AX
  977.          7C00:0A39 9A7E01FC44    CALL 44FC:017E
  978.          7C00:0A3E 89868EFE      MOV [BP+FE8E],AX
  979.          7C00:0A42 899690FE      MOV [BP+FE90],DX
  980.          7C00:0A46 EBAC          JMP 09F4
  981.          7C00:0A48 B084          MOV AL,84
  982.          7C00:0A4A 50            PUSH AX
  983.          7C00:0A4B 9A1003443D    CALL 3D44:0310
  984.          7C00:0A50 C746E88C00    MOV WORD PTR [BP-18],008C
  985.          7C00:0A55 FFB62AFF      PUSH [BP+FF2A]
  986.          7C00:0A59 FFB628FF      PUSH [BP+FF28]
  987.          7C00:0A5D B85C00        MOV AX,005C
  988.          7C00:0A60 50            PUSH AX
  989.          7C00:0A61 9A2801FC44    CALL 44FC:0128
  990.          7C00:0A66 89868EFE      MOV [BP+FE8E],AX
  991.          7C00:0A6A 899690FE      MOV [BP+FE90],DX
  992.          7C00:0A6E 52            PUSH DX
  993.          7C00:0A6F 50            PUSH AX
  994.          7C00:0A70 9A4602FC44    CALL 44FC:0246
  995.          7C00:0A75 8946EC        MOV [BP-14],AX
  996.          7C00:0A78 8956EE        MOV [BP-12],DX
  997.          7C00:0A7B FFB690FE      PUSH [BP+FE90]
  998.          7C00:0A7F FFB68EFE      PUSH [BP+FE8E]
  999.          7C00:0A83 9AF201FC44    CALL 44FC:01F2
  1000.          7C00:0A88 8946F0        MOV [BP-10],AX
  1001.          7C00:0A8B 8D46E6        LEA AX,[BP-1A]
  1002.          7C00:0A8E 16            PUSH SS
  1003.          7C00:0A8F 50            PUSH AX
  1004.          7C00:0A90 9A8202C93C    CALL 3CC9:0282
  1005.          7C00:0A95 2AC0          SUB AL,AL
  1006.          7C00:0A97 50            PUSH AX
  1007.          7C00:0A98 9A1003443D    CALL 3D44:0310
  1008.          7C00:0A9D 8346E80B      ADD WORD PTR [BP-18],+0B
  1009.          7C00:0AA1 FFB690FE      PUSH [BP+FE90]
  1010.          7C00:0AA5 FFB68EFE      PUSH [BP+FE8E]
  1011.          7C00:0AA9 B80100        MOV AX,0001
  1012.          7C00:0AAC 50            PUSH AX
  1013.          7C00:0AAD 9A7E01FC44    CALL 44FC:017E
  1014.          7C00:0AB2 89868EFE      MOV [BP+FE8E],AX
  1015.          7C00:0AB6 899690FE      MOV [BP+FE90],DX
  1016.          7C00:0ABA 52            PUSH DX
  1017.          7C00:0ABB 50            PUSH AX
  1018.          7C00:0ABC 9A4602FC44    CALL 44FC:0246
  1019.          7C00:0AC1 8946EC        MOV [BP-14],AX
  1020.          7C00:0AC4 8956EE        MOV [BP-12],DX
  1021.          7C00:0AC7 FFB690FE      PUSH [BP+FE90]
  1022.          7C00:0ACB FFB68EFE      PUSH [BP+FE8E]
  1023.          7C00:0ACF 9AF201FC44    CALL 44FC:01F2
  1024.          7C00:0AD4 8946F0        MOV [BP-10],AX
  1025.          7C00:0AD7 8D46E6        LEA AX,[BP-1A]
  1026.          7C00:0ADA 16            PUSH SS
  1027.          7C00:0ADB 50            PUSH AX
  1028.  
  1029.  
  1030.          ; Lot's of code Huh?
  1031.  
  1032.  
  1033.          7C00:0ADC 9A8202C93C    CALL 3CC9:0282
  1034.          7C00:0AE1 C746E8BC00    MOV WORD PTR [BP-18],00BC
  1035.          7C00:0AE6 FFB690FE      PUSH [BP+FE90]
  1036.          7C00:0AEA FFB68EFE      PUSH [BP+FE8E]
  1037.          7C00:0AEE B80100        MOV AX,0001
  1038.          7C00:0AF1 50            PUSH AX
  1039.          7C00:0AF2 9A7E01FC44    CALL 44FC:017E
  1040.          7C00:0AF7 89868EFE      MOV [BP+FE8E],AX
  1041.          7C00:0AFB 899690FE      MOV [BP+FE90],DX
  1042.          7C00:0AFF 52            PUSH DX
  1043.          7C00:0B00 50            PUSH AX
  1044.          7C00:0B01 9A4602FC44    CALL 44FC:0246
  1045.          7C00:0B06 8946EC        MOV [BP-14],AX
  1046.          7C00:0B09 8956EE        MOV [BP-12],DX
  1047.          7C00:0B0C FFB690FE      PUSH [BP+FE90]
  1048.          7C00:0B10 FFB68EFE      PUSH [BP+FE8E]
  1049.          7C00:0B14 9AF201FC44    CALL 44FC:01F2
  1050.          7C00:0B19 8946F0        MOV [BP-10],AX
  1051.          7C00:0B1C 8D46E6        LEA AX,[BP-1A]
  1052.          7C00:0B1F 16            PUSH SS
  1053.          7C00:0B20 50            PUSH AX
  1054.          7C00:0B21 9A8202C93C    CALL 3CC9:0282
  1055.          7C00:0B26 B80100        MOV AX,0001
  1056.          7C00:0B29 50            PUSH AX
  1057.          7C00:0B2A 9AF4019324    CALL 2493:01F4
  1058.          7C00:0B2F 83C402        ADD SP,+02
  1059.          7C00:0B32 B047          MOV AL,47
  1060.          7C00:0B34 50            PUSH AX
  1061.          7C00:0B35 9A1003443D    CALL 3D44:0310
  1062.          7C00:0B3A 8D46F6        LEA AX,[BP-0A]
  1063.          7C00:0B3D 16            PUSH SS
  1064.          7C00:0B3E 50            PUSH AX
  1065.          7C00:0B3F 9A6A00843D    CALL 3D84:006A
  1066.          7C00:0B44 83BEF2FE00    CMP WORD PTR [BP+FEF2],+00
  1067.          7C00:0B49 7508          JNZ 0B53
  1068.          7C00:0B4B FF4E84        DEC WORD PTR [BP-7C]
  1069.          7C00:0B4E 7403          JZ 0B53
  1070.          7C00:0B50 E9A7F9        JMP 04FA
  1071.          7C00:0B53 FF76F4        PUSH [BP-0C]
  1072.          7C00:0B56 8D867AFF      LEA AX,[BP+FF7A]
  1073.          7C00:0B5A 50            PUSH AX
  1074.          7C00:0B5B FFB62EFF      PUSH [BP+FF2E]
  1075.          7C00:0B5F FFB62CFF      PUSH [BP+FF2C]
  1076.          7C00:0B63 FFB62AFF      PUSH [BP+FF2A]
  1077.          7C00:0B67 FFB628FF      PUSH [BP+FF28]
  1078.          7C00:0B6B E88EF5        CALL 00FC
  1079.          7C00:0B6E 8B86F2FE      MOV AX,[BP+FEF2]
  1080.          7C00:0B72 5E            POP SI
  1081.          7C00:0B73 5F            POP DI
  1082.  
  1083.          ; Here is the exit code I was talking about
  1084.  
  1085.          7C00:0B74 8BE5          MOV SP,BP
  1086.          7C00:0B76 5D            POP BP
  1087.          7C00:0B77 CB            RETF
  1088.          7C00:0B78 B85A06        MOV AX,065A
  1089.          7C00:0B7B CB            RETF
  1090.          7C00:0B7C B89006        MOV AX,0690
  1091.          7C00:0B7F CB            RETF
  1092.  
  1093.  
  1094.               Ok, after looking through all of that, can  you  tell me
  1095.          where to put  the  patch.   Simple.   How  about right at the
  1096.          begining of the doc check right  after the music routines (ie
  1097.          address 7C00:04B6).  Hey yeah ... good idea.   But  how do we
  1098.          want to patch  it.   Well,  since  this  is  a  higher  level
  1099.          language, we just can't use RETF.  We must reset the stack.
  1100.               Since I hate large patches,  a  simply  decided  on  the
  1101.          follow patch
  1102.  
  1103.          7C00:04B6 E9BB06        JMP B74
  1104.  
  1105.               Ok, by jumping to 0B74, we still get the  music  but the
  1106.          actual doc check  is  not  executed.   But  there  is still a
  1107.          problem.  Remember how I said  that  AX  was tested after the
  1108.          doc check.  Well,  we  still  have  to fake the  check.   The
  1109.          easiest way, is to simply NOP the condition jmp.  Here is the
  1110.          section of code again
  1111.  
  1112.  
  1113.          45E2:0235 9A46010F4A    CALL 7C00:146   ; Call to Doc Check
  1114.          45E2:023A 83C404        ADD  SP,+04
  1115.          45E2:023D 0BC0          OR   AX,AX
  1116.          45E2:023F 7465          JZ   02A6
  1117.  
  1118.               If you  remember, when you enter the right code, AX will
  1119.          be set to 0001 when we exit to  45E2:023A.  If we OR 0001 and
  1120.          0001 we get 0001.  Here is the binary ...
  1121.  
  1122.  
  1123.                               0000 0000 0000 0001  ( remember OR means
  1124.                                                      if  either is bit
  1125.                           or  0000 0000 0000 0001    is 1 )
  1126.                               ───────────────────
  1127.                               0000 0000 0000 0001
  1128.  
  1129.               Clearly we  don't want to branch at the JZ at 45E2:023F.
  1130.          So, to finish the patch we simply NOP that jmp.
  1131.  
  1132.               Oh boy.. that was hard.   So  let's  test  it  out.  But
  1133.          first, a little  forsight.  We will need a unique  string  of
  1134.          bytes to search  for when making the patch.  I say we use the
  1135.          code from 7C00:04C4  to  7C00:04CE   and  from  45E2:0235  to
  1136.          45E2:023F.  Yea, write  down  the  hex  equivelent  and  then
  1137.          restart.  Again break  in right after the switch to graphics.
  1138.          Now add the  patch  (ie  A  7C00:04B6  <ENTER>,  etc.).   Now
  1139.          execute the program.
  1140.  
  1141.               SHIT!  It  worked,  we  are  fucking amazing.   Ok,  now
  1142.          adding the patch  permenatly.   Using  PCTOOLS  (or whatever)
  1143.          search the file STARCON.EXE for the bytes mention above
  1144.          (ie: C746F60B00C746F87900C746FA2801)      But    wait,    now
  1145.          matches...Hmmm strange.  It was there just a minute ago...but
  1146.          wait there... another file STARCON.OVL (as we  all  know .OVL
  1147.          mean OVERLAY).  Let's try searching this one.
  1148.  
  1149.               There we  go,  that's better (it should should up on the
  1150.          13 sector read in).  Now to add  the  patch.  Simply find the
  1151.          search bytes and  the go backwards until the first  occurance
  1152.          of the hex byte 9A.  Add the patch here.  Save it.
  1153.  
  1154.               Next, add  the patch to 45E2:023F.  Search for the bytes
  1155.          83C4040BC07465.  The should appear  on sector 3 (give or take
  1156.          a few sectors).  Now simply change the 2 bytes 74 65 to 90 90
  1157.          and save the sector.  Now, you are good to go.
  1158.  
  1159.               Well shit, this has been some hell of a textfile.   1113
  1160.          lines in all.   But  what  detail.   Ok  I  hope  you learned
  1161.          something from all of this.  And  this  end the first part of
  1162.          CRACKING 101 - the 1990 edition.  From here out all lessons (
  1163.          lesson 5 and up) will be released on their own.
  1164.  
  1165.               I would like the thank Phantom Phlegm for  pushing me to
  1166.          finish this shit.
  1167.  
  1168.               Till lesson 5 this is Buckaroo Banzai, signing off.
  1169.  
  1170.  
  1171.          OH... I can  be  reached for personal help via E-MAIL on LORD
  1172.          WOLFEN's CASTLE or TOS...
  1173.