⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pcirom.txt

📁 利用对网卡RTL8139的开发,使PC硬盘,网卡,口令为一体,从而实现对硬盘数据的保护.
💻 TXT
字号:
code segment              ;PCI netwark BOOTROM演示
   assume cs:code,ds:code
   org 0h
stt  db 55h,0aah,10h  ;
    jmp init
    org 18h
PCI_STRU_ADDR DW offset PCI_DATA_STRU ;
    org 1ah
PCI_DATA_STRU db 'PCIR'               ;
    dw 10ech
    dw 8139h
    dw 0
    dw 0018h
    db 0
    db 0,0,2
    dw 0010h
    dw 0000h
    db 0
    db 80h
    dw 0
    org 33h
db 'Data Protect V1.00'
    org 4dh
db '$pnp'
    org 60H
    org 100h
init:pushf        ;
   db 60h   ;pusha
   push ds
   push es
   xor ax,ax
   mov ds,ax
   mov di,64h
   mov ax,cs
   cmp ax,[di+2] ;
   jz e19        ;
   mov si,80h
   cli
   mov ax,[di]   ;
   mov bx,[di+2]
   mov [si],ax
   mov [si+2],bx
   lea dx,new19
   mov [di],dx    ;
   mov [di+2],cs
   sti
e19:pop es
   pop ds
   db 61h   ;popa
   popf
   db 0cbh  ;retf ;
new19:pushf       ;
   db 60h   ;pusha
   push ds
   push es
   mov si,80h
   mov di,64h
   mov ax,0
   mov ds,ax
   cli
   mov ax,[si]   ;
   mov cx,[si+2]
   mov [di],ax
   mov [di+2],cx
   sti
   xor ax,ax
   mov ds,ax
   mov ax,ds:[413h]
   sub ax,4    ;
   mov cl,6
   shl ax,cl
   mov es,ax   ;
   push cs
   pop ds
   mov cx,1000h ;
   lea si,stt
   mov di,0
   rep movsb
   lea bx,xia
   push es
   push bx
   db 0cbh      ;
xia:push cs
   pop ds
   push cs
   pop es
   lea bx,s001
   mov cx,1
   mov dx,0080h
   mov ax,0201h
   int 13h      ;
   mov cx,64
   add bx,1beh
   mov al,0
lopb:cmp [bx],al
   jnz jx
   inc bx
   loop lopb   ;
   jmp jian
jx:mov ax,3
   int 10h
   lea si,setts;
   call xs
   mov ah,0    ;
   int 16h
   pop es
   pop ds
   db 61h
   popf
   int 19h     ;
jian:mov ax,4c49h
   mov cx,414fh
   mov dl,80h
   int 13h  ;
   cmp ax,1234h
   jnz r8139
   jmp quit     ;
r8139:jmp rmbt
iobase dw 0
addre db 20h   ;
dbuf db 64 dup(0)
errts db 0dh,0ah,'There is not RTL8139',0
errhd db 0dh,0ah,'The HDD ERR',0
setts db 0dh,0ah,'[PASSWORD_PROTECTOR]'
      db 0dh,0ah,'setting please!',0
count db 0    ;
old19:db 0eah
old19adr:dd 0
mc1 macro n   ;
    mov al,n
    out dx,al
    call ys
    endm
mc2 macro m   ;
    push ax
    or al,m
    out dx,al
    call ys
    pop ax
    endm
rmbt:push cs
    pop ds
    push cs
    pop es
    mov ax,0b102h
    mov cx,8139h
    mov dx,10ech
    mov si,0
    int 1ah      ;
    cmp ah,0
    jz bg1
    jmp rerrxs
bg1:mov ax,0b109h
    mov di,10h
    int 1ah
    cmp ah,0
    jz bg2
    jmp rerrxs
bg2:and cx,0fffeh   ;
    mov iobase,cx
    mov dx,cx
    add dx,50h      ;
    lea di,dbuf     ;
ag: mc1 80h         ; 
    mov bl,addre    ;
    add bl,count
    mc1 88h     ;
    or bl,80h   ;
    call wdmdz  ;
    mc1 8ch     ;
    mc1 88h     ;
    mov ax,0    ;
    mov cx,10h  ;
lopr:push ax
   mc1 8ch      ;
   mc1 88h      ; 
    in al,dx    ;
    shr al,1    ;
    pop ax
    rcl ax,1    ;
    loop lopr   ;
    stosw
    inc count
    cmp count,20h
    jz rend
    jmp ag
rend:mov al,0   ;
    out dx,al
eok:lea si,dbuf
    lea di,s001
    add di,1beh
    mov cx,40h
    rep movsb
set13:xor ax,ax ;
   mov ds,ax
   mov ax,ds:[4ch]
   mov bx,ds:[4eh]
   lea di,old13adr
   mov cs:[di],ax
   mov cs:[di+2],bx
   lea si,new13
   mov word ptr ds:[4ch],si
   mov word ptr ds:[4eh],cs
   jmp quit
wdmdz proc near;
   mc1 88h
   mc1 8ch
   mc1 8ah
   mc1 8eh
    mov cx,8       ;
lopwd:shl bl,1     ;
    rcl al,1
    rcl al,1
    and al,2
    mc2 88h
    mc2 8ch
    loop lopwd
    ret
wdmdz endp
ys  proc near  ;
   push cx
   mov cx,0020h
lopy:loop lopy
   pop cx
   ret
ys endp
xs proc near   ;
   push si
   push ax
lzxs:mov al,[si]
   cmp al,0
   jz tc
   mov ah,0eh
   int 10h
   inc si
   jmp lzxs
tc:pop ax
   pop si
   ret
xs endp
rerrxs:lea si,errts;
    call xs
   mov ah,0
   int 16h
   jmp eqq
ehdd:lea si,errhd ;
   call xs
   mov ah,0
   int 16h
   jmp eqq
quit:xor ax,ax
   mov ds,ax
   sub byte ptr ds:[0413h],4 ;
eqq:xor ax,ax
   mov ds,ax
   lea bx,old19adr ;
   mov ax,ds:[0080h]
   mov cs:[bx],ax
   mov ax,ds:[0082h]
   mov cs:[bx+2],ax
   push cs
   pop ds
   push cs
   pop es
   lea bx,buf2
   mov cx,2
   mov dx,0080h
   mov ax,0201h
   int 13h        ;
   mov al,[bx]
   mov gs,al
zai:mov ax,3
    int 10h
bj1:call yzmm
    cmp escbz,1   ;
    jz qx
    cmp mmbz,1    ;
    jz yesok
qx:inc js
    cmp js,3
    jb zai
sj: jmp sj        ;
yesok:pop es
   pop ds
   db 61h     ;
   popf
   jmp old19  ;
old13:db 0eah
old13adr:dd 0
new13:jmp bgnew13  ;
s001 db 512 dup(0) ;
bgnew13:pushf
   cmp ax,4c49h
   jnz ok1
   cmp cx,414fh
   jnz ok1
   mov ax,1234h  ;
   popf
   iret
ok1:db 60h       ;
   cmp dx,0080h
   jz cmp1
   jmp q13
cmp1:cmp cx,1
   jz cmp2
   jmp q13
cmp2:cmp ah,2
   jz ok2
q13:db 61h    ;popa
   popf
   jmp old13
ok2:push ds
   mov di,bx
   lea si,s001
   push cs
   pop ds
   mov cx,512
   rep movsb
   pop ds
   db 61h     ;popa
   popf
   clc
   mov ah,0
   db 0cah,02h ;retf 2
escbz  db 0        ;
js db 0            ;
key db 8 dup(0)    ;
mmbz db 0          ;
yzts   db 'password:         '
yzmm  proc near    ;
    db 60h         ;
    mov escbz,0
    mov cx,8       ;
    lea di,key     ;
    mov al,0       ;
    repnz stosb
    mov ax,1301h   ;
    mov bx,000eh   ;
    mov cx,18      ;
    mov dx,101fh   ;
    lea bp,yzts
    int 10h
    mov ah,2
    mov bh,0
    mov dx,1028h   ;
    int 10h
    lea di,key
    mov cx,8
zjr:mov ah,0       ;
    int 16h
    cmp al,0dh     ;
    jz hc
    cmp al,1bh     ;
    jnz yxj
    jmp fq
GS DB 0            ;
yxj:cmp al,'0'     ;
    jb zjr
    cmp al,'9'     ;
    jbe yx
zm: cmp al,'A'
    jb zjr
    cmp al,'Z'
    jbe yx
zm1:cmp al,'a'
    jb zjr
    cmp al,'z'
    ja zjr
yx: mov [di],al   ;
    mov ax,0e2ah  ;
    int 10h
    inc di
    dec cx
    jz hc        ;
    jmp zjr      ;
hc: cmp cl,8     
    jz fq        ;
    mov ch,8
    sub ch,CL    ;
    MOV CL,CH
    mov ch,0
    cmp cl,gs    ;
    jnz fq
    push cx
    lea di,key   ;
    mov al,5ah
lop1:xor [di],al
   inc di
   loop lop1
   LEA SI,BUF2 ;
   pop cx      ;
   inc si      ;
   lea di,key
   repz cmpsb  ;
   jnz fq      ;
ok:mov mmbz,1      ;
   jmp exit
fq:cmp gs,0
   jnz gsn
   jmp ok
gsn:mov mmbz,0      ;
   cmp al,1bh
   jnz exit
   mov escbz,1
exit:db 61h
   ret
yzmm  endp
BUF2 DB 512 DUP(0) ;
code ends
  end



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -