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