Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.06.2013, 23:33   #1
spot163
Новичок
Джуниор
 
Регистрация: 25.06.2013
Сообщений: 2
Печаль Интерфейс для блокировщика директорий (резидентный)

Есть программа которая блокирует директорию из которой она запускается, и разблокирует при следующем её запуске. Задание такое, добавить возможность выбора блокируемой директории и проверку пороля, то есть при блокировке вводим пароль и директория должна разблокироваться при соответствии пароля!!
вот прога оригинал
[spoiler=dirlock.asm]
Код:
.186
.model tiny
.code
org 100h
start:
mov ah,0E8h
int 2Fh
cmp al,0FFh
jz uninst
cmp byte ptr cs:[80h],0
jz usage
xor cx,cx
mov cl,cs:[80h]
mov  di,81h
tobig:
cmp byte ptr[di],61h
jbe big
and byte ptr[di],0DFh
big:
inc di
loop tobig
mov ax,352Fh
int 21h
mov word ptr cs:old_2Fh,bx
mov word ptr cs:old_2Fh+2,es
mov ax,3521h
int 21h
mov word ptr cs:old_21h,bx
mov word ptr cs:old_21h+2,es
mov ax,252Fh
mov dx,offset cs:new_2Fh
push cs
pop ds
int 21h
mov ax,2521h
mov dx,offset cs:new_21h
push cs
pop ds
int 21h
mov ah,09h
mov dx,offset insmsg
int 21h
mov dx,1000h
int 27h
uninst:
mov ah,09h
mov dx,offset remmsg
int 21h
jmp exit
usage:
mov ah,09h
mov dx,offset usemsg
int 21h
exit:
ret 
new_2Fh: 
cmp ah,0E8h
jne o2Fh
push ds
push es
pusha
mov ax,2521h
lds dx,cs:old_21h
int 21h
mov ax,252Fh
lds dx,cs:old_2Fh
int 21h
mov es,word ptr cs:2Ch
mov ah,49h
int 21h
push cs
pop es
mov ah,49h
int 21h
popa
pop es
pop ds
mov al,0FFh
iret
o2Fh:
jmp cs:old_2Fh
new_21h:
cmp ah,39h
jz n21h
cmp ah,3Ah
jz n21h
cmp ah,3Bh
jz n21h
cmp ah,3Ch
jz n21h
cmp ah,3Dh
jz n21h
cmp ah,41h
jz n21h
cmp ah,43h
jz n21h
cmp ah,4Bh
jz n21h
cmp ah,4Eh
jz n21h
o21h:
jmp cs:old_21h
n21h:
cld
pusha
push es
push ds
push cs
pop es
mov di,offset curpath
mov si,dx
cmp byte ptr ds:[si+1],':'
jz fullpath
mov ah,19h
int 21h
mov dl,al
inc dl
add al,'A'
mov ah,':'
stosw
mov ah,47h
push ds
push cs
pop ds
xchg si,di
int 21h
pop ds
xchg si,di
mov di,offset curpath
xor ax,ax
mov cx,67
repne scasb
dec di
cmp byte ptr ds:[di],'\'
jz fullpath
mov al,'\'
stosb
fullpath:
lodsb
stosb
or al,al
jz eep
jmp fullpath
eep:
push cs
pop ds
mov si,offset curpath
mov di,82h
xor cx,cx
mov cl,cs:[80h]
dec cx
repe cmpsb
pop ds
pop es
popa
jne o21h
mov ax,3
push bp
mov bp,sp
or word ptr ss:[bp+6],1
pop bp
iret
old_2Fh dd 0
old_21h dd 0
usemsg db 'Usage: dirlock.com <directory_full_path>','$'
insmsg db 'Installed','$'
remmsg db 'Removed','$'
curpath db 67 dup(0)
end start
[/spoiler]
spot163 вне форума Ответить с цитированием
Старый 25.06.2013, 23:33   #2
spot163
Новичок
Джуниор
 
Регистрация: 25.06.2013
Сообщений: 2
По умолчанию

а вот что я пытался сделать для выбора директории


Код:
.model tiny
.code
.386
org 100h
start:
mov ah,0E8h
int 2Fh
cmp al,0FFh
jz vvod_direct

vvod_direct:    ;начало моего "интерфейса"
mov ah,09h
lea dx,direct
int 21h          
mov ah,3fh
mov bx,0
lea dx,direct_buf
int 21h
pass:
mov ah,09h
lea dx,password
int 21h
mov ah,3fh
mov bx,0
lea dx,password_buf
int 21h
push ax
cmp byte ptr ds:[password_buf2],0
jz copy
proverka:
mov si, offset password_buf
mov di,offset password_buf2
mov cx,16
m1:
mov al,[di]
cmp byte ptr [si], al
jnz exit
inc di
inc si
loop m1
jmp uninst
copy:
pop cx
mov si, offset password_buf
mov di,offset password_buf2
m2: 
mov al,[di]
mov [si],al
inc di
inc si
loop m2
mov ax,4200
xor cx,cx
mov dx,81h
int 21h
mov ah,40h
lea dx,direct_buf
mov cx, direct_bufl
int 21h                             ;конец моей лабуды

;cmp byte ptr cs:[80h],0
;jz usage
xor cx,cx
mov cl,cs:[80h]
mov  di,81h
tobig:
cmp byte ptr[di],61h
jbe big
and byte ptr[di],0DFh
big:
inc di
loop tobig
mov ax,352Fh
int 21h
mov word ptr cs:old_2Fh,bx
mov word ptr cs:old_2Fh+2,es
mov ax,3521h
int 21h
mov word ptr cs:old_21h,bx
mov word ptr cs:old_21h+2,es
mov ax,252Fh
mov dx,offset cs:new_2Fh
push cs
pop ds
int 21h
mov ax,2521h
mov dx,offset cs:new_21h
push cs
pop ds
int 21h
mov ah,09h
mov dx,offset insmsg
int 21h
mov dx,1000h
int 27h
uninst:
mov ah,09h
mov dx,offset remmsg
int 21h
jmp exit
usage:
mov ah,09h
mov dx,offset usemsg
int 21h
exit:
ret 
new_2Fh: 
cmp ah,0E8h
jne o2Fh
push ds
push es
pusha
mov ax,2521h
lds dx,cs:old_21h
int 21h
mov ax,252Fh
lds dx,cs:old_2Fh
int 21h
mov es,word ptr cs:2Ch
mov ah,49h
int 21h
push cs
pop es
mov ah,49h
int 21h
popa
pop es
pop ds
mov al,0FFh
iret
o2Fh:
jmp cs:old_2Fh
new_21h:
cmp ah,39h
jz n21h
cmp ah,3Ah
jz n21h
cmp ah,3Bh
jz n21h
cmp ah,3Ch
jz n21h
cmp ah,3Dh
jz n21h
cmp ah,41h
jz n21h
cmp ah,43h
jz n21h
cmp ah,4Bh
jz n21h
cmp ah,4Eh
jz n21h
o21h:
jmp cs:old_21h
n21h:
cld
pusha
push es
push ds
push cs
pop es
mov di,offset curpath
mov si,dx
cmp byte ptr ds:[si+1],':'
jz fullpath
mov ah,19h
int 21h
mov dl,al
inc dl
add al,'A'
mov ah,':'
stosw
mov ah,47h
push ds
push cs
pop ds
xchg si,di
int 21h
pop ds
xchg si,di
mov di,offset curpath
xor ax,ax
mov cx,67
repne scasb
dec di
cmp byte ptr ds:[di],'\'
jz fullpath
mov al,'\'
stosb
fullpath:
lodsb
stosb
or al,al
jz eep
jmp fullpath
eep:
push cs
pop ds
mov si,offset curpath
mov di,82h
xor cx,cx
mov cl,cs:[80h]
dec cx
repe cmpsb
pop ds
pop es
popa
jne o21h
mov ax,3
push bp
mov bp,sp
or word ptr ss:[bp+6],1
pop bp
iret
old_2Fh dd 0
old_21h dd 0
usemsg db 0Dh,0Ah, 'Usage: dirlock.com <directory_full_path>','$'
insmsg db 0Dh,0Ah, 'Installed','$'
remmsg db 0Dh,0Ah, 'Removed','$'
direct db 0Dh,0Ah, 'Select directory: ','$'
password db 0Dh,0Ah, 'Password: ', '$'
direct_buf equ $
direct_bufl = $-direct_buf
password_buf db 16 dup (0)
password_buf2 db 16 dup (0)
curpath db 67 dup (0)
end start
spot163 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Резидентный обработчик jfunt Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 24.06.2012 11:55
разработать интерфейс для дисков - интерфейс програмный Notformal Помощь студентам 0 01.11.2011 22:52
Интерфейс для интерфейса? Lokran Общие вопросы C/C++ 11 27.02.2011 09:59
Интерфейс для программы на с++ siemdi C++ Builder 21 23.05.2010 01:17
резидентный обработчик прерывания hadji Помощь студентам 2 10.05.2010 21:00