Файл: Руссинович М., Маргозис А. Утилиты Sysinternals. Справочник администратора 2012.pdf

ВУЗ: Не указан

Категория: Книга

Дисциплина: Операционные системы

Добавлен: 29.10.2018

Просмотров: 33000

Скачиваний: 742

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

Сообщения об ошибках  

Глава 16  393 

Он запустил Procmon, снова вызвал программу установки и в момент 

появления сообщения об ошибке остановил трассировку Procmon. Аарон 
отфильтровал, перетащив значок в виде перекрестия с панели управления 
Procmon на сообщение об ошибке, только события, связанные с процессом-
владельцом окна Setup.exe (рис. 16-18).

Рис. 16-18.  Procmon после установки фильтра «Include Process From Window»

Поскольку в заголовке сообщения об ошибке присутствовала цифра 

«0», Аарон подумал, что проблема возникает из-за того, что программа не 
может что-то найти, поэтому он щелкнул правой кнопкой столбец Result 
и исключил события, не представляющие интереса: SUCCESS, FAST I0 
DISALLOWED, FILE LOCKED WITH ONLY READERS, REPARSE, BUF-
FER OVERFLOW, и END OF FILE (обычно Аарон исключает стандартные 
результаты, а не включает потенциально тревожные, иначе легко выкинуть 
нужную информацию).

Когда он посмотрел на оставшиеся записи, то увидел один явно выделяю-

щийся элемент — «DoesNotExist» среди путей в конце перечня результатов. 
Он применил функцию подсветки Procmon, чтобы выделить их в контексте 
окружающих событий (см. рис. 16-19).

Рис. 16-19.  Подсветка строки «DoesNotExist» в отфильтрованных результатах

SIN_ch_16.indd   393

27.12.2011   14:52:43


background image

394  Часть 

III   

Поиск и устранение сбоев: загадочные случаи

Поскольку из контекста было неясно, что произошло непосредственно 

перед неудачным поиском, он удалил из фильтра Procmon правило, исклю-
чающее результаты SUCCESS. Как видно из рис. 16-20, перед обращением 
к разделу реестра HKLM\Software\DoesNotExist\lnfo выполнялось множе-
ство обращений к D:\setup.ini, а затем несколько к D:\autorun.inf.

Рис. 16-20.  Вывод результатов типа SUCCESS перед неудачным обращением к реестру

Аарон открыл меню Properties первого события RegOpenKey  и посмо-

трел на стек вызовов (рис. 16-21), чтобы понять, как и зачем процесс Setup.
exe пытался открыть этот раздел. Строка 12 стека показывала, что компо-
нент программы установки вызывал GetPrivateProfileStringA, что и привело 
(в строке 7) к попытке открыть этот раздел реестра.

Рис. 16-21.  Стек вызовов неудачной попытки открытия HKLM\Software\DoesNotExist\lnfo

SIN_ch_16.indd   394

27.12.2011   14:52:44


background image

Сообщения об ошибках  

Глава 16  395 

GetPrivateProfileString — это API-функция, которой Windows-разработчики 

могут пользоваться для чтения старых INI-файлов 16-разрядных версий 
Windows. Согласно документации, эти вызовы перенаправляются в реестр с 
помощью раздела IniFileMapping. Аарон обнаружил в IniFileMapping стро-
ку, направляющую запрос autorun.inf в «DoesNotExist» (рис. 16-22), удалил 
его и перезагрузил компьютер, после чего установка прошла успешно.

Рис. 16-22.  Элемент IniFileMapping перенаправляет запрос Autorun.inf  в несуществующий 
раздел реестра

Анализ проблемы

Аарон обнаружил конкретную причину неудачной установки, однако 
ему нужна была ее первопричина и объяснение неверной конфигурации 
IniFileMapping.

IniFileMapping
Раздел IniFileMapping появился в Windows NT 3.1. Когда программы исполь-
зуют API-интерфейсы ini-файлов для обращения к файлам, IniFileMapping 
может перенаправлять обращения к кустам MACHINE или USER (HKLM 
или HKCU). Раздел IniFileMapping разработан для поддержания совмести-
мости с устаревшими приложениями, использовавшим INI-файлы вместо 
реестра, что препятствовало масштабированию и не давало возможности 
разным пользователям иметь собственные настройки.

Autorun.inf
При вставке съемного носителя, такого как компакт-диск или флеш-
накопитель USB Windows обнаруживает новый диск и Проводник прове-
ряет наличие файла Autorun.inf в корневой папке носителя. Autorun.inf —
это текстовый файл в формате INI-файла (то есть, с именами разделов в 
квадратных скобках, содержащих пары «имя=параметр»). Файл может со-
держать записи, сообщающие Проводнику, какой значок следует назначить 
диску и какое действие по умолчанию следует предлагать пользователю, а 
в некоторых случаях просто запускает нужную программу. Этот механизм 
позволяет запускать программу установки автоматически после встав-
ки компакт-диска. Существуют настройки реестра и групповой политики, 
управляющие автозапуском и автоматическим воспроизведением (см. ста-
тью 967715 базы знаний Microsoft Knowledge Base по адресу http://support.
microsoft.com/kb/967715).

Проблема с автозапуском заключается в том, что по умолчанию он дей-

ствует и для перезаписываемых дисков, включая флеш-накопители. Черви, 

SIN_ch_16.indd   395

27.12.2011   14:52:44


background image

396  Часть 

III   

Поиск и устранение сбоев: загадочные случаи

такие как Conficker, могли распространяться через такие устройства, записывая 
на диск Autorun.inf и свою копию. После этого вредоносное ПО могло зара-
жать другие компьютеры после подключения к ним диска. Все это усугубля-
лось ошибкой в применении настроек, которые, как предполагалось, должны 
были отключать автоматическое воспроизведение. Позднее эта ошибка была 
исправлена.  Более того, в новых версиях Windows автоматическое воспроиз-
ведение для перезаписываемых устройств теперь отключено по умолчанию. 
Подробнее об этом написано в статье 971029 Knowledge Base  (http://support.mi-
crosoft.com/kb/971029). 
Функции автозапуска и автоматического воспроизведе-
ния все еще работают на CD- и DVD-дисках, поскольку распространение червей 
через эти устройства менее вероятно и пока удобство перевешивает риск.

Почему в разделе IniFileMapping появился параметр для Autorun.inf?
Пару лет назад один блоггер описывал хитрый трюк для отключения автома-
тического воспроизведения на всех носителях. Трюк был возможен благодаря 
тому, что Autorun.inf имеет формат ini-файла, а Проводник использует API-
функции ini-файлов для его чтения. За счет создания для Autorun.inf параметра 
IniFileMapping, перенаправляющего обращение к несуществующему разделу 
реестра, записи автоматического воспроизведения становятся недоступными. 
Автор утверждал, что при этом имеется только один недостаток: пользователи 
сами должны искать исполняемые файлы. Когда вредоносные программы все 
чаще стали распространяться  через перезаписываемые устройства, группа ре-
агирования на компьютерные происшествия (CERT) Университета Карнеги-
Меллона и другие организации, занимающиеся вопросами информационной 
безопасности, стали рекомендовать этот трюк, утверждая, что он не вызывает 
побочных эффектов. С тех пор данный параметр в обязательном порядке вно-
сится в реестр во многих организациях.

Почему не удалось установить это приложение?
Оказалось, что файл Autorun.inf на установочном компакт-диске «Kodak» 
содержал отнюдь не только записи для автоматического воспроизведения:

[autorun] 
open=autorun.exe

[Info]
Dialog=Kodak i610/i620/i640/i660 Scanner
Model=600
ModelDir=kds_i600
Prog ramG roup=i 610,i 620,i 640,i 660

[Versions]
CD=04040000
FIRMWARE=04000300
ISISDRIVER=2.0.10711.12001

SIN_ch_16.indd   396

27.12.2011   14:52:45


background image

Сообщения об ошибках  

Глава 16  397 

ISISTOOLKIT=57.0.260.2124
KDSMM=01090000
PKG=02010000
SVT=06100000
TWAIN=09250500

[Install]

[SUPPORTEDOSES] 
WIN=WINVISTA WINXP WIN2K

[REQUIREDSPS]
WINXP=1
WIN2K=3

«Kodak» и другие производители используют Autorun.inf не только для 

автоматического воспроизведения, но и в качестве ini-файла общего на-
значения для своих программ установки. Разумеется, программа установ-
ки использует для чтения файла стандартные API-интерфейсы, однако 
IniFileMapping перенаправляет их в несуществующий раздел реестра, в ре-
зультате установка не удается. Надо сказать, что «Kodak» делает это совер-
шенно законно: нигде не запрещено помещать в Autorun.inf иные настройки, 
предусмотренные приложением.

Может ли клиент решить проблему, скопировав содержимое компакт-

диска на жесткий диск и запустить его оттуда? Нет. IniFileMapping приме-
няется к любому файлу с именем «Autorun.inf», независимо от его располо-
жения.

Мораль в том, что установка провалилась из-за уверенности  в «отсут-

ствии побочных эффектов», не подкрепленной тестированием. Поскольку 
новые умолчания и доступные настройки политики автоматического вос-
произведения значительно снижают угрозу распространения вирусов че-
рез USB-накопители, примочки вроде IniFileMapping могут и не сработать. 
Аарон посоветовал клиенту удалить этот раздел из реестра и положиться на 
защитные меры, принятые в новых системах.

Отсутствие сопоставлений с папкой

Один из пользователей обнаружил, что всякая попытка открыть любую пап-
ку в Проводнике приводит к появлению сообщения об ошибке, изображен-
ного на рис. 16-23. Это происходило независимо от способа, которым пыта-
лись открыть папку: двойной щелчок папки на рабочем столе, через значок 
Компьютер, Панель управления, Документы, Изображения или другие пап-
ки меню Пуск.

SIN_ch_16.indd   397

27.12.2011   14:52:45