Не запускаются программы и Ошибка при инициализации приложения 0xc0000005

Включив компьютер, нашел приятный «подарок» от Microsoft. При запуске почти любой программы, выскакивает сообщение «Ошибка при инициализации приложения 0xc0000005«. Как любой уважающий себя пользователь Windows 7 x64, решил открыть браузер Chrome, чтоб «загуглить» решение этой проблемы, но проблема в том, что Chrome, так же выдает эту ошибку. Впрочем, и родной Internet Explorer вылетает, правда без ошибок.

Добравшись до браузера с другого компьютера, на котором еще не было обновления, причина нашлась – это обновление Windows с номером KB2859537 от 14.08.2013. Ошибка 0xc05 появляется после апдейта, во время запуска большинства 32-х битных приложений под 64-х битной Windows 7.

 

Зачем нужно было обновление KB2859537?

Обновление KB2859537 было призвано исправить четыре уязвимости в ядре Windows, позволяющие несанкционированное повышение прав. Первая уязвимость позволяла загрузить DLL в процесс, обходя механизм защиты ASLR, призванный снизить риск эксплуатации уязвимостей. Три остальные уязвимости связаны с ошибками в проверке адресов ядром Windows, что приводит к повреждению памяти и позволяет запустить произвольный код в режиме ядра. После этого повышение прав уже не проблема.

 

Почему перестали запускаться программы?

Апдейт KB2859537 заменяет много системных файлов, в том числе файлов ядра. Если оригинальное ядро было модифицировано, его замена может привести к проблемам. У такой модификации есть две наиболее вероятные причины:

  1. Вредоносные программы — это не первый случай, когда обновление ядра выявляет наличие проблем в системе, 3.5 года назад случайно обнаружился руткит Alureon.
  2. Нелегальная активация — этот момент отлично разобрал участник конференции OSZone simplix, который не понаслышке знаком со сборками Windows, а также является автором полезной программы AntiSMS для лечения вирусов и троянов.

Позволю себе процитировать его пост в форуме, выделив жирным то, в чем заключается проблема.

Проблема возникает из-за того, что во взломанных системах используется старая версия ntoskrnl.exe, которую патчер (или сборка) переименовывают в xNtKrnl.exe и прописывают в поле kernel через bcdedit. Это нужно для того, чтобы система работала с драйвером, эмулирующим SLIC-таблицу. Старая версия ядра не совместима с новыми файлами подсистемы Wow64, из-за этого в 64-битной системе 32-битные программы перестают запускаться.

Вины Microsoft здесь нет, они просто не тестировали обновления на ломаных сборках. К слову, если пропатчить новую версию ядра, то система будет работать как положено — это означает, что обновление не нацелено на борьбу с пиратскими системами, просто так сложились звёзды.

Кстати, simplix ранее предупреждал читателей блога о возможных проблемах сборок, в которых заменяются ресурсы.

 

Решение проблемы

Если у вас возникнет, такая же проблема, и Вы каким то чудом добрались до браузера и нашли этот пост, вот решение проблемы:

  1. Открыть панель управления
  2. Запустить «Программы и компоненты»
  3. Перейти в «Просмотр установленных обновлений»
  4. Найти обновление KB2859537 и удалить его

Или открываем командную строку и запускаем команду: wusa /uninstall /kb:2859537

 

Откат к точке восстановления системы

Запустите восстановление системы и откатитесь к точке до возникновения проблемы. Если не получается или система не загружается, войдите в среду восстановления Windows 7 или Windows 8 и выполните восстановление системы оттуда. И да, эта ситуацию действительно спасает откат.

 

Удаление обновления KB2859537 из среды восстановления с помощью DISM

Этот более сложный вариант имеет смысл применять только в том случае, если первыми двумя способами удалить обновление не удалось.

  1. Загрузитесь в среду восстановления Windows 7 или Windows 8.
  2. Запустите командную строку и определите букву диска, на котором установлена Windows.
  3. В командной строке выполните: DISM /Image:D:\ /Get-Packages где D — буква диска с системой, которую вы определили на предыдущем шаге.
  4. В результатах команды найдите пакет, содержащий в названии KB2859537.
  5. Выделите имя пакета левой кнопкой мыши и нажмите правую кнопку мыши, чтобы скопировать его в буфер обмена.
  6. В командной строке наберите: DISM /Image:D:\ /Remove-Package /PackageName: и нажмите правую кнопку мыши, чтобы вставить имя пакета.
  7. Должна получиться примерно такая команда: DISM /Image:D:\ /Remove-Package /PackageName:Package_for_KB2859537~31bf3856ad364e35~x86~~6.1.1.3
  8. Нажмите Enter, чтобы выполнить команду и удалить пакет.

Примечание. В случае успешного удаления, KB2859537 исчезнет из списка установленных обновлений в панели управления. Однако в журнале установленных обновлений оно будет присутствовать, поскольку установка производилась.

Вам может также понравиться...

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *


Срок проверки reCAPTCHA истек. Перезагрузите страницу.