Защита данных от несанкционированного доступаРефераты >> Программирование и компьютеры >> Защита данных от несанкционированного доступа
jb loo_1
mov [bp+2], ax
d_ret:
pop di
pop cx
pop ax
ret
det_type endp
wr2exe proc
push ax
push bx
push cx
push dx
push si
push di
jmp st_2exe
hdr label byte
dw ?
PartPag dw ?
PageCnt dw ?
dw ?
HdrSize dw ?
dw 5 dup(?)
ExeIP dw ?
ReloCS dw ?
len_hdr equ $-hdr ;Команды, записываемые
imit label byte ;в конец файла
mov ax, es ;Команды записи в стек
I_1: ;адреса начала EXE-файла
add ax, 0
add ax, 10h
push ax
I_2:
mov ax, 0
push ax ;Команды пердачи управления
mov ax, 100h ;source_file, как и для COM
push ax ;файла
db 0C3h
len_imit equ $-imit
st_2exe:
mov ah, 42h ;Читать заголовок EXE-файла
mov bx, hand_1 ;Установить указатель на
xor cx, cx ;начало файла
xor dx, dx
mov al, 0
int 21h
jc cn_mov_1
mov ah, 3Fh
lea dx, hdr
mov cx, len_hdr
int 21h
jnc prep_end
cn_r_1:
int 20h
prep_end: ;Настроить команды, дописываемые
mov ax, ReloCS ;в конец файла target_file
mov word ptr i_1[1], ax ;Записать в стек адреса
mov ax, ExeIP ;начала EXE-файла
mov word ptr i_2[1], ax ;Передать управление файлу
mov cx, len_t_1 ;source_file по соглашениям
mov dx, len_t_2 ;системы DOS
mov si, cx ;Записать команды в конец
mov di, dx ;EXE-файла
mov ah, 42h
mov al, 0
mov bx, hand_1
int 21h
jnc yes_wr
cn_mov_1:
int 20h
yes_wr:
mov ah, 40h
lea dx, imit
mov cx, len_imit
int 21h
jnc wr_sour
cn_w_1:
int 20h
wr_sour: ;Записать source_file в конец
mov cx, si ;EXE-файла
mov dx, di
add dx, len_imit
jnc m1
inc cx
m1:
add dx, 15
jnc m2
inc cx
m2:
and dx, 0FFF0h
mov si, cx
mov di, dx
mov ah, 42h
mov al, 0
int 21h
jc cn_mov_1
mov ah, 40h
lea dx, buff
mov cx, len_s
int 21h
jc cn_w_1
mov ax, si
mov bx, di
add bx, ax
mov cl, 4
ror bx, cl
sub bx, 10h
sub bx, HdrSize
mov ReloCS, bx
mov ax, PartPag
and ax, 000Fh
mov bx, ax
add ax, len_imit
add ax, 15
and ax, 0FFF0h
add bx, 100h
sub bx, ax
mov ExeIP, bx
mov ax, si
mov bx, di
add bx, len_s
jnc m3
inc ax
m3:
mov dx, bx
and dx, 1FFh
mov PartPag, dx
add bx, 511
jnc m4
inc ax
m4:
and bh, 0FEh
mov ah, bh
mov cl, 9
ror ax, cl
mov PageCnt, ax ;Записать настроенный
mov ah, 42h ;заголовок в начало EXE-файла
mov bx, hand_1
xor cx, cx
xor dx, dx
mov al, 0
int 21h
jnc write_1
jmp cn_mov_1
write_1:
mov ah, 40h
lea dx, hdr
mov cx, len_hdr
int 21h
jnc m_ret
jmp cn_w_1
m_ret:
pop di
pop si
pop dx
pop cx
pop bx
pop ax
ret
wr2exe endp
wr2com proc ;Процедура дописывания в
;конец COM-файла
jmp st_2com
new_beg label byte
mov ax, cs
c_1:
add ax, 0
push ax
c_2:
mov ax, 0
push ax
db 0CBh
len_new_beg equ $-new_beg
com label byte
mov di, 100h
push cs
pop ds
c_3:
mov ax, 0
c_4:
add ax, 0
and AX, 000Fh
mov bx, 16
sub bx, ax
and bx, 000Fh
add bx, len_new_beg
mov ax, 100h
sub ax, bx
mov si, ax
mov cx, len_new_beg
rep movsb
push es
pop ds
push es
mov ax, 100h
push ax
push ax
db 0C3h
len_com equ $-com
old_beg label byte
db len_new_beg dup(?)
len_im equ $-com
st_2com:
mov bx, hand_1
mov ah, 42h
xor cx, cx
xor dx, dx
mov al, 0
int 21h
jnc read_beg
jmp cn_mov_2
read_beg:
mov ah, 3Fh
lea dx, old_beg
mov cx, len_new_beg
int 21h
jnc prep_beg
jmp cn_r_1
prep_beg:
mov ax, len_t_1
mov bx, len_t_2
add bx, len_im
jnc pr1
inc ax
pr1:
add bx, 15
and bx, 0FFF0h
add bx, ax
mov cl, 4
ror bx, cl
mov word ptr c_1[1], bx
mov ax, len_t_2
and ax, 000Fh
mov bx, ax
add ax, len_im
add ax, 15
and ax, 0FFF0h
add bx, 100h
sub bx, ax
mov word ptr c_2[1], bx
mov bx, hand_1
mov ah, 42h
xor cx, cx
xor dx, dx
mov al, 0
int 21h jnc wr_beg
jmp cn_mov_2
wr_beg:
mov ah, 40h
lea dx, new_beg
mov cx, len_new_beg
int 21h
jnc prep_c_end
jmp cn_w_1
prep_c_end:
mov ax, len_t_2
mov word ptr c_3[1], ax
mov word ptr c_4[1], len_im
mov bx, hand_1
mov ah, 42h
mov cx, len_t_1
mov dx, len_t_2
mov al, 0
int 21h
jnc wr_end
jmp cn_mov_2
wr_end:
mov ah, 40h
lea dx, com
mov cx, len_im
int 21h
jnc cal_b
jmp cn_w_1
cal_b:
mov cx, len_t_1
mov dx, len_t_2
add dx, len_im
jnc cal_1
inc cx
cal_1:
add dx, 15
jnc cal_2
inc cx
cal_2:
and dx, 0FFF0h
mov bx, hand_1
mov ah, 42h
mov al, 0
int 21h
jnc wr_sr
jmp cn_mov_2
wr_sr:
mov ah, 40h
lea dx, buff
mov cx, len_s
int 21h
jnc end_2com
jmp cn_w_1
end_2com:
ret
wr2com endp
buff label byte
copyright db 'Copyright(C) Юзефович Артем ( МГВРК,'
db ' Минск ), 1996'
db 0Dh, 0Ah, 'Программа дописывания'
db ' по вирусному принципу.', 0Dh, 0Ah
db 0Dh, 0Ah, 0Dh, 0Ah, '$'
code ends
end start
{****************************************************************************}
{****************************************************************************}
{** **}
{** КП "ЗАЩИТА ДАННЫХ ОТ НСД" **}
{** Выполнил учащийся гр.46491 ЮЗЕФОВИЧ АРТЕМ **}
{** 1996 **}
{** **}
{** Пароль на файл **}
{****************************************************************************}
{****************************************************************************}
сode segment
assume cs: code, ds:code, es: code, ss: code
org 100h
start: jmp print
enter_pas label byte
db 'E'+60h, 80h,'n'+60h, 80h,'t'+60h, 80h,'e'+60h, 80h
db 'r'+60h, 80h
db 80h, 80h, 80h
db 'P'+60h, 80h,'a'+60h, 80h,'s'+60h, 80h,'s'+60h, 80h
db 'w'+60h, 80h,'o'+60h, 80h,'r'+60h, 80h,'d'+60h, 80h, ':'+60h
db 6Ah, 6Dh
len_enter equ $-enter_pas
password label byte
db 'm'+60h, '&'+60h, 'a'+60h ;Пароль m&a
len_pas equ $-password ;Счетчик повторов
count_err equ 3
buff label byte
db len_pas dup(?)
print:
push es
push ds
push cs
push cs ;Адресация регистров
pop es
mov cx, count_err ;Инициализация счетчика
pr_1: ;Печать приглашения
mov ah, 2
mov bx, 0
pr_ent:
mov dl, enter_pas[bx]