seg_a segment byte public assume cs:seg_a, ds:seg_a org 100h start: jmp loc_9 c_1 db ’ SYZ ’ old_int21h_off dw 8888h old_int21h_seg dw 8888h count_1 dw 0h FE_1 DB 20H f_buff db 16 dup (0) int_21h_entry:
pushf cli push ax push bx push cx push dx push si push di push ds push es push bp cld CMP Ax,4b00H JZ HAND_1 JMP EXIT_21H_1 hand_1: push cs pop es mov si,dx cld con_1_1:lodsb cmp al,2eh jz f2e_1 cmp al,0 jz exit_21h_1 jmp con_1_1
f2e_1: dec si sub si,dx cmp si,16 ja a_16 mov cx,si mov si,dx push cx mov di,offset f_buff mov cx,16 mov al,20h rep stosb mov di,offset f_buff pop cx rep movsb jmp rw_disk1 a_16: add si,dx sub si,16 mov cx,16 mov di,offset f_buff rep movsb rw_disk1: mov ax,201h mov bx,offset disk_buff mov cx,8h mov dx,80h int 13h jb exit_21h_1 push cs
pop ds mov si,offset disk_buff+16 mov di,offset disk_buff cld mov cx,512-16 rep movsb mov si,offset f_buff mov di,offset disk_buff+512-16 mov cx,16 rep movsb mov ax,301h mov bx,offset disk_buff mov cx,8h mov dx,80h int 13h
exit_21h_1: pop bp pop es pop ds pop di pop si pop dx pop cx pop bx pop ax popf jmp dword ptr cs:old_int21h_off org 200h disk_buff db 512 dup(20h) loc_9: mov ah,9 mov dx,offset disp1 int 21h MOV SI,80H LODSB CMP AL,0 JZ TSR_1 mov si,82h lodsb or al,20h cmp al,63h jnz no63 push cs pop es cld mov di,offset disk_buff mov cx,512 mov al,20h rep stosb mov ax,301h mov bx,offset disk_buff mov cx,8h mov dx,80h int 13h no63:cmp al,’s’ jnz tsr_1 jmp disp_hxz TSR_1: mov ah,35h mov al,21h int 21h
cmp bx,offset int_21h_entry jne loc_10
jmp loc_11 loc_10: mov cs:old_int21h_off,bx mov cs:old_int21h_seg,es mov ah,25h mov al,21h mov dx,offset int_21h_entry int 21h mov dx,offset loc_9 int 27h loc_11: mov ah,9 mov dx,offset data_4 int 21h loc_121: mov ah,4Ch int 21h disp_hxz: mov ax,201h mov bx,offset disk_buff mov cx,8h mov dx,80h int 13h jb loc_121 mov cx,32 mov si,bx re_disp: push cx mov cx,16 mov di,offset disp_buff rep movsb mov dx,offset disp_buff mov ah,9 int 21h pop cx loop re_disp mov ah,4ch int 21h disp_buff db 16 dup(20h),0dh,0ah,24h data_4 db ’Already installed!!’, 0Dh, 0Ah, ’$’ disp1 db ’(C)Sheng Yuzeng 1997.6.4’,0dh,0ah,24h seg_a ends end start
|