Совместимость приложений - Георгий Баркан

Страница создана Роман Мартынов
 
ПРОДОЛЖИТЬ ЧТЕНИЕ
Совместимость приложений - Георгий Баркан
Совместимость приложений

                  Георгий Баркан
           gbarkan@microsoft.com
Совместимость приложений - Георгий Баркан
Ключевые проблемы
    Windows Vista, Windows Server 2008 и
                 Windows 7

                  Windows
                                 Mandatory
User Account      Resource
                                  Integrity
Control (UAC)    Protection
                                Control (MIC)
                   (WRP)

           Версия
                          Изоляция
        операционной
                          сессии 0
          системы
Совместимость приложений - Георгий Баркан
Версия операционной системы
• Внутренний номер версии в Windows Vista/Server
  2008/Windows 7 (функция GetVersion) = 6
                             Windows              Windows
         Windows   Windows             Windows              Windows
                              Server               Server
          2000       XP                 Vista                  7
                               2003                 2008
Версия     5.0       5.1       5.2       6.0        6.0       6.1

• Версия Internet Explorer - 7.0/8.0
  – Версия включена в строку User Agent
  – Строка User Agent включается в заголовок
     каждого HTTP запроса
• Измените код – нужна проверка типа >= 6
• GetVersionEx()                     54% всех ошибок,
                                                 связанных с
                                               совместимостью
Совместимость приложений - Георгий Баркан
User Account Control
• Операционная система подвергается
  существенным рискам когда пользователь
  работает под учетной записью
  Administrator
  – Более простая установка вредоносного кода
  – Возможность повышения привилегий
  – Открытость для вредоносного кода
• Случайные повреждения, вносимые
  пользователем
Windows Resource Protection
• Запрещены обновления защищенных ресурсов
   – Только программы установки, известные ОС
     (Windows Update)
   – ACL для ресурсов
• Распространяется на файлы, папки и ключи реестра
   – Большинство ключевых модулей ОС (EXE и DLL)
   – Большинство ключей реестра (HKCR)
   – Папки, используемые ресурсами ОС
• Проверка
   – SfcIsFileProtected() - файлы
   – SfcIsKeyProtected() – ключи реестра
Mandatory Integrity Control (MIC)
• Реализовано в Windows Vista, Windows Server
  2008 и Windows 7
•   Процессы выполняются на одном из четырех
    уровней целостности (Integrity Levels):
    –   Системные процессы - System IL
    –   Приложения с привилегиями администратора - High IL
    –   Стандартные приложения - Medium IL
    –   Приложения с ограничениями - Low IL
•   Защищаемые объекты (файлы, процессы, очереди
    сообщений и т.п.) задают минимальный уровень
    процесса для доступа к ним
    –   Уровень для объектов по умолчанию: Medium
Изоляция привилегий интерфейса

• UI Privilege Isolation (UIPI)
• Использует MIC для запрета посылки
  сообщений между окнами
  – Приложения не могут посылать сообщения
    приложениям, выполняющися с более высоким IL
  – Приложения с более высоким IL могут разрешить
    прием сообщений
  – SendMessage() не возвращает ошибок
• Исправление: функция
     ChangeWindowsMessageFilter()
Изоляция сессии 0
• Выполнение системных сервисов и
  пользовательских приложений в сессии 0
  может привести к нарушению безопасности
  – Потенциальная возможность обмена между
    сервисами и приложениями
  – Потенциальная возможность повышения
    привилегий
• Выполнение сервисов и приложений в
  различных сессиях существенно снижает
  возможность атак, повышает стабильность,
  надежность и защищенность системы
Высокий DPI

                     Обрезанный текст
                                                     Размеры картинок и
                                                     расположение элементов

Расположение
элементов                        Размытые картинки

                                                       Неправильные
                                                       размеры шрифтов
               Размытый текст
Виртуализация DPI
• Появилась в Vista
• Применяется для приложений, которые не
  указали явно DPI awareness
  – Через манифест или вызов SetProcessDPIAware()
• Подсистема Win32 возвращает метрики как будто
  установлен 96 DPI (вызовы GetSystemMetrics(),
  GetDeviceCaps, DEFAULT_GUI_FONT, и т. п.)
• DWM масштабирует окно приложения
• DPI Virtualization — это временное
  решение
Совместимость
• Если приложение работает под Windows
  Vista, оно будет работать и под Windows
  7, но есть нюансы...
«Новое» в Windows 7
•   Версия операционной системы
•   Версия Internet Explorer
•   Библиотеки (File Libraries)
•   Windows Mail
•   Новые компоненты системного уровня
•   IE DEP
•   Windows Server 64 Bit
•   WOW64 on Windows Core
Версия Internet Explorer
• Без режима совместимости:
  – Mozilla/4.0 (compatible; MSIE 8.0; Windows
    NT 6.1; WOW64; Trident/4.0; SLCC2; .NET
    CLR 2.0.50727; .NET CLR 3.5.30729; .NET
    CLR 3.0.30729; Media Center PC 6.0)
• С режимом совместимости:
  – Mozilla/4.0 (compatible; MSIE 7.0; Windows
    NT 6.1; WOW64; Trident/4.0; SLCC2; .NET
    CLR 2.0.50727; .NET CLR 3.5.30729; .NET
    CLR 3.0.30729; Media Center PC 6.0)
Библиотеки (File Libraries)
• По умолчанию для общих диалоговых
  панелей: Documents Library
• Библиотеки – это файлы (а не папки)
• IFileDialog->GetFolder() +
  IFileDialog->GetFilename() не корректно
  работают с библиотеками
• Исправление
  – Используйте IFileDialog->GetResult()
Windows Mail
• Отсутствующий компонент – заменен на
  Windows Live Mail или почтовый клиент по
  выбору
• Все API работают, за исключением API,
  отображающих интерфейсы
• Обработчики протоколов и файлов не
  зарегистрированы
• Исправления
  – Не использовать вызовы устаревших API
  – Установить почтовый клиент
Новые компоненты системного
            уровня
• Реорганизация компонентов системы
  – Пример: функциональность из kernel32.dll
    и advapi32.dll перенесена в kernelbase.dll
• Экпортированные функции
  перенаправляются в соответствующие
  библиотеки
• Приложения, использующие внутренние
  функции и структуры могут не работать
IE DEP
• Data Execution Prevention (NX) – опция
  включена по умолчанию
• Плагины, которые не совместимы с DEP,
  могут привести к краху браузера
• Исправления:
  – Используйте DEP-совместимые библиотеки
    (ATL)
  – Используйте опцию компоновщика
    /NXCOMPAT
Windows Server 64 Bit
• Драйвера
  – Перенос и подписание 64-битных драйверов
• 32-битный код
  – Должен работать под WOW64
  – IsWow64Process
• 32-битные плагины
  – Перенос на 64-бита для 64-битных процессов
• 16-битный код
  – Перенос на 32- или 64-бита
WOW64 on Windows Core
• По умолчанию 32-битный код работать
  не будет
• Исправления:
  – Перенос на 64-бита
  – Установка компонента WOW64
Switchback
• Секция CompatibilityInfo в манифесте
  приложения – указание на ОС, для
  которой создано приложение
  – Windows SxS
• Нет секции CompatibilityInfo ==
  совместимость с Vista
Switchback Manifest
Полезные утилиты
Process Explorer
• Полезные возможности
  –   Определение сервисов
  –   Отображение загруженных модулей
  –   Отображение используемых ссылок
  –   Поиск модулей/ссылок

• ProcExp.exe
Process Monitor
• Новая версия, совместимая с Vista/WS08
• Объединяет RegMon и FileMon
• Новая возможность – создание образов

• ProcMon.exe
Standard User Analyzer
• Часть Application Compatibility Toolkit (ACT)
• Использует AppVerifier APIs
• Более «удобная» версия тестов LuaPriv
Application Verifier
• Назначение
  – Application Verifier – средство проверки
    неуправляемого кода
  – Помогает обнаружить ошибки, пропущенные
    при обычном тестировании приложений
• Использование
  – Графический интерфейс (GUI)
  – Интерфейс командной строки (CUI)
  – COM-интерфейсы для скриптинга
• AppVerif.exe
Application Verifier - GUI
• Включить/Отключить проверки для
  конкретного приложения
• Настройка свойств для каждой проверки
• Просмотр протокола проверки
• И т.д.

                         68% падений приложений
                              можно было бы
                       идентифицировать с помощью
                                App Verifier
Новое в Windows 7
• Problem Step Recorder
  – %windir%\system32\psr.exe
  – Позволяет выполнить пошаговую запись
    возникновения проблемы
  – Создает zip-файл с mht-файлом
  – Интеграция с Watson
Новое в Windows 7
• Windows Troubleshooting
  – Встроенные средства решения проблем
  – Доступ через Action Center
    • Control Panel | All Items | Action Center |
      Troubleshooting
  – Расширяемость
    • Windows SDK: TSPBuilder.exe
    • Скрипт на PowerShell
Вы также можете почитать