Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm для Windows/Dos > Защита доступа к папкам в DOS


Автор: Nik777 14.12.2005, 23:43
Как можно запретить доступ к папке, в которой лежит выполняемая программа(т.е. запретить нужно из этой самой программы)

Автор: Akina 15.12.2005, 10:12
перехватить функции findfirst/findnext и не возвращать свой каталог.
а проще - в имя каталога влепить служебный символ - скажем chr(0) - тогда не-FCB функции обломятся.
а надежнее - перехватить чтение сектора с каталогом и делать элемент каталога удаленным.

впрочем, обойти можно любую защиту.

Автор: Nik777 15.12.2005, 13:35
А можно поподробнее, а еще лучше в коде? smile

Автор: Akina 15.12.2005, 14:10
Что именно ты не понял?

Автор: Nik777 16.12.2005, 01:25
Как перехватить функции findfirst\-//-next или как вписать служебный символ

Автор: Akina 16.12.2005, 09:16
Цитата(Nik777 @ 16.12.2005, 02:25)
Как перехватить функции findfirst/next

Код
mov ax,3521h
int 21h
mov old_int_21h_handler,bx
mov old_int_21h_handler[2],es
mov ax,seg new_int_21h_handler
mov ds,ax
mov dx,offset new_int_21h_handler
mov ax,2521h
int 21h

...

new_int_21h_handler:
cmp ah,11h
je replaced_fcb_findfirst
cmp ah,12h
je replaced_fcb_findnext
...
jmp far ptr old_int_21h_handler

...

Добавлено @ 09:23
Цитата(Nik777 @ 16.12.2005, 02:25)
как вписать служебный символ

smile а мож просто программно вывести сообщение "Доступ к папке, в которой лежит выполняемая программа, запрещен!", а? и все твои условия выполнены...

Автор: mb78 12.7.2008, 00:28
Впринципе можно :Перехватить прерывание int 21 на адрес ,по которому будет программа,проверяющая,что вы хотите делать.
Программа по тому,чему равно AH определяет, для чего вызвали int 21 , и если понимает что обращаются к папке,которую эта
программа оберегает,то делает IRET , а если все нормально переходит по действительному адресу int 21, который надо  запомнить,
перед тем ,как перехватывать прерывание. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)