Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Блокировка запуска программ 
:(
    Опции темы
EASports
  Дата 5.5.2007, 02:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 14.12.2006

Репутация: нет
Всего: нет



Подскажите как можно заблокировать запуск программы (*.exe, *.com) в DOS? Подробнее: мне нужно реализовать резидентную прогу, которая будет блокировать паролем запуск 16-битных программ из командной строки.
PM MAIL   Вверх
anwe
Дата 5.5.2007, 11:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 748
Регистрация: 2.9.2006

Репутация: 1
Всего: 23



Так, ты уже сам и ответил. А перехватывать надо, кажется 4В функцию.
PM MAIL   Вверх
Akina
Дата 5.5.2007, 23:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: нет
Всего: 454



Проблемная задача. Запуск копии командного процессора тоже будешь паролем проверять? а он запускается...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
EASports
Дата 7.5.2007, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 14.12.2006

Репутация: нет
Всего: нет



дак что, никто не знает? просто срочно надо. если кто всё-таки знает, напишите поподробне что нужно делать?
PM MAIL   Вверх
anwe
Дата 7.5.2007, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 748
Регистрация: 2.9.2006

Репутация: 1
Всего: 23



Посмотри
Цитата(anwe @  5.5.2007,  11:32 Найти цитируемый пост)
4В функцию


PM MAIL   Вверх
EASports
Дата 7.5.2007, 23:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 14.12.2006

Репутация: нет
Всего: нет



Да, действительно. Нашёл в Yaндексе по запросу "ассемблер 4B" что-то интересное. Похоже на то, что нужно. Всем большой пасиб.
PM MAIL   Вверх
anwe
Дата 7.5.2007, 23:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 748
Регистрация: 2.9.2006

Репутация: 1
Всего: 23



Это загрузка другой программы из твоей.
Читай, изучай. smile 
PM MAIL   Вверх
EASports
Дата 8.5.2007, 16:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 14.12.2006

Репутация: нет
Всего: нет



Дак как же тогда прехватить запуск другой проги? Мне не запустить надо, а наоборот поймать запуск... Как дос обрабатывает запуск,  этой функцией или нет? Если нет, то чем и как?
PM MAIL   Вверх
anwe
Дата 8.5.2007, 22:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 748
Регистрация: 2.9.2006

Репутация: 1
Всего: 23



Ну, как-как? Уже ж написали: перехватывать эту 4В. Ее описание прочитал?
ds:dx - адес строки с запускаемой программой. Вот анализируй ее. Что еще?
PM MAIL   Вверх
EASports
Дата 9.5.2007, 02:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 14.12.2006

Репутация: нет
Всего: нет



ну как-то неопределённо написали. Я впринципе почитал уже про эту функцию, тока не очень понятно... ну да ладно. Да кстати, Дос-то её вызывает сам по себе когда что-нибудь запускает? Или это именно из какой-то проги запускать другую? Просто мне-то нуна резидента... Тут же возникает проблема с перехватом 21 прерывания: все основные функции доса идут через неё, дак как обрабатывать-то их? Так? ->
Код

proc my21h
push ax bx cx ; ...
pushf
call old21h
;далее мой обработчик
;...
pop cx, bx, ax
iret
endp

Или по-другому?  smile 
PM MAIL   Вверх
dumb
Дата 9.5.2007, 02:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 4
Всего: 158



так ты запустишь программу, а только потом сможешь об этом узнать.

Код

cmp ax, 4b00h ; остальные afair нафик не надо проверять в обчном случае
jne jmp_old
; проверяем путь запускаемого
cmp deny, 0
jz jmp_old
; выставляем ошибку на выход
iret
jmp_old:
db 0eah
old21h dd 0



Это сообщение отредактировал(а) dumb - 9.5.2007, 02:47
PM MAIL   Вверх
EASports
Дата 10.5.2007, 20:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 14.12.2006

Репутация: нет
Всего: нет



По ходу пооявился ещё вопрос, как в с моём обработчике прерывания (переопределённый int 21h) вызвать стандартный и вернуться в мой? ну типа чтобы отловить функцию, вывести текстовый запрос на ввод пароля, затем прочитать введённые символы и наконец определить разрешение запуска ну и соответственно запустить программу?
PM MAIL   Вверх
anwe
Дата 10.5.2007, 21:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 748
Регистрация: 2.9.2006

Репутация: 1
Всего: 23



Цитата(EASports @  10.5.2007,  20:44 Найти цитируемый пост)
вызвать стандартный и вернуться в мой?

Код

pushf
call   original_int_21h

Просто делаешь дальний вызов командой call
Но зачем это в твое варианте? Тебе надо выполнять свои действия перед стандартным. В этом случае, как уже писали выше, просто прыгай на стандартный после своего:
Код

jmp   original_int_21h

PM MAIL   Вверх
EASports
Дата 11.5.2007, 20:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 14.12.2006

Репутация: нет
Всего: нет



нет ну как, я определяю, что пользователь хочет запустить программу, далее запрашиваю у него пароль, принимаю пароль, сверяю и если всё совпало только в этом случае выполняю запуск программы.  Здесь как минимум надо вызвать 2 раза вызывать стандартное 21 прерывание: вывод строки (9h int 21h) и чтение строки либо посимвольно(2h или 1h не помню и int 21h). Или я чего-то не догоняю? Да и потом ещё собственно запуск тоже обрабатывать стандартным 21 прерыванием. Т.е. 3 раза надо вызвать.

Это сообщение отредактировал(а) EASports - 11.5.2007, 20:39
PM MAIL   Вверх
anwe
Дата 11.5.2007, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 748
Регистрация: 2.9.2006

Репутация: 1
Всего: 23



Правильно мыслишь.
Ты поставь в начале обработчика 21 переход на твой обработчик. Если (тебе уже писали) в ах тебе пришло 4В00, то сравнивай ее параметры, в частности, имя запускаемого файла с тем, к которому нужно запретить доступ. Если это не тот файл переходи (прыгай) на стандартный обработчик. Если твой, то возвращайся в программы (систему) передавая код запрета доступа к этому файлу.
Всё. Во всех остальных случаях вызова 21 ты не обрабатываешь. То есть, пожалуйста, выводи строки, считывай ввод, сравнивай (хотя это не затрагивает 21), словом, все что хочешь, то и делай. В чем проблема, что он будет вызываться 3 раза? Да хоть 33.
Единственное, создай какой-нибудь собственный флаг и проверяй его наряду с проверкой 4В00. Если пользователь ввел правильный пароль, поднимай флаг и вызывай снова 4В00.
Вот схематичный код:
Код

new_handler:
pushf
cmp   ax,4B00h
je  check_file
jmp  orig_handler
check_file:
cmp...   ;asked file & yuor file
je check_flag
jmp  orig_handler
check_flag:
cmp  flag,0
je  access_denied
jmp  orig_handler
access_denid:
popf
stc
mov   ax,5
iret

PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm: Общие вопросы"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0924 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.