Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 2 104

/ вопрос открыт /

Доброго вечера, уважаемые эксперты!

Возник вопрос - возможно ли как то заблокировать флешку, т.е. написать программу, которая к примеру будет запускаться на флэш накопителе при вставке устройства в порт и не давать обращаться другим процессам без разрешения?

WHILL Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: WHILL (статус: Посетитель)
Вопрос отправлен: 20 ноября 2008, 19:54
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: Вадим К

Здравствуйте, WHILL!
Сделать программу, которая будет запускаться с флешки при вставке оной - просто. Надо просто сделать файл с именем Autorun.inf и прописать путь к программе. Как составить такой файл, можно почитать например здесь.
Но есть одно но. Нет стопроцентной гарантии, что программа запуститься. Автозапуск может быть отключен, либо программа может не понрвиться фаерволу/антивирусу. Способа гарантированно запустить программу в автоматическом режиме нет. Но для самой "популярной оси" Висты это почти всегда работает.
К тому же, при запуске надо определить, какая версия операционной системы стоит, иначе можно получить кучу проблем вплоть до синего экрана.
Теперь, когда мы можем запустить программу на заданном компьютере, пора окапываться и делать защиту. Для этого надо делать перехват функций. Только для этого надо определиться, что именно хочеться защищать.
Если например хочеться не дать просматривать содержимое каталогов, надо перехватить функции FindFirst/FindNext/FindClose. При правильном подходе можно даже "скрывать нужный файл", но это уже попахивает вирусоподобными технологиями.
Если хочеться запретить запуск - надо перехватывать CreateProcess и так дальше.

Делать подобные вещи на делфи не принято, хотя вполне реально. Есть серия статей на эту тему. Но надо помнить, что это очень хлопотное дело и код стоит отлаживать под виртуальной машиной - одно неверное движение и прийдётся перегружать компьютер (в лучшем случае).
Сами статьи можно почитать тут
http://www.wasm.ru/article.php?article=apihook_1
http://www.wasm.ru/article.php?article=apihook_2
http://www.wasm.ru/article.php?article=apihook_3

И ещё одно. Надо помнить, что если программа будет запущенна с флешки и организовала перехват функций, то в момент выдёргивания может произоти всё что угодно, обычно синий экран. Поэтому стоит копировать программу где нибуть в временный каталог.

Ответ отправил: Вадим К (статус: Академик)
Время отправки: 20 ноября 2008, 23:39
Оценка за ответ: 5


Мини-форум вопроса

Всего сообщений: 4; последнее сообщение — 21 ноября 2008, 12:22; участников в обсуждении: 3.
WHILL

WHILL (статус: Посетитель), 21 ноября 2008, 06:58 [#1]:

Спасибо, Вадим, за хороший ответ. Но тут есть еще проблема: если я буду работать с временным каталогом, то есть вирусы которые заражают .exe файлы и делают навозможным их запуск. Я же как раз и хочу сделать флешку не доступной для вирусной активности...
min@y™

min@y™ (статус: Доктор наук), 21 ноября 2008, 08:25 [#2]:

На каждую хитрую гайку найдётся болт с левой резьбой.
Твою мегапрограмму пожно будет грохнуть таскменеджером или написать bat-файлик, который не только грохнет программу командой taskkill, но и удалит её с твоей флешки. Так что и это надо будет предусмотреть.

Вопрос: а стоит ли овчинка выделки? Есть же уже готовые программы, шифрующие область флешки (или всю) и предоставляющие доступ туда по паролю.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Вадим К

Вадим К (статус: Академик), 21 ноября 2008, 09:37 [#3]:

to WHILL. Так и надо писать. Вообще то сложно определить, это пользователь хочет файл открыть или какая то левая программа. Мало того, многие вирусы "удачно шифруются" под законные программы.
Если компьютер, куда вы решили вставить флешку заражён, то остановить заразу порой очень сложно - она напориста часто бывает.
Но есть простое правило, как минимизировать заражение. При вставке флешки надо удерживать нажатым Shift в течении секунд 20. Это не даст запуститься автозагрузке. Вторым ходом есть открытие не по двойному клику влешки в проводнике, а кликнуть по ней правой и выбрать проводник.
На своем же компьютере лучше отключить автозагрузку для флешек вообще. Ничего хорошего автозагрузка для флешек ещё не дала, а вот проблем...
И открыв флешку у себя, первым долгом посмотреть на наличие файла Autorun.inf. Просмотрев содержимое, удалять его и то, на что он ссылается.

Вирусов, которые модифицируют исполнимый файл я давно уже не видел. Для современных вирусописателей это "высочайший полет мысли". Обычно банально подменяют.

Для себя я проблему с флешками решил просто - я потихоньку перехожу под Линукс, а там просто на эти вирусы все наплевать. Они не скрыться не могут, не зашифроваться:). Правда там есть угрозы другого плана, но там гораздо проще сделать им (вирусам) невыносимую жизнь :)
З.Ы. О наличии антивируса на машине я даже не говорю. А подразумеваю его наличие и обновление.
Галочка "подтверждения прочтения" - вселенское зло.
WHILL

WHILL (статус: Посетитель), 21 ноября 2008, 12:22 [#4]:

Ну большинство для меня этих вещей не ново - я системный администратор. А вот программист начинающий... т.е. в принципе эта затея осуществима, правда придеться разбираться много времени... но все равно попытаюсь =) спасибо Вам за ответы...

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:29
Выполнено за 0.02 сек.