440 likes | 644 Views
Совместимость приложений. Баркан Георгий gbarkan@microsoft.com. Ключевые проблемы. Windows Vista, Windows Server 2008 и Windows 7. Версия операционной системы. Внутренний номер версии в Windows Vista/Server 2008/ Windows 7 (функция GetVersion ) = 6
E N D
Совместимость приложений Баркан Георгий gbarkan@microsoft.com
Ключевые проблемы • 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()
Версия операционной системы 54% всех ошибок, связанных с совместимостью
User Account Control • Операционная система подвергается существенным рискам когда пользователь работает под учетной записью Administrator • Более простая установка вредоносного кода • Возможность повышения привилегий • Открытость для вредоносного кода • Случайные повреждения, вносимые пользователем
User Account Control • User Account Control • Manifest • Standard User vs. Administrator • Virtualization
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 XP/2000/2003 Windows Station Desktop Services Возможность атаки 1st User’sWindow 1st User’sWindow 1st User’sWindow Screen Saver Login
Изоляция сессии 0 • Выполнение системных сервисов и пользовательских приложений в сессии 0 может привести к нарушению безопасности • Потенциальная возможность обмена между сервисами и приложениями • Потенциальная возможность повышения привилегий • Выполнение сервисов и приложений в различных сессиях существенно снижает возможность атак, повышает стабильность, надежность и защищенность системы
Изоляция сессии 0 Session 0 Session 1 Windows Station Windows Station Desktop Desktop Service 1st User’sWindow 1st User’sWindow Service 1st User’sWindow Screen Saver Login Secure Сессии в WindowsVista и 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 • NoGhost • RedirectMP3Codec • VirtualRegistry • VistaRTMVersionLie • WRPDllRegister • WRPMitigation VistaRTM : • DelayAppDllMain • ElevateCreateProcess • FailObsoleteShellAPIs • FaultTolerantHeap • GlobalMemoryStatus2GB • HandleBadPtr
Версия 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() не корректно работают с библиотеками • 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 <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1"manifestVersion="1.0"> <compatibilityxmlns="urn:schemas-microsoft-com:compatibility.v1"> <application> <!-- Windows 7 supported --> <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/> </application> </compatibility> </assembly>
Полезные утилиты • Системные утилиты • 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 • http://www.microsoft.com/technet/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, организованной на базе КОМПАНИИ-ПАРТНЕРА
Ищем партнера в России • Цель сотрудничества между Майкрософт и компанией-партнером ApplicationCompatibilityFactory – организация профессиональной базы решения проблем совместимости приложений для предприятий, планирующих миграцию на Windows Vista или Windows 7. • Если Ваша компания заинтересована в сотрудничестве – просьба отправить короткий e-mail на oswru@microsoft.com с темой ACF.