1 / 44

Совместимость приложений

Совместимость приложений. Баркан Георгий gbarkan@microsoft.com. Ключевые проблемы. Windows Vista, Windows Server 2008 и Windows 7. Версия операционной системы. Внутренний номер версии в Windows Vista/Server 2008/ Windows 7 (функция GetVersion ) = 6

ifama
Download Presentation

Совместимость приложений

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Совместимость приложений Баркан Георгий gbarkan@microsoft.com

  2. Ключевые проблемы • Windows Vista, Windows Server 2008 и Windows 7

  3. Версия операционной системы • Внутренний номер версии в Windows Vista/Server 2008/Windows 7 (функция GetVersion) = 6 • Версия Internet Explorer - 7.0/8.0 • Версия включена в строку User Agent • Строка User Agent включается в заголовок каждого HTTP запроса • Измените код – нужна проверка типа >= 6 • GetVersionEx()

  4. Версия операционной системы 54% всех ошибок, связанных с совместимостью

  5. User Account Control • Операционная система подвергается существенным рискам когда пользователь работает под учетной записью Administrator • Более простая установка вредоносного кода • Возможность повышения привилегий • Открытость для вредоносного кода • Случайные повреждения, вносимые пользователем

  6. User Account Control • User Account Control • Manifest • Standard User vs. Administrator • Virtualization

  7. User Account Control

  8. Windows Resource Protection • Ключевые файлы операционной системы и ключи реестра могут быть заменены на предыдущие версии или вредоносный код – ущерб стабильности и безопасности системы • Задача Windows Resource Protection – защита ключевых компонентов операционной системы, увеличение стабильности, предсказуемости и надежности системы

  9. Windows Resource Protection • Запрещены обновления защищенных ресурсов • Только программы установки, известные ОС (Windows Update) • ACL для ресурсов • Распространяется на файлы, папки и ключи реестра • Большинство ключевых модулей ОС (EXE и DLL) • Большинство ключей реестра (HKCR) • Папки, используемые ресурсами ОС • Проверка • SfcIsFileProtected() - файлы • SfcIsKeyProtected() – ключи реестра

  10. Mandatory Integrity Control (MIC) • Реализовано в Windows Vista, Windows Server 2008 и Windows 7 • Процессы выполняются на одном из четырех уровней целостности (Integrity Levels): • Системные процессы - System IL • Приложения с привилегиями администратора - High IL • Стандартные приложения - Medium IL • Приложения с ограничениями - Low IL • Защищаемые объекты (файлы, процессы, очереди сообщений и т.п.) задают минимальный уровенб процесса для доступа к ним • Уровень для объектов по умолчанию: Medium

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

  12. Изоляция сессии 0 Session 0 Сессии в Windows XP/2000/2003 Windows Station Desktop Services Возможность атаки 1st User’sWindow 1st User’sWindow 1st User’sWindow Screen Saver Login

  13. Изоляция сессии 0 • Выполнение системных сервисов и пользовательских приложений в сессии 0 может привести к нарушению безопасности • Потенциальная возможность обмена между сервисами и приложениями • Потенциальная возможность повышения привилегий • Выполнение сервисов и приложений в различных сессиях существенно снижает возможность атак, повышает стабильность, надежность и защищенность системы

  14. Изоляция сессии 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

  15. Совместимость • Если приложение работает под Windows Vista, оно будет работать и под Windows 7, но есть нюансы...

  16. «Новое» в Windows 7 • Версия операционной системы • Версия Internet Explorer • Библиотеки (File Libraries) • Windows Mail • Новые компоненты системного уровня • IE DEP • Windows Server 64 Bit • WOW64 on Windows Core

  17. Версия операционной системы • Windows 7 == Windows 6.1? • dwMajorVersion= остается прежней • dwMinorVersion= изменена • Исправления • Проверяйте не версию, а возможности системы • Используйте операцию >= • Используйте Version lies

  18. Version Lies • Win95VersionLie • WinNT4SP5VersionLie • Win98VersionLie • Win2000VersionLie • Win2000SP1VersionLie • Win2000SP2VersionLie • Win2000SP3VersionLie • WinXPVersionLie • WinXPSP1VersionLie • WinXPSP2VersionLie • Win2K3RTMVersionLie • Win2K3SP1VersionLie • VistaRTMVersionLie

  19. Version Lie Layers • Win95 • NT4SP5 • Win98 • Win2000 • Win2000SP2 • Win2000SP3 • WinXP • WinXPSP1 • WinXPSP2 • WinXPSP2VersionLie • WinSrv03 • WinSrv03SP1 • VistaRTM

  20. Layers vs. Version Lies • NoGhost • RedirectMP3Codec • VirtualRegistry • VistaRTMVersionLie • WRPDllRegister • WRPMitigation VistaRTM : • DelayAppDllMain • ElevateCreateProcess • FailObsoleteShellAPIs • FaultTolerantHeap • GlobalMemoryStatus2GB • HandleBadPtr

  21. Версия 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)

  22. Библиотеки (File Libraries) • По умолчанию для общих диалоговых панелей: Documents Library • Библиотеки – это файлы (а не папки) • IFileDialog->GetFolder() + IFileDialog->GetFilename() не корректно работают с библиотеками • GetFolder() возвращает файл • Исправление • ИспользуйтеIFileDialog->GetResult()

  23. Windows Mail • Отсутствующий компонент – заменен на Windows Live Mailили почтовый клиент по выбору • Все API работают, за исключением API, отображающих интерфейсы • Обработчики протоколов и файлов не зарегистрированы • Исправления • Не использовать вызовы устаревших API • Установить почтовый клиент

  24. 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]

  25. Новые компоненты системного уровня • Реорганизация компонентов системы • Пример: функциональность из kernel32.dll и advapi32.dll перенесена в kernelbase.dll • Экпортированные функции перенаправляются в соответствующие библиотеки • Приложения, использующие внутренние функции и структуры могут не работать

  26. IE DEP • Data Execution Prevention (NX) – опция включена по умолчанию • Плагины, которые не совместимы с DEP, могут привести к краху браузера • Исправления: • Используйте DEP-совместимые библиотеки (ATL) • Используйте опцию компоновщика /NXCOMPAT

  27. Windows Server 64 Bit • Драйвера • Перенос и подписание 64-битных драйверов • 32-битный код • Должен работать под WOW64 • IsWow64Process • 32-битные плагины • Перенос на 64-бита для 64-битных процессов типа Explorer • 16-битный код • Перенос на 32- или 64-бита

  28. WOW64 on Windows Core • По умолчанию 32-битный код работать не будет • Active Directory • Active Directory Lightweight Directory Services • Web server • Сторонние приложения • Исправления: • Перенос на 64-бита • Установка компонента WOW64

  29. Switchback • Секция CompatibilityInfoв манифесте приложения – указание на ОС, для которой создано приложение • Windows SxS • Нет секцииCompatibilityInfo == совместимость с Vista • Поддержка компонентов в Windows 7: • APIs: GetOverlappedResult, ReadFileEx • RPC exception handling, thread pool mgmt. • DWM fail/lock bit blitting

  30. 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>

  31. Полезные утилиты

  32. Полезные утилиты • Системные утилиты • MSConfig • Новая информация о системе • SysInternals • Process Explorer • Process Monitor • Средства отладки • Standard User Analyzer • Application Verifier • Debugging Tools for Windows

  33. Системные утилиты • MSConfig • Start | Run | MSConfig • System Information • Start | Run | MSInfo32.exe • Event Viewer • Start | Run | EventVwr.exe

  34. Process Explorer • Полезные возможности • Определение сервисов • Отображение загруженных модулей • Отображение используемых ссылок • Поиск модулей/ссылок • ProcExp.exe

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

  36. SysInternals • http://www.microsoft.com/technet/sysinternals/

  37. Standard User Analyzer • Часть Application Compatibility Toolkit (ACT) • Использует AppVerifier APIs • Более «удобная» версия тестовLuaPriv

  38. Application Verifier • Назначение • Application Verifier – средство проверки неуправляемого кода • Помогает обнаружить ошибки, пропущенные при обычном тестировании приложений • Использование • Графический интерфейс (GUI) • Интерфейс командной строки (CUI) • COM-интерфейсы для скриптинга • AppVerif.exe

  39. Application Verifier - GUI • Включить/Отключить проверки для конкретного приложения • Настройка свойств для каждой проверки • Просмотр протокола проверки • И т.д. 68% падений приложений можно было бы идентифицировать с помощью App Verifier

  40. Отладка • Расширения отладчика • Команды Windbg, специфичные для AppVerifier • Тесты • LUAPriv • Basic • Exceptions • Handles • Heaps • Locks • Memory • TLS • Low Resource Simulation

  41. Новое в Windows 7 • Problem Step Recorder • %windir%\system32\psr.exe • Позволяет выполнить пошаговую запись возникновения проблемы • Создает zip-файл с mht-файлом • Интеграция с Watson

  42. Новое в Windows 7 • Windows Troubleshooting • Встроенные средства решения проблем • Доступ через Action Center • Control Panel | All Items | Action Center | Troubleshooting • Расширяемость • Windows SDK: TSPBuilder.exe • Скрипт на PowerShell

  43. ACF – решение проблем совместимости приложений • Application Compatibility Factory является лабораторией решения проблем совместимости приложений с клиентскими операционными системами Майкрософт нового поколения – Windows Vista, Windows 7, организованной на базе КОМПАНИИ-ПАРТНЕРА

  44. Ищем партнера в России • Цель сотрудничества между Майкрософт и компанией-партнером ApplicationCompatibilityFactory – организация профессиональной базы решения проблем совместимости приложений для предприятий, планирующих миграцию на Windows Vista или Windows 7. • Если Ваша компания заинтересована в сотрудничестве – просьба отправить короткий e-mail на oswru@microsoft.com с темой ACF.

More Related