Перейти к содержанию

Автозапуск Usb Flash без U3


Рекомендуемые сообщения

Для сбора сведений о компьютере объекта иногда достаточно лишь вставить в USB-порт флешку и запустить приложение. Но что если объект не пустит Вас к компьютеру, не позволит ничего запустить? Поможет автозапуск. Но автозапуск не работает для флеш-дисков, в этом нас уверяют разработчики технологии U3.

 

Немного поясню, U3 - это технология производства флешек, когда сама флешка в системе представляется двумя устройствами: собственно, флеш-диском и CD-диском. Вот с CD-дисков автозапуск прекрасно работает. При монтировании U3-флешки срабатывает автозапуск с флеш-CD - запускается специальное приложение, представляющее собой меню для запуска других программ, расположенных на флешке.

 

Все бы хорошо, но во-первых, U3-флешки дороже обычных, они мало распространены. Кроме того, раздел CD (файловая система iso9660) не позволяет запись, так что без преодоления определенных сложностей, заменить стандартную автозапускающуюся программу не получится.

 

Так что же делать? А давайте вспомним вирусы, которые все ж таки умудряются распространяться через самые обычные флешки без всякого U3. Уж вирусы-то как-то запускаются, значит может запускаться и любое другое приложение! Для того, чтобы выяснить технологию пришлось немного повозиться. Первое, что пришло в голову - создать на флешке 2 раздела, один FAT, а другой iso9660. В Линуксе оба раздела прекрасно монтируются и ведут себя как ожидалось. Зато Виндовс не видит раздел iso9660.

 

Тогда я начал копать в сторону autorun.inf - именно этот файл в корне диска отвечает за автозапуск на CD. На форумах большинство участников сходятся на мнении, что для USB Flash данный метод не работает. Действительно, файлы, взятые с CD не приводили к автозапуску флешки. Но решение, все же, нашлось. Итак, autorun.inf:

 

[AutoRun]
;Метка - название диска, будет отображаться в проводнике там, где обычно отображается буква диска
label=ZFlash

;Иконка диска
;icon=

;Это, вроде как, не обязательно. Но надо еще посмотреть, на что-то эта строка должна влиять
;action=@autorun.cmd

;Говорим системе, что нужно использовать автозапуск
UseAutoPlay=1

;Говорим системе, какое именно приложение запустить. Путь относительно корня флешки. Перестраховываемся двумя командами
open=autorun.cmd
shellexecute=autorun.cmd

;Добавляем в контекстное меню флеш-диска пункт Автозапуск. Он будет стоять первым и будет выделен жирным
shell\auto=&Автозапуск
shell\auto\command=autorun.cmd

;Заменяем в контекстном меню флешки пункт Открыть на собственный, запускающий нужное нам приложение
shell\open=&Открыть
shell\open\Command=autorun.cmd

;Заменяем в контекстном меню флешки пункт Проводник на собственный, запускающий нужное нам приложение
shell\explore=&Проводник
shell\explore\Command=autorun.cmd

;Заменяем в контекстном меню флешки пункт Найти на собственный, запускающий нужное нам приложение
shell\find=&Найти
shell\find\Command=autorun.cmd

;Пока мне не совсем ясно для чего эти строки. Выясню - сообщу
;Shell\cmd1=Команда
;Shell\cmd1\Command=autorun.cmd

 

Итак, чего мы добились? Во-первых, сразу после вставки флешки в порт и монтировании раздела запустится приложение с флешки (для примера, я везде запускаю командный файл autorun.cmd, но приложения могут быть и разными). Но опытный пользователь, ожидающий атаки подобного рода, может отключить автозапуск. Что тогда? Он кликнет дважды по иконке флешки - запустится наше приложение, он выберет в контекстном меню пункт Открыть или Проводник - запустится наше приложение. Даже если пользователь нажмет в контекстном меню пункт Найти - все равно выполнится наше приложение!

 

Есть и недостатки. Самый серьезный - в контекстном меню будет два пункта Автозапуск - наш, жирный первой строкой, и оригинальный - второй строкой. Так вот, если выбрать второй, то откроется окно выбора действия, в котором можно выбрать пункт Открыть для просмотра (или что-то в этом роде). Я работаю над исключением настоящего автозапуска из контекстного меню, но пока он никуда оттуда не уходит. Надо подумать, возможно, в целях исключения демаскировки, следует убрать подставной автозапуск - если человек отключил автозапуск в системе, какой смысл выбирать его в контекстном меню? Хотя, есть и оригиналы...

 

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

 

P.S. если кто-то решится протестировать, прошу сообщить о результатах. Я испытывал на Windows XP. Интересно проверить на Vista и 2000. На 98 даже не пытайтесь.

Ссылка на комментарий
Поделиться на другие сайты

Авторан прекрасно работает на флешке.

Вариант, предложенный Вами в теме Оперативные программы не сработал ни на одном из моих компьютеров. Если Вы имели ввиду другое обсуждение, то прошу дать ссылку. Кроме того, здесь, по сравнению с Вашим вариантом, есть дополнительные особенности ;)

 

Вот "отшлифованный" код:

 

[AutoRun]
;Метка устройства будет показана там, где подписана его буква в проводнике
label=Z-Flash

;Это текст пункта в диалоге настоящего автозапуска. Пункт будет первым в списке, так что если иконка
;соответствует, а подписи пользователь читать не любит, то есть шанс, что будет выбран именно этот пункт
action=Открыть папку для просмотра файлов

;Если здесь иконка, то она будет отображена в диалоге настоящего автозапуска вместо стандартной
;и она же будет показана вместо значка устройства
icon=favicon_flash.ico

;Говорим системе, что нужно использовать автозапуск
UseAutoPlay=1

;Говорим системе, какое именно приложение запустить. Путь относительно корня флешки. Перестраховываемся двумя командами
open=autorun.cmd

;Добавляем в контекстное меню флеш-диска пункт Автозапуск. Он будет стоять первым и будет выделен жирным
shell\auto=&Автозапуск
shell\auto\command=autorun.cmd

;Заменяем в контекстном меню флешки пункт Открыть на собственный, запускающий нужное нам приложение
shell\open=&Открыть
shell\open\Command=autorun.cmd

;Заменяем в контекстном меню флешки пункт Проводник на собственный, запускающий нужное нам приложение
shell\explore=&Проводник
shell\explore\Command=autorun.cmd

;Заменяем в контекстном меню флешки пункт Найти на собственный, запускающий нужное нам приложение
shell\find=&Найти
shell\find\Command=autorun.cmd

Ссылка на комментарий
Поделиться на другие сайты

Попробую на рабочих. Завтра (сегодня?) отпишусь. Но у меня, пока я не вставил UseAutoPlay=1, не работал автозапуск. Все остальное - да, и двойной клик, и контекстное меню. Но при монтировании флешки приложение не запускалось. А это уже косяк.

 

Дополнение. Без UseAutoPlay=1 у меня не запустилось. Возможно, настройки системы виноваты, но не важно - раз есть такой косяк, надо использовать максимально действующий вариант.

Ссылка на комментарий
Поделиться на другие сайты

Заархивировано

Эта тема находится в архиве и закрыта для дальнейших ответов.

×
×
  • Создать...