home *** CD-ROM | disk | FTP | other *** search
- ;* ------------------------------------------------------- *
- ;* PRODRIV.ASM *
- ;* Treiber zum Schutz eines Verzeichnisses vor unbefugtem *
- ;* Zugriff. *
- ;* (c) 1989 Dietmar Höhmann & TOOLBOX *
- ;* ------------------------------------------------------- *
- ;* Der Treiber muß folgendermaßen übersetzt werden: *
- ;* MASM PRODRIV; *
- ;* LINK PRODRIV; *
- ;* EXE2BIN PRODRIV.EXE PRODRIV.SYS *
- ;* In die Datei CONFIG.SYS muß die Zeile *
- ;* DEVICE=\<verzeichnis>\PRODRIV.SYS eingefügt werden *
- ;* ------------------------------------------------------- *
- code segment
- assume cs:code,ds:code,es:code,ss:code
-
- org 0
-
- ;Treiberkopf
-
- dw -1,-1 ; Vektor auf nächsten Treiber
- dw 8800h ; Attribut
- dw offset strat ; Strategie-Routine
- dw offset intr ; Interrupt-Routine
- name: db "CONFIG "
-
- Pointer dw ?,?
- Password db "phoenix soft$"
- meld db "Enter password for directory CONFIG: $"
-
- strat proc far
- mov cs:pointer,bx
- mov cs:pointer+2,es
- ret
- strat endp
-
- intr proc far
- push ax
- push bx
- push cx
- push dx
- push di
- push si
- push bp
- push ds
- push es
- pushf
- push cs
- pop ds
- les di,dword ptr pointer
- mov bl,es:[di+2]
- cmp bl,0
- je init
- cmp bl,8
- je write
- cmp bl,9
- je write
- cmp bl,14
- je close
- cmp bl,4
- je read
- cmp bl,5
- je read
- mov ax,0100h
- return: mov es:[di+3],ax
- popf
- pop es
- pop ds
- pop bp
- pop si
- pop di
- pop dx
- pop cx
- pop bx
- pop ax
- ret
- intr endp
-
- write proc near
- mov ax,0100h
- jmp return
- write endp
-
- close proc near
- mov ax,0100h
- jmp return
- close endp
-
- read proc near
- mov es:[di+12h],word ptr 0
- mov ax,8009H
- jmp return
- read endp
-
- init proc near
- mov ah,2
- int 22
- dec al
- jnz next
- mov dx,offset meld
- mov ah,9
- int 21h
- mov si,offset password
- loop1: mov ah,0
- int 16h
- cmp al,0
- je next
- cmp al,[si]
- jne next
- inc si
- cmp [si],byte ptr "$"
- jne loop1
- jmp falsch
- next:
- mov si,offset password
- loop: mov [si],byte ptr 0
- inc si
- cmp [si],byte ptr "$"
- jne loop
- mov word ptr es:[di+14],offset init
- mov es:[di+16],cs
- xor ax,ax
- jmp return
- falsch:
- mov ah,"a"
- mov si,offset name
- mov [si],ah
- jmp next
- init endp
-
- code ends
- end