Совместимость приложений - Георгий Баркан
←
→
Транскрипция содержимого страницы
Если ваш браузер не отображает страницу правильно, пожалуйста, читайте содержимое страницы ниже
Ключевые проблемы 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
Вы также можете почитать