![]() |
|
![]() ![]() ![]() |
|
EASports |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 76 Регистрация: 14.12.2006 Репутация: нет Всего: нет |
Подскажите как можно заблокировать запуск программы (*.exe, *.com) в DOS? Подробнее: мне нужно реализовать резидентную прогу, которая будет блокировать паролем запуск 16-битных программ из командной строки.
|
|||
|
||||
anwe |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 748 Регистрация: 2.9.2006 Репутация: 1 Всего: 23 |
Так, ты уже сам и ответил. А перехватывать надо, кажется 4В функцию.
|
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: нет Всего: 454 |
Проблемная задача. Запуск копии командного процессора тоже будешь паролем проверять? а он запускается...
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
EASports |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 76 Регистрация: 14.12.2006 Репутация: нет Всего: нет |
дак что, никто не знает? просто срочно надо. если кто всё-таки знает, напишите поподробне что нужно делать?
|
|||
|
||||
anwe |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 748 Регистрация: 2.9.2006 Репутация: 1 Всего: 23 |
||||
|
||||
EASports |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 76 Регистрация: 14.12.2006 Репутация: нет Всего: нет |
Да, действительно. Нашёл в Yaндексе по запросу "ассемблер 4B" что-то интересное. Похоже на то, что нужно. Всем большой пасиб.
|
|||
|
||||
anwe |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 748 Регистрация: 2.9.2006 Репутация: 1 Всего: 23 |
Это загрузка другой программы из твоей.
Читай, изучай. ![]() |
|||
|
||||
EASports |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 76 Регистрация: 14.12.2006 Репутация: нет Всего: нет |
Дак как же тогда прехватить запуск другой проги? Мне не запустить надо, а наоборот поймать запуск... Как дос обрабатывает запуск, этой функцией или нет? Если нет, то чем и как?
|
|||
|
||||
anwe |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 748 Регистрация: 2.9.2006 Репутация: 1 Всего: 23 |
Ну, как-как? Уже ж написали: перехватывать эту 4В. Ее описание прочитал?
ds:dx - адес строки с запускаемой программой. Вот анализируй ее. Что еще? |
|||
|
||||
EASports |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 76 Регистрация: 14.12.2006 Репутация: нет Всего: нет |
ну как-то неопределённо написали. Я впринципе почитал уже про эту функцию, тока не очень понятно... ну да ладно. Да кстати, Дос-то её вызывает сам по себе когда что-нибудь запускает? Или это именно из какой-то проги запускать другую? Просто мне-то нуна резидента... Тут же возникает проблема с перехватом 21 прерывания: все основные функции доса идут через неё, дак как обрабатывать-то их? Так? ->
Или по-другому? ![]() |
|||
|
||||
dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 4 Всего: 158 |
так ты запустишь программу, а только потом сможешь об этом узнать.
Это сообщение отредактировал(а) dumb - 9.5.2007, 02:47 |
|||
|
||||
EASports |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 76 Регистрация: 14.12.2006 Репутация: нет Всего: нет |
По ходу пооявился ещё вопрос, как в с моём обработчике прерывания (переопределённый int 21h) вызвать стандартный и вернуться в мой? ну типа чтобы отловить функцию, вывести текстовый запрос на ввод пароля, затем прочитать введённые символы и наконец определить разрешение запуска ну и соответственно запустить программу?
|
|||
|
||||
anwe |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 748 Регистрация: 2.9.2006 Репутация: 1 Всего: 23 |
Просто делаешь дальний вызов командой call Но зачем это в твое варианте? Тебе надо выполнять свои действия перед стандартным. В этом случае, как уже писали выше, просто прыгай на стандартный после своего:
|
||||
|
|||||
EASports |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 76 Регистрация: 14.12.2006 Репутация: нет Всего: нет |
нет ну как, я определяю, что пользователь хочет запустить программу, далее запрашиваю у него пароль, принимаю пароль, сверяю и если всё совпало только в этом случае выполняю запуск программы. Здесь как минимум надо вызвать 2 раза вызывать стандартное 21 прерывание: вывод строки (9h int 21h) и чтение строки либо посимвольно(2h или 1h не помню и int 21h). Или я чего-то не догоняю? Да и потом ещё собственно запуск тоже обрабатывать стандартным 21 прерыванием. Т.е. 3 раза надо вызвать.
Это сообщение отредактировал(а) EASports - 11.5.2007, 20:39 |
|||
|
||||
anwe |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 748 Регистрация: 2.9.2006 Репутация: 1 Всего: 23 |
Правильно мыслишь.
Ты поставь в начале обработчика 21 переход на твой обработчик. Если (тебе уже писали) в ах тебе пришло 4В00, то сравнивай ее параметры, в частности, имя запускаемого файла с тем, к которому нужно запретить доступ. Если это не тот файл переходи (прыгай) на стандартный обработчик. Если твой, то возвращайся в программы (систему) передавая код запрета доступа к этому файлу. Всё. Во всех остальных случаях вызова 21 ты не обрабатываешь. То есть, пожалуйста, выводи строки, считывай ввод, сравнивай (хотя это не затрагивает 21), словом, все что хочешь, то и делай. В чем проблема, что он будет вызываться 3 раза? Да хоть 33. Единственное, создай какой-нибудь собственный флаг и проверяй его наряду с проверкой 4В00. Если пользователь ввел правильный пароль, поднимай флаг и вызывай снова 4В00. Вот схематичный код:
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Asm: Общие вопросы" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Asm: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |