Совместимость приложений Баркан Георгий
User Account Control (UAC) Windows Resource Protection (WRP) Mandatory Integrity Control (MIC) Версия операционной системы Изоляция сессии 0 Windows Vista, Windows Server 2008 и Windows 7 Ключевые проблемы
Версия операционной системы Внутренний номер версии в Windows Vista/Server 2008/Windows 7 (функция GetVersion) = 6 Версия Internet Explorer - 7.0/8.0 – Версия включена в строку User Agent – Строка User Agent включается в заголовок каждого HTTP запроса Измените код – нужна проверка типа >= 6 GetVersionEx() Windows 2000 Windows XP Windows Server 2003 Windows Vista Windows Server 2008 Windows 7 Версия
Версия операционной системы 54% всех ошибок, связанных с совместимостью
User Account Control Операционная система подвергается существенным рискам когда пользователь работает под учетной записью Administrator – Более простая установка вредоносного кода – Возможность повышения привилегий – Открытость для вредоносного кода Случайные повреждения, вносимые пользователем
User Account Control Manifest Standard User vs. Administrator Virtualization
User Account Control
Windows Resource Protection Ключевые файлы операционной системы и ключи реестра могут быть заменены на предыдущие версии или вредоносный код – ущерб стабильности и безопасности системы Задача Windows Resource Protection – защита ключевых компонентов операционной системы, увеличение стабильности, предсказуемости и надежности системы
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 Session 0 Windows Station Desktop Screen Saver Login Services 1 st Users Window Возможность атаки Сессии в Windows XP/2000/2003
Изоляция сессии 0 Выполнение системных сервисов и пользовательских приложений в сессии 0 может привести к нарушению безопасности – Потенциальная возможность обмена между сервисами и приложениями – Потенциальная возможность повышения привилегий Выполнение сервисов и приложений в различных сессиях существенно снижает возможность атак, повышает стабильность, надежность и защищенность системы
Изоляция сессии 0 Session 0 Windows Station Desktop Service Session 1 Windows Station Desktop Screen Saver Login 1 st Users Window Secure Сессии в Windows Vista и Windows 7
Совместимость Если приложение работает под Windows Vista, оно будет работать и под Windows 7, но есть нюансы...
«Новое» в Windows 7 Версия операционной системы Версия Internet Explorer Библиотеки (File Libraries) Windows Mail Новые компоненты системного уровня IE DEP Windows Server 64 Bit WOW64 on Windows Core
Версия операционной системы Windows 7 == Windows 6.1? – dwMajorVersion = остается прежней – dwMinorVersion = изменена Исправления – Проверяйте не версию, а возможности системы – Используйте операцию >= – Используйте Version lies
Version Lies Win95VersionLie WinNT4SP5VersionLie Win98VersionLie Win2000VersionLie Win2000SP1VersionLie Win2000SP2VersionLie Win2000SP3VersionLie WinXPVersionLie WinXPSP1VersionLie WinXPSP2VersionLie Win2K3RTMVersionLie Win2K3SP1VersionLie VistaRTMVersionLie
Version Lie Layers Win95 NT4SP5 Win98 Win2000 Win2000SP2 Win2000SP3 WinXP WinXPSP1 WinXPSP2 WinXPSP2VersionLie WinSrv03 WinSrv03SP1 VistaRTM
Layers vs. Version Lies VistaRTM : – DelayAppDllMain – ElevateCreateProcess – FailObsoleteShellAPIs – FaultTolerantHeap – GlobalMemoryStatus2GB – HandleBadPtr – NoGhost – RedirectMP3Codec – VirtualRegistry – VistaRTMVersionLie – WRPDllRegister – WRPMitigation
Версия Internet Explorer Без режима совместимости: – Mozilla/4.0 (compatible; MSIE 8.0 ; Windows NT 6.1; WOW64; Trident/4.0; SLCC2;.NET CLR ;.NET CLR ;.NET CLR ; Media Center PC 6.0) С режимом совместимости: – Mozilla/4.0 (compatible; MSIE 7.0 ; Windows NT 6.1; WOW64; Trident/4.0; SLCC2;.NET CLR ;.NET CLR ;.NET CLR ; Media Center PC 6.0)
Библиотеки (File Libraries) По умолчанию для общих диалоговых панелей: Documents Library Библиотеки – это файлы (а не папки) IFileDialog->GetFolder() + IFileDialog->GetFilename() не корректно работают с библиотеками – GetFolder() возвращает файл Исправление – Используйте IFileDialog->GetResult()
Windows Mail Отсутствующий компонент – заменен на Windows Live Mail или почтовый клиент по выбору Все API работают, за исключением API, отображающих интерфейсы Обработчики протоколов и файлов не зарегистрированы Исправления – Не использовать вызовы устаревших API – Установить почтовый клиент
CoStartOutlookExpress msoert2.dll Section.text (0x43D01000) CALL DWORD PTR [KERNEL32.DLL!GetModuleFileNameW] TEST EAX,EAX JZ 0x43D0A613 LEA EAX,[EBP-0x20C] PUSH EAX CALL DWORD PTR [SHLWAPI.DLL!PathFindFileNameW] TEST EAX,EAX JZ 0x43D0A60C PUSH 'WinMail.exe' PUSH EAX CALL DWORD PTR [MSVCRT.DLL!_wcsicmp]
Новые компоненты системного уровня Реорганизация компонентов системы – Пример: функциональность из 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-битных процессов типа Explorer 16-битный код – Перенос на 32- или 64-бита
WOW64 on Windows Core По умолчанию 32-битный код работать не будет – Active Directory – Active Directory Lightweight Directory Services – Web server – Сторонние приложения Исправления: – Перенос на 64-бита – Установка компонента WOW64
Switchback Секция CompatibilityInfo в манифесте приложения – указание на ОС, для которой создано приложение – Windows SxS Нет секции CompatibilityInfo == совместимость с Vista Поддержка компонентов в Windows 7: – APIs: GetOverlappedResult, ReadFileEx – RPC exception handling, thread pool mgmt. – DWM fail/lock bit blitting
Switchback Manifest
Полезные утилиты
Системные утилиты – MSConfig – Новая информация о системе SysInternals – Process Explorer – Process Monitor Средства отладки – Standard User Analyzer – Application Verifier – Debugging Tools for Windows
Системные утилиты MSConfig – Start | Run | MSConfig System Information – Start | Run | MSInfo32.exe Event Viewer – Start | Run | EventVwr.exe
Process Explorer Полезные возможности – Определение сервисов – Отображение загруженных модулей – Отображение используемых ссылок – Поиск модулей/ссылок ProcExp.exe
Process Monitor Новая версия, совместимая с Vista/WS08 Объединяет RegMon и FileMon Новая возможность – создание образов ProcMon.exe
SysInternals sysinternals/
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
Отладка Расширения отладчика – Команды Windbg, специфичные для AppVerifier Тесты – LUAPriv – Basic Exceptions Handles Heaps Locks Memory TLS – Low Resource Simulation
Новое в 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
ACF – решение проблем совместимости приложений Application Compatibility Factory является лабораторией решения проблем совместимости приложений с клиентскими операционными системами Майкрософт нового поколения – Windows Vista, Windows 7, организованной на базе КОМПАНИИ- ПАРТНЕРА
Ищем партнера в России Цель сотрудничества между Майкрософт и компанией-партнером Application Compatibility Factory – организация профессиональной базы решения проблем совместимости приложений для предприятий, планирующих миграцию на Windows Vista или Windows 7. Если Ваша компания заинтересована в сотрудничестве – просьба отправить короткий на с темой ACF.