SEKRAVTO
Секретные приемы автозагрузки
Автозагрузка в Windows 9x
Специфика Windows NT / 2000 / XP
Неявные способы автозагрузки
Сергей Трошин
В Windows различных версий имеется несколько способов автоматического запуска определенной программы или открытия документа во время загрузки операционной системы. Это обусловлено разными причинами: требованиями совместимости с приложениями для DOS и для Windows 3.11, наличием в системе нескольких зарегистрированных пользователей с индивидуальными настройками, необходимостью разграничения пользовательских привилегий и так далее.
В последних версиях Windows имеется довольно неплохая утилита для управления программами из автозагрузки - msconfig.exe. Правда, вся прелесть этой программы в том, что она уже есть в составе Windows, и что она предельно проста: практически не дает пользователю возможности привести операционную систему в неработоспособное состояние.
На вкладке "Автозагрузка" (StartUp) утилиты msconfig.exe можно увидеть текущий список автоматически загружаемых программ и, сняв тот или иной флажок, отключить автозагрузку какой-либо из них. При этом отключенный элемент не удаляется из списка, и его можно в любой момент снова вернуть в автозагрузку.
Отключаемый элемент списка лишь перемещается в необрабатываемый системой раздел реестра RunServices или Run либо в папку "Отключенные элементы автозапуска" меню Пуск, в соответствии с тем, каким способом изначально проводилась его автозагрузка. Также на вкладке "Автозагрузка" программы msconfig.exe имеется кнопка CleanUp, при задействовании которой производится проверка путей к файлам автоматически загружаемых программ.
И в случае, если обнаруживается неверный путь, ошибочная запись удаляется из списка. К сожалению, эта программа не только не позволяет добавить в автозагрузку какое-то новое приложение, но и сам список автоматически загружаемых программ в ней может быть не полон. Дело в том, что она не учитывает некоторые довольно важные способы автозагрузки, в частности, содержимое подразделов реестра RunOnce: RunOnceEx, RunOnce\Setup и RunServicesOnce, - в этой программе не отображается.
Чуть больше возможностей дают аналогичные утилиты от сторонних производителей, например, программа Starter (codestuff.virtualave.net), поэтому я советую при активной работе с автозагрузкой пользоваться именно такими, более продвинутыми программами. Однако в тех случаях, когда даже с их помощью не удается выявить способ загрузки какой-либо программы или необходимо определить причину сбоя, следует вручную проконтролировать все возможные пути автоматической загрузки программ. Эти пути в Windows 9x и в Windows NT немного различаются.
Автозагрузка в Windows 9x
Самый первый способ автоматической загрузки программы в Windows 9x - использование рудиментарного файла autoexec.bat. Разумеется, таким образом можно запустить только приложение для DOS или какой-то пакетный bat-файл. В Windows Me обработка этого файла уже не производится, а потому в этой системе этот способ не работает.
Сразу оговорюсь, что такие используемые вирусами способы автозагрузки, как, например, внедрение чужеродного исполняемого кода в обычную программу (например, в command.com, win.com или даже в драйвер мыши) или подмена файла легитимной программы файлом вируса, мы рассматривать не будем.
Хотя, пожалуй, в контексте вирусологии стоит упомянуть о системном файле wininit.exe: эта программа тоже запускается в самой начальной стадии загрузки системы в том случае, если в папке Windows присутствует файл wininit.ini, инструкции из которого она и призвана выполнить. В принципе, не только возможна подмена самого файла wininit.exe файлом вируса, но и создание деструктивных инструкций в файле wininit.ini, результатом которых окажется, например, полное удаление папки My Documents сразу после загрузки компьютера.
Так что, имейте это в виду. Далее по ходу загрузки операционной системы автоматически исполняется еще один недокументированный командный файл - winstart.bat - если он имеется в директории Windows. Из него так же, как и из autoexec.bat, можно загрузить некоторые резидентные DOS-программы или выполнить последовательность команд (в "Миллениуме" этот файл также не обрабатывается).
Не забывайте, что при перезагрузке системы Windows 9х в режим эмуляции MS-DOS используется также пакетный файл dosstart.bat.
Затем при загрузке операционной системы доходит очередь до обработки еще одного конфигурационного файла - system.ini. Напрямую с его помощью можно запустить только одну программу, а именно, оболочку Windows. Изначально такой оболочкой является Проводник explorer.exe, что вы и можете наблюдать, если посмотрите значение параметра SHELL в разделе [BOOT], однако ничто не мешает указать дополнительные программы как аргументы командной строки самого файла explorer.exe - Проводник сам при запуске загрузит эти программы или документы.
Впрочем, вполне возможна и замена самой оболочки explorer.exe на любой другой файл, собственно, именно для этого и предназначен этот параметр.
Далее в процессе загрузки Windows появляется еще одна возможность запуска программ - доставшийся от Windows 3.11 файл win.ini содержит в разделе [windows] специальные параметры load и run, которые могут использоваться для задания автозапуска (для обеспечения совместимости эти параметры по-прежнему обрабатываются самыми последними версиями ОС).
По умолчанию значением этих параметров должна являться пустая строка.
Поскольку файлы system.ini и win.ini - наследие Windows 3.11, то, если вы вдруг захотите использовать эти параметры, не забывайте, что указывать путь к исполнимому файлу (или имя файла) в их значении следует в стандарте MS-DOS - без пробелов и длинных имен. Если требуется поместить в автозагрузку сразу несколько программ, то допускается перечисление через запятую имен файлов этих программ.
Поскольку этот путь загрузки обычными пользователями уже изрядно подзабыт, его нередко используют доморощенные создатели троянских вирусов.
Теперь во время загрузки операционной системы начинает обрабатываться системный реестр, в котором существует целый ряд разделов, обеспечивающих загрузку приложений в определенном порядке и в контексте определенного пользователя.
Подразделы реестра, отвечающие за автозапуск, носят следующие имена: Run, RunOnce, RunOnceEx, RunServices, RunServicesOnce.
Располагаться они могут в следующих разделах реестра, в зависимости от того, в каком контексте производится автозапуск:
HKEY_LOCAL_MACHINE\SOFTWARE\
Microsoft\Windows\Current
Version\
HKEY_USERS\.DEFAULT\SOFTWARE\
Microsoft\Windows\Current
Version\
HKEY_CURRENT_USER\SOFTWARE\
Microsoft\Windows\Current
Version\.
В том случае, если в Windows 9x зарегистрирован только один пользователь, содержание раздела HKEY_USERS\.DEFAULT дублирует раздел HKEY_CURRENT_
USER. Полный путь к этим параметрам может выглядеть, например, так: HKEY_LOCAL_MACHINE\
SOFTWARE\Microsoft\Windows\
CurrentVersion\Run.
То есть, для того, чтобы просмотреть автозагрузку, в каждом из корневых разделов реестра следует открыть ветвь
SOFTWARE\Microsoft\Windows\CurrentVersion\
и найти вышеперечисленные подразделы Run*. Каждый из этих подразделов может содержать перечень строковых параметров (порядок запуска приложений, расположенных в одном подразделе, обычно соответствует расположению по алфавиту имен этих параметров), значением которых являются пути к программам, которые и надо загрузить на старте Windows. Эти пути могут содержать длинные имена и пробелы.
Первыми при загрузке системы обрабатываются параметры Run* из раздела HKEY_LOCAL_MACHINE, причем ключи RunServices и RunServicesOnce обрабатываются раньше, чем Run и RunOnce. Программы из подразделов RunServices и RunServicesOnce запускаются еще до входа пользователя в систему в так называемом асинхронном режиме, независимо от запуска других программ и процесса регистрации пользователя в системе.
Подразделы RunServicesOnce и RunOnce служат для однократного запуска программ, и их содержимое очищается непосредственно перед самой загрузкой программ, указанных в этих разделах (раздел реестра RunOnce не поддерживается в Windows NT 3.5).
Специальные разделы RunOnceEx отличаются от разделов RunOnce и Run. Эти разделы позволяют запускать программы в заранее определенном порядке, последовательно. Напрямую параметры, расположенные в разделе RunOnceEx, не запускаются.
Внутри раздела RunOnceEx для автоматически запускаемых с его помощью программ создается дополнительный подраздел, в котором уже и указываются параметры с именами приложений и путями к исполнимым файлам.
При этом подразделы внутри RunOnceEx обрабатываются системой в алфавитном порядке, что и позволяет задать порядок запуска приложений или групп приложений, что может быть крайне важно при инсталляции некоторых программ. При обработке такого списка программ система будет терпеливо ожидать завершения работы каждого элемента списка и только после этого произведет запуск уже следующего элемента, стоящего в очереди.
Кроме того, в подразделе реестра RunOnce может содержаться специальный раздел Setup, используемый при установке компонентов Windows либо некоторых прикладных программ.
Параметры внутри этого раздела обрабатываются системой так же, как и обычные параметры раздела RunOnce, то есть происходит однократный запуск указанных в них программ, однако в ходе этого запуска отображается индикатор (в его диалоговом окне указано имя соответствующего параметра из раздела Setup) с прогресс-баром, то есть показывается, на сколько процентов завершено копирование файлов устанавливаемой программы.
После обработки раздела HKEY_LOCAL_MACHINE приходит черед аналогичной обработки общего для всех пользователей многопользовательских конфигураций раздела HKEY_USERS\.DEFAULT, а после регистрации пользователя в системе - раздела HKEY_
CURRENT_USER.
В Windows Me, Windows 2000 / XP появились новые разделы для автозагрузки программ:
HKEY_LOCAL_MACHINE\ Software\Microsoft\Windows\
CurrentVersion\Policies\Explorer\Run и HKEY_CURRENT_USER\Software\Microsoft\Windows\
CurrentVersion\Policies\Explorer\Run.
Особенность этих разделов заключается в том, что имена параметров, прописанных в них, должны быть представлены в виде порядковых номеров, начиная с единицы.
Также после регистрации пользователя в системе происходит запуск программ, ярлыки к которым помещены в папку "Автозагрузка" меню Пуск.
Следует учитывать, что для текущего пользователя реальное местоположение на диске этой папки с ярлыками может быть изменено с помощью программы типа TweakUI либо вручную, при изменении значения параметра Startup в разделе реестра HKEY_CURRENT_USER\ SOFTWARE\Microsoft\
Windows\CurrentVersion\ Explorer\User Shell Folders.
По умолчанию же ярлыки автозапуска текущего пользователя располагаются в папке \WINDOWS\Start Menu\Programs\StartUp для Windows 9x либо \
Documents and Settings\ИМЯ ПОЛЬЗОВАТЕЛЯ\Start Menu\
Programs\Startup для Windows XP (путь этот также задан в реестре - параметр Startup раздела HKEY_CURRENT_USER\ SOFTWARE\Microsoft\Windows\
CurrentVersion\Explorer\ShellFolders).
Кроме этой папки, ярлыки автоматически запускаемых программ могут располагаться и в папке, общей для всех пользователей многопользовательской конфигурации. В Windows XP - это папка \Documents and Settings\All Users\ Start Menu\Programs\Startup, а в Windows 9x - \WINDOWS\All Users\Start Menu\
Programs\StartUp.
Путь к этой папке тоже может быть изменен в реестре - Common Startup раздела HKEY_LOCAL_MACHINE\
SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\
Shell Folders. Эти папки могут обрабатываться даже в однопользовательских конфигурациях.
Специфика Windows NT / 2000 / XP
В операционных системах серии Windows NT способы автозапуска программ в целом почти идентичны системам Windows 9x, однако имеется ряд разделов в реестре, специфичных только для Windows NT.
Кроме того, в этих ОС отсутствует возможность запуска программ с помощью файлов autoexec.bat (при запуске DOS-приложения, правда, происходит автоматическая обработка файла %SystemRoot%\SYSTEM32\AUTOEXEC.NT, если в настройках свойств этой DOS-программы не указан другой файл), winstart.bat, dosstart.bat.
Итак, в Windows NT могут иметь место дополнительные параметры автозапуска в разделах реестра:
HKEY_CURRENT_USER\ Software\Microsoft\Windows NT\CurrentVersion\Windows\Run и
HKEY_LOCAL_MACHINE\ Software\Microsoft\Windows NT\CurrentVersion\Windows\Run.
В разделе HKEY_CURRENT_USER\ Software\Microsoft\Windows NT\
CurrentVersion\Windows или в
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\ Windows могут присутствовать строковые параметры Load (программы, запуск которых в нем прописан, загружаются минимизированными) и Run, в которые при установке Windows NT поверх Windows 9x переносится соответствующий список программ автозапуска из аналогичных параметров файла win.ini.
К этим параметрам реестра применимы те же правила написания, что и к соответствующим параметрам win.ini. Если же наследования этого списка из предыдущей ОС не происходит, то по умолчанию значением этих параметров является пробел.
В разделе HKEY_LOCAL_MACHINE\SOFTWARE\ Microsoft\Windows NT\
CurrentVersion\Winlogon также содержится ряд строковых параметров, отвечающих за автозапуск различных приложений при входе пользователя в систему:
Userinit - определяет список программ, запускаемых процессом WinLogon в контексте пользователя при его регистрации в системе. По умолчанию это userinit.exe, nddeagnt.exe для Windows NT и userinit.exe для Windows 2000 / XP.
Shell - задает оболочку (вернее, список программ, формирующих пользовательский интерфейс) Windows (по умолчанию taskman, progman, wowexec для Windows NT и explorer.exe для Windows 2000 / XP).
System - определяет список программ, запускаемых процессом WinLogon в контексте системы во время ее инициализации. По умолчанию - lsass.exe, spoolss.exe для Windows NT и lsass.exe для Windows 2000 / XP.
VmApplet - определяет список программ или программу, запускаемую процессом WinLogon для оперативной настройки параметров виртуальной памяти -по умолчанию его значение rundll32 shell32, Control_
RunDLL "sysdm.cpl".
Неявные способы автозагрузки
К сожалению, операционные системы семейства Windows и их внутреннее устройство довольно сложны для рядового пользователя - к копанию в реестре расположен далеко не каждый. Тем более, что помимо вышеперечисленных способов автозапуска программ на старте системы существует еще и такой вариант, как запуск исполнимого модуля одной программы при загрузке другого, вполне легитимного приложения.
Подобный симбиоз (или, скорее, что- то типа паразитирования) можно наблюдать при использовании утилит класса ad-ware, то есть таких программ, в которых вы расплачиваетесь с их авторами не живыми деньгами, а своими нервными клетками, попорченными из-за просмотра рекламных баннеров внутри интерфейса самой программы.
За примером таких программ далеко ходить не надо - это и ReGet, и ICQ, и Opera. Закачкой этих баннеров обычно занимается отдельный исполнимый модуль, запускаемый вместе с основной программой.
Подобных модулей-баннерососов создано уже довольно много, и отловить их вручную слишком сложно даже для опытного пользователя, а потому всегда полезно периодически сканировать систему не только антивирусным сканером, но программами типа Ad-Aware www.lavasoft.de/free.html, или Opt Out grc.com/optout.htm, или SpyBot - Search & Destroy (security.kolla.de), призванными находить и удалять из системы эти модули.
Такие программы обычно абсолютно бесплатны и имеют в своих постоянно обновляемых базах данных информацию о десятках известных шпионско-рекламных модулях и даже троянских вирусах. Учтите только, что некоторые программы не работают без таких "пауков" (тот же ReGet) - в этом случае можно либо заблокировать баннеры персональным файрволлом, например, AtGuard или Norton Internet Security, либо найти альтернативную программу аналогичного назначения, но уже без мерзопакостной нагрузки.
Всеми обожаемый браузер от повсеместно любимой корпорации Microsoft также имеет мало известную, но достаточно коварную возможность вместе со своим запуском загружать посторонние модули, так называемые Browser Helper Objects (BHO) - небольшие программы, не имеющие пользовательского интерфейса и автоматически запускаемые вместе с Internet Explorer.
Эти самые BHO могут быть как действительно ценными дополнениями (например, модуль, который прописывает в систему программа FlashGet), так и зловредными троянскими вирусами или шпионскими модулями, а потому при проверке автозагрузки нелишним будет проконтролировать и список установленных в системе BHO.
Список этот можно увидеть в разделе реестра HKEY_LOCAL_MACHINE\ SOFTWARE\Microsoft\Windows\
Currentersion\Explorer\Browser Helper Objects.
Подозрительные или явно зловредные Browser Helper Objects можно удалить из этого списка (ленивым пользователям желательно предварительно сделать резервную копию реестра, а добросовестным - обязательно) - это их полностью дезактивирует.
Например, если в этом разделе вы обнаружите подраздел HKEY_LOCAL_MACHINE\SOFTWARE\
Microsoft\Windows\CurrentVersion\ Explorer\Browser Helper Objects\{A5366673-E8CA-11D3- 9CD9-0090271D075B}
то произведите поиск во всем реестре найденного идентификатора Browser Helper Objects - {A5366673-E8CA-11D3-9CD9-0090271D075B} - обнаружите его упоминание также и в разделе HKEY_CLASSES_ROOT\CLSID\
{A5366673-E8CA-11D3-9CD9-0090271D075B}.
Просмотрите все содержимое найденного раздела, чтобы определить, к какой программе относится этот Browser Helper Objects. В данном случае вы найдете такую запись: HKEY_CLASSES_ROOT\CLSID\
{A5366673-E8CA-11D3-9CD9-0090271D075B}\
InprocServer32@= "C:\PROGRAM FILES\FLASHGET\
JCCATCH.DLL", - из которой можно сделать вывод, что обнаруженный Browser Helper Objects создан программой FlashGet (менеджер закачек) и никакой угрозы совершенно не представляет.
Если же обнаружится упоминание библиотеки непонятного происхождения (например, в свойствах этого файла нет никаких данных о его разработчике), то попробуйте удалить в реестре все упоминания данного Browser Helper Objects - скорее всего, именно он и является причиной неприятностей.
Удобнее же всего для поиска и идентификации установленных Browser Helper Objects использовать специально для этого предназначенные программы, такие как BHODemon (http://www.definitivesolutions.com/) или BHOCaptor (http://www.xcaptor.org/), которые выдадут всю информацию об установленных модулях Browser Helper Objects и помогут деактивировать подозрительные модули.
Конечно, существуют и другие доступные способы загрузить программный код без ведома пользователя, например, с помощью плагина какой-либо программы, хотя бы того же всеми любимого браузера Internet Explorer.
Файлы подключаемых модулей-плагинов Internet Explorer находятся в папке \Program Files\Internet Explorer\Plugins, по свойствам каждого файла можно выяснить его предназначение.
Не исключено также, что зловредной программе удастся прописать себя в системе как системный драйвер или сервис, одним словом, борьба с вирусами или другими, запускающимися без ведома пользователя программами, весьма и весьма непроста.
А самый лучший способ помочь самому себе в этой борьбе - постоянный мониторинг состояния файлов на диске, реестра и конфигурационных файлов с помощью хорошего деинсталлятора. Только так вы получите реальную картину того, что пишется на диск и в реестр при установке новых программ или при посещении находящихся на отшибе Сети веб-сайтов. Догадайтесь с трех раз, какой деинсталлятор я использую? Конечно, Ashampoo Uninstaller (http://www.ashampoo.com/) - мои постоянные упоминания этой программы, вероятно, уже изрядно всем надоели, но ничего лучшего лично для себя я пока не подобрал, тем более, что результаты ее работы меня более чем устраивают. Настоятельно рекомендую!
Вот, собственно говоря, и практически все, что касается способов автозагрузки приложений и документов в операционных системах семейства Windows (не все, конечно же, на самом деле, вы прочитали все, что мне вспомнилось на данный момент, по частным же вопросам, пишите мне лично).
С некоторой натяжкой, правда, к автозапуску можно отнести еще и возможность использования файла autorun.inf в корневой директории жесткого диска, но этому файлу уже была посвящена довольно большая статья в нашем журнале.
В особо же тяжелых случаях я советую попробовать определить имя исполнимого файла непонятно каким образом запущенного процесса с помощью программы типа TaskInfo (www.iarsn.com/download.html), а затем произвести тщательный поиск этого файла на диске и его упоминаний в системном реестре. Утилита эта вообще очень примечательна.
Она в реальном времени показывает информацию обо всех запущенных процессах (использование памяти и CPU, открытые файлы, используемые библиотеки и прочее).
Иконка программы помещается в системный трей и показывает загрузку процессора. С ее помощью также можно устанавиливать уровень приоритета для запущенных приложений.
Эта программа позволяет не только просмотреть почти все способы автозагрузки, но обладает еще целым рядом полезных функций. Например, с помощью утилиты Starter вы легко отредактируете любую запись в реестре, относящуюся к автоматически загружаемым программам, удалите, временно отключите или добавите в автозагрузку любое новое приложение или документ.
Также эта программа позволяет делать резервную копию автозагрузочных разделов реестра в виде текстового файла, документа HTML или стандартного reg-файла и, естественно, восстанавливать их из нее. Любую замеченную в автозагрузке программу можно запустить непосредственно из интерфейса Starter, просмотреть свойства исполнимого файла этой программы и открыть ее папку на диске.
Кроме того, с помощью Starter можно просмотреть и список запущенных процессов, задать любому из них нужный приоритет или принудительно выгрузить его из памяти. Словом, возможностей даже у далеко не идеального, на мой взгляд, Starter гораздо больше, чем у msconfig (впрочем, msconfig - более универсальная программа, призванная решать и другие задачи настройки системы), а пользоваться ей заметно удобнее, что, конечно, не исключает наличия и более продвинутых утилит мониторинга автозагрузки.
Поэтому я советую при активной работе с автозагрузкой пользоваться именно такими, более мощными программами. Однако, в тех случаях, когда даже с их помощью не удается выявить способ загрузки какой-либо программы или необходимо определить причину сбоя, следует вручную проконтролировать все возможные пути автоматической загрузки программ. Эти пути в Windows 9x и в Windows NT немного различаются.
На главную
Источник:
http://www.computery.ru/upgrade/ http://www.izcity.com/ журнал"IZone"
Содержание раздела