Защита данных от несанкционированного доступа
Рефераты >> Программирование и компьютеры >> Защита данных от несанкционированного доступа

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]


Страница: