Дело о медленной демонстрации
Несколько недель назад я впервые участвовал в презентации на
Я демонстрировал такие функции, как
За несколько недель до проведения этой презентации я работал с Джейсоном Лезнеком (Jason Leznek), отвечавшим за часть презентации, адресованной IT-профессионалам, для изучения приложений, с помощью которых я буду проводить презентацию и организовывать демо-показы. Мы проводили пробные прогоны по сценарию, настраивая демонстрацию и создавая переходы, урезая информационное наполнение презентации, чтобы уложиться во временные рамки, отведенные моему выступлению, и сокращали мою речь, чтобы она была сосредоточена главным образом на преимуществах, которые предоставляют новые технологии. Для демонстрации про совместимость приложений мы решили использовать стандартную программу, используемую в Microsoft, которая называется Stock Viewer и относится к той группе присутствующего сегодня на корпоративном рынке программного обеспечения, которое несовместимо с Vista и Windows 7 и не может быть запущено на этих операционных системах без стороннего вмешательства. В моем демо-показе я запускал Stock Viewer на Windows 7 и демонстрировал, что при работе программы постоянно появляются сообщения о каких-то неопределенных ошибках, вызванных совместимостью:
Далее я показывал, как я устанавливал прокладку совместимости приложения, позволяющую оному корректно работать на Vista и успешно перезапускал это приложение.
Мы также хотели показать, как AppLocker облегчает процесс создания правил, позволяющих запускать программное обеспечение на основании информации об издателе или о версии, если это ПО имеет цифровую подпись. Первоначально мы планировали показать AppLocker после демонстрации, посвященной совместимости приложений, и использовать в качестве примера Adobe Acrobat Reader в качестве приложения, часто используемого в компаниях. Мы несколько раз прогоняли эту презентацию, однако нам казалось, что переходы были несколько неуклюжими, и потому я предложил, чтобы мы поставили демонстрацию о AppLocker перед демонстрацией со Stock Viewer. Я мог запускать Stock Viewer на основании правила AppLocker и после показать, как прокладка помогает правильно работать данному приложению, используя обе демонстрации.
Я вернулся в свой офис, поставил для Stock Viewer цифровую подпись
После того, как я открыл лог, первое, что я сделал, - это отфильтровал события для StockViewer.exe, чтобы найти его первые операции, и установил параметры быстрого фильтра:
После этого я посмотрел на время первого события, 2:27:20, и последнего события, 2:28:32, которые различались с минутной задержкой, которую и наблюдал Джейсон. Я просмотрел весь список и увидел много записей, относящихся к шифрованию ключей реестра и папок файловой системы, а также настоек TCP/IP, но я знал, что должен быть какой-то один пункт, который бы объяснил столь серьезную задержку при запуске. Я просмотрел лог сначала и нашел временной промежуток примерно в 10 секунд после 2:27:22:
Непосредственно перед этим операции были связаны с Rasadhlp.dll, сетевыми DLL, а немногим ранее с ключами реестра Winsock, а сразу после десятисекундной задержки - с доступом к зашифрованным ключам реестра. Создавалось впечатление, что система не была подключена к Интернету и что около десяти секунд система ожидала отклика сети. Я начал просматривать список дальше, ожидая увидеть подобные задержки, и обнаружил 12-секундный интервал:
И на этот раз работа с сетью до и связанная с шифрованием активность после. Следующий 12-секундный перерыв был идентичен предыдущему:
В итоге следующие несколько промежутков были очень похожи на предыдущие два. В каждом случае непосредственно перед паузой появлялась запись, относящаяся к HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Connections, так что я установил фильтр по этому ключу и увидел шесть промежутков ровно по 12 секунд каждый:
В сумме - 6 раз по 12 секунд - они давали ту задержку, которую увидел Джеймс. Далее я захотел убедиться, что эти повторяющие попытки получить доступ к сети были вызваны проверкой цифровой подписи, и потому я начал проверять стеки различных событий, выбирая их и нажимая Ctrl-K для открытия диалогового окна свойств стека. Стек событий, связанных с настройками Интернет-подключения, показал, что причиной был как раз процесс шифрования:
Чтобы окончательно удостовериться, я захотел убедиться, что в конечном итоге за эти проверки отвечал именно .NET. Я повторно просмотрел лог, и увидел записи, подтверждающие то, что Stock Viewer является .NET-приложением:
Я также обратил внимание на стеки некоторых ранних событий, связанных с шифрованием ключей реестра и увидел, что это были вызовы из рабочей среды .NET процедуры WinVerifyTrust, которая является функцией Windows, позволяющей провести проверку цифровой подписи файла, который провел несколько попыток доступа в Интернет:
После того, как я удостоверился, что причиной задержки старта приложения является .NET, который, видя, что Stockviewer.exe имеет цифровую подпись, начинает проверять, не отозван ли соответствующий сертификат, я начал искать в сети способы обойти проверку .NET, так как я знал, что вероятнее всего машины, с помощью которых будет проводиться презентация, во время выступления не будут подключены к Интернету. По прошествии некоторого времени я нашел эту
В статье указаны все те же признаки, которые видели мы, и отмечается, что .NET 2.0, который я использовал для работы с Stock Viewer (это я узнал на основании путей к DLL-файлам, которые фигурировали в логе), поддерживает способ отключения обязательной проверки цифровых подписей: для этого необходимо создать файл конфигураций в папке с исполняемым файлом с таким же именем, как и сам файл .exe, за исключением расширения ".config" (например, StockViewer.exe.config), содержащий следующий XML-код:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<runtime>
<generatePublisherEvidence enabled="false"/>
</runtime>
</configuration>
Примерно через 15 минут после того, как я получил сообщение Джеймса, я послал ему свой ответ с объяснением своих выводов и файлом конфигурации. Вскоре после этого, он прислал мне подтверждение, что задержки исчезли и выразил свое изумление, что я так быстро определил проблему и нашел решение. Для него, возможно, это выглядело как волшебство, однако я просто использовал основные методики решения проблем с помощью Process Explorer и сеть для поиска решения. В результате наша демонстрация на TechEd с переходом между AppLocker и совместимостью приложений возымели большой успех.
Источник:
Перевод: Dazila
Комментарии
Познавательно. Видно, что человек является большим профессионалом в своём деле. Больше таких людей!
На самом деле, сразу было понятно в чем трабла да и решение быстро находилось.
НО! Человек действительно дотошен и хорош тем, что прошел весь путь сам, и таки вернулся к первоначальной мысле
Мне было бы лень, так как принцип и так был понятен % )
Не понятен смысл статьи: это попытка запугать простых пользователей тем, что без копания в логах и реестре они не смогут на 7 запустить даже элементарную программу? Вам это удалось!!! Нужно поскорее распространить эту статью по всему инету!)))
Ssstorm, для начала надо ее прочитать, чтобы понять смысл. А смысл прост: любую проблему можно устранить.
Как нам пиратам везет ! Никаких цифровых подписей - никаких проблем
deeper2k
Любую проблему можно устранить. Согласен. Только проблем теперь будет больше?)))
Решили приблизить Винду к "красноглазикам"? Пусть пользователь ковыряется?
Ssstorm, странные выводы Вы сделали. С чего Вы решили, что теперь их будет больше? В данной статье разбирается одна конкретная проблема.
Я помню мозг сломал - не мог понять, почему осел и .нет приложения тормозят при обращении к серверу, а огнелис не тормозит. В итоге я понял что это из-за проверок сертификата, но как втолковать .нет машине, что не нужно проверять сертификат - не допер. Дядьке зачет!
По теме
- Устраняем конфликт подписей дисков
- Дело о загадочных звуках
- Дело об ооооочень долгом входе в систему
- Дело об ошибке службы установки
- Дело о загадочных перезагрузках
- Дело о зависшей программе запуска игры
- Анализируем вирус Stuxnet с помощью инструментов Sysinternals (ч.3)
- Анализируем вирус Stuxnet с помощью инструментов Sysinternals (ч.2)
- Анализируем вирус Stuxnet с помощью инструментов Sysinternals (ч.1)
- Дело о нерабочей системе