Translate

тест скорости интернета

пятница, 24 июля 2015 г.

Не отображается содержимое USB-накопителей

Итак, некоторое время назад я столкнулся с тем, что у меня перестало показываться содержимое USB-накопителей - флешек, внешних жестких дисков, при этом сами накопители монтировались в системе нормально. Содержимое не отображалось только на моем компьютере, на других компьютерах оно нормально отображалось.

Меня совершенно не радовала перспектива переустанавливать операционную систему, поэтому я занялся поиском лекарства.
Просмотрев множество различных рекомендаций от бредовых до более-менее адекватных, я пришел к выводу, что эта проблема возникает в следующих ситуациях:
1. Вирусная деятельность;
2. Системные проблемы Windows, некорректная работа стороннего ПО;
3. Проблема с драйверами USB.

Я буду рассматривать ситуации, когда работоспособность самого носителя не вызывает сомнений.

Начнем рассмотрение по порядку.
1. Вирусная активность
В случае подозрений на вирусную активность, прежде чем проводить какие-либо процедуры по восстановлению доступности информации на USB-носителях, необходимо проверить критически важные области операционной системы - оперативная память, каталоги \windows\system32 (\windows\syswow64 - для 64-битных систем, его надо ставить в проверку вместе с папкой system32), папка профилей пользователей (Users, Documents and Settengs), точки восстановления системы и корневой каталог USB-носителя (желательно).
Провести проверку можно двумя утилитами:
1. Doctor Web CureIt: http://www.freedrweb.ru/cureit/
2. Kaspersky Antivirus Removal Tool: http://www.kaspersky.ru/antivirus-removal-tool

Самое лучшее - проводить проверку с помощью LiveCD, поскольку это гарантированно защищает от запуска вредоносного содержимого!

После проведения проверки на вирусы вставляем носитель и смотрим, что происходит. Если содержимое опять не выводится, смотрим, что показывает информация о диске - общий объем диска, занятое место и свободное место.
Если занятого места показывается намного меньше, чем должно быть на самом деле, значит, скорее всего, данные были повреждены вирусом. Восстановить такие данные бывает очень сложно или не возможно.
Если отображаемые данные похожи на правду, надо сделать скрытые и системные папки видимыми (windows по умолчанию их скрывает):
1. Windows XP: Пуск -> Мой компьютер -> Меню Сервис -> Свойства папки -> Вкладка вид;
2. Windows 7: Пуск -> Панель Управления -> Оформление и персонализация -> Параментры папок -> Вкладка Вид.
Сделать следующее:
Скрывать защищенные системные файлы (рекомендуется) — снимаем галочку;
Показывать скрытые файлы и папки — устанавливаем переключатель.
Если после этого содержимое носителя стало отображаться, значит цель достигнута и дело осталось за малым - вычистить остатки от вируса. Все подозрительные файлы с расширениями bat, cmd, lnk, autorun.inf, если Вы их не создавали сами, удаляйте без сожалений! Также нужно удалить папку Recycler со всем содержимым - там никаких нужных для Вас данных нет, а вирусы могут прятаться.
Это можно сделать в командной строке (Пуск -> Выполнить. Набрать cmd и нажать Ок):
del /f e:\*.bat
del /f e:\*.cmd
del /f e:\*.lnk
del /f e:\autorun.*
где е: - буква, присвоенная Вашему USB-накопителю.

Некоторые вирусы прячут файлы на флешках оригинальным способом - создают папку с названием ".." (только две точки), поэтому эту папку нигде - ни в проводнике, ни в программах типа Total Commander не видно. В этом случае поможет следующее лекарство:
Если содержимое носителя не отображается, то надо в командной строке выполнить:
dir e:
здесь e: - буква, назначенная накопителю.
Вы увидите имя папки похожее на E2E2~1.
Выполните следующую команду: ren e:\E2E2~1 newfolder, где newfolder - имя папки, задаваемое Вами. Имя папки желательно задавать короткое (не более 8 символов) и латинскими буквами.
После этого выполнить следующие команды
attrib -s -h /s /d e:\*.*
rd e:\Recycler /s /q
где e: - буква Вашего носителя.

2. Системные проблемы Windows, некорректная работа стороннего ПО


При поиске информации о возможных ситуациях, приводящих к проблемам с отображением содержимого USB-накопителей, мне несколько раз попадались сообщения о том, что к таким проблемам иногда приводит удаление программ для работы с дисками, например, Partition Magic (это не антиреклама, просто из многообразия различных сообщений, ссылка на данную программу мне запомнилась). У меня как раз была установлена программа Partition Magic Free Edition. После её удаления как раз обнаружилась проблема с отображением информации на флешках.
Я не могу сказать, что корень проблемы у меня был именно в этой программе, поскольку проводил полную чистку системы от разных программ и флешкой довольно длительное время на этом компьютере не пользовался.
К слову сказать, антивирус у меня стоит лицензионный и, когда обнаружились проблемы с доступом к информации на флешках, я сразу подумал на вирус и провел проверку несколькими портативными антивирусными утилитами с обновленными базами.
  1. Здесь мы рассмотрим ситуацию, когда съемные носители определились и в "Управлении устройствами" (Device manager) - показывает, что все устройства работают нормально и конфликтов нет, но к примеру в Проводнике Windows устройство отсутствует.
    • Проверьте назначена ли буква в оснастке "Управление дисками": Кликните ПУСК --> Выполнить (либо сочетание клавиш Win+R) diskmgmt.msc
    • Если установлен SPTD (входит в состав Alcohol 52/100% и Daemon Tools) - переустановите его.
    • Попробуйте применить этот твик реестра: Windows Registry Editor Version 5.00

      [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer]
      "NoDrives"=dword:00000000
      "NoViewOnDrive"=dword:00000000

      [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer]
      "NoDrives"=dword:00000000
      "NoViewOnDrive"=dword:00000000

      [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E965-E325-11CE-BFC1-08002BE10318}]
      "UpperFilters"=-
      "LowerFilters"=-

      [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E967-E325-11CE-BFC1-08002BE10318}]
      "UpperFilters"=-
      "LowerFilters"=-

      [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E980-E325-11CE-BFC1-08002BE10318}]
      "UpperFilters"=-
      "LowerFilters"=-

      [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\usbstor]
      "Start"=dword:00000003 
Для того, чтоб применить этот твик, создайте файл с любым названием и с расширением reg. Например, так: tweak.reg

Вот еще один вариант приведенного выше твика. Эти параметры взяты с рабочего компьютера (Windows 7), на котором все USB устройства работают нормально:

Windows Registry Editor Version 5.00 

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E965-E325-11CE-BFC1-08002BE10318}]
"Class"="CDROM"
"ClassDesc"="@%SystemRoot%\\System32\\StorProp.dll,-17001"
@="DVD/CD-ROM drives"
"IconPath"=hex(7):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,\
  74,00,25,00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,69,\
  00,6d,00,61,00,67,00,65,00,72,00,65,00,73,00,2e,00,64,00,6c,00,6c,00,2c,00,\
  2d,00,33,00,30,00,00,00,00,00
"Installer32"="storprop.dll,DvdClassInstaller"
"EnumPropPages32"="storprop.dll,DvdPropPageProvider"
"SilentInstall"="1"
"NoInstallClass"="1"
"LowerFilters"=hex(7):69,00,61,00,53,00,74,00,6f,00,72,00,46,00,00,00,00,00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E967-E325-11CE-BFC1-08002BE10318}]
"Class"="DiskDrive"
"ClassDesc"="@%SystemRoot%\\System32\\StorProp.dll,-17000"
@="Disk drives"
"IconPath"=hex(7):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,\
  74,00,25,00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,69,\
  00,6d,00,61,00,67,00,65,00,72,00,65,00,73,00,2e,00,64,00,6c,00,6c,00,2c,00,\
  2d,00,33,00,32,00,00,00,00,00
"Installer32"="StorProp.Dll,DiskClassInstaller"
"NoInstallClass"="1"
"SilentInstall"="1"
"UpperFilters"=hex(7):50,00,61,00,72,00,74,00,4d,00,67,00,72,00,00,00,66,00,6c,\
  00,74,00,73,00,72,00,76,00,00,00,00,00
"LowerFilters"=hex(7):69,00,61,00,53,00,74,00,6f,00,72,00,46,00,00,00,00,00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E980-E325-11CE-BFC1-08002BE10318}]

"Class"="FloppyDisk"
"ClassDesc"="@%SystemRoot%\\System32\\SysClass.Dll,-3015"
@="Floppy disk drives"
"IconPath"=hex(7):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,\
  74,00,25,00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,69,\
  00,6d,00,61,00,67,00,65,00,72,00,65,00,73,00,2e,00,64,00,6c,00,6c,00,2c,00,\
  2d,00,32,00,38,00,00,00,00,00
"SilentInstall"="1"

"NoInstallClass"="1"


Классы реестра, отвечающие за устройства хранения USB.

Классы находятся в ветке реестра: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\

{36FC9E60-C465-11CF-8056-444553540000} - Universal Serial Bus controllers
{4D36E967-E325-11CE-BFC1-08002BE10318} - Disk drives
{4D36E965-E325-11CE-BFC1-08002BE10318} - DVD/CD-ROM drives
{4D36E980-E325-11CE-BFC1-08002BE10318} - Floppy disk drives


3. Проблема с драйверами USB


  1. Здесь мы рассмотрим ситуацию, когда:
    • Само устройство РАБОТАЕТ. Это Вы проверили на другом компьютере.
    • При подключении же именно к Вашему компьютеру, оно либо не определяется вообще, либо определяется неправильно, либо даже правильно определяется, но не работает как нужно.
    • Вы уверены, что установлены все необходимые драйверы всех устройств подключенных к системе.
    • Вы уверены, что переустановка и обновление драйверов USB контроллеров и устройств USB сделаны корректно.
    • В "Управлении устройствами" (Device manager) - показывает, что все устройства работают нормально и конфликтов нет. 

    Как правило такая ситуация может возникнуть если USB 2.0 Enhanced Host Controller использует одно прерывание вместе с каким-либо другим устройством (IRQ Sharing), например звуковым или видео. В этом случае нарушается правильная передача параметров (FDO, PDO) от драйверов USB (usbhub.sys, usbstor.sys, usbport.sys) к драйверам логических устройств, например от usbstor.sys в disk.sys в случае "USB 2.0 mass storage device".
  2. Физически отключите все USB устройства от компьютера и загрузите компьютер в БЕЗОПАСНОМ РЕЖИМЕ (Safe Mode) - нажмите F8 при старте компьютера - с правами локального Администратора.
  3. Удаление скрытых устройств
    • Кликните ПУСК --> Выполнить (либо сочетание клавиш Win+R). Напечатайте cmd и нажмите OK - должно появиться окно командной строки.
    • В командной строке, напечатайте следующее (без кавычек) и нажимайте Enter после каждой команды:

                "set DEVMGR_SHOW_DETAILS=1"
                "set DEVMGR_SHOW_NONPRESENT_DEVICES=1"
                "start devmgmt.msc"

      Должен появиться "Device Manager", или "Управление устройствами" в русской версии.
    • Кликните View (Вид) --> Show hidden devices (Показать скрытые устройства).
    • Если Вы увидели в развернутых классах Ваше устройство (включая посеревшие) кликните на нем правой кнопкой и в выпавшем меню кликните Uninstall (Удалить). 

    Например для USB 2.0 HDD надо удалить все "USB 2.0 Storage Device USB Device" из класса "Disk Drives", все "USB mass StorageDevice" из класса "USB controllers" и серые "Generic Volume" из класса "Storage Volumes".

    Будте осторожны, чтобы не удалить устройства, обслуживающие Ваши жесткие диски с которых грузится Windows.
  4. Удаление всех oem*.inf файлов

    В командной строке, напечатайте следующее (без кавычек) и нажимайте Enter после каждой команды:

              "cd \windows\inf"
              "ren infcache.1 *.old"
              "ren oem*.inf *.old"
              "del C:\windows\setupapi.log"

    ВНИМАНИЕ! Если у Вас установлено несколько копий Windows, необходимо проделать эту процедуру ДЛЯ ВСЕХ установок Windows.
  5. Удаление всех ключей в ветке реестра HKEY_LOCAL_MACHINE/Enum/USB которые начинаются с VID

    Удаление VID_.... ключей из реестра приведет к распознаванию USB устройств заново при рестарте системы.

    ВНИМАНИЕ: Если у Вас USB мышь или клавиатура, не удаляйте их ветки реестра, иначе Windows при рестарте может глюкануть. Определить эти ветки можно кликнув на "+" VID_.... ключа и кликнуть на ключ ступенькой ниже. Если справа в значении переменной DeviceDesc Вы увидите что-то типа "Human Interface Device" или HID - то это как раз мышь или клавиатура.

    • В командной строке, напечатайте regedit и нажмите OK - должен открыться редактор реестра.
    • Перейдите на HKEY_LOCAL_MACHINE\System\CurrentControlSet\Enum\USB.

      Сведения о USB устройствах, которые когда либо были подключены располагаются в ключах типа "Vid_0000&Pid_0000", необходимо их все удалить (кроме HID).
    • Правой кнопкой мыши на каждом из этих ключей (типа "Vid_0000&Pid_0000") --> Permissions (Разрешения) -> для группы Everyone (Все) назначить Full Control (полный доступ) --> Применить.
    • Удалите все (кроме HID) VID_.... ключи.
    • Закройте редактор реестра, завершите работу и полностью выключите компьютер (из розетки или выключить сетевой фильтр). 

  6. Подключение устройства к компьютеру: 
    • Пока компьютер ВЫКЛЮЧЕН присоедините Ваше устройство к USB порту НЕ ПОДКЛЮЧАЯ ПИТАНИЯ К ВАШЕМУ USB УСТРОЙСТВУ (если имеется отдельное питание).
    • ПОСЛЕ того, как Windows ПОЛНОСТЬЮ загрузиться и прекратит бешено шуршать винчестером (можно проследить по диодному индикатору HDD на лицевой панели системного блока), подсоединяем питание к Вашему устройству.
    • Должен начаться процесс детектирования нового устройства и полная переустановка драйверов для него.
    • Если при подключении ранее установленного устройства USB, Windows запросит установить драйвер, укажите следующие пути: WINDOWS\system32\ , WINDOWS\INF\ , WINDOWS\Driver Cache\i386\ , а для Windows Vista и Windows 7 еще и WINDOWS\WinSxS\ 
Еще один вариант восстановления драйверов. Выполняется в командной строке, запущенной с правами администратора:
pnputil.exe -a C:\WINDOWS\System32\DriverStore\FileRepository\intelpep.inf_amd64_b217eba3b9eb6ae4\intelpep.inf
pnputil.exe -a C:\WINDOWS\WinSxS\amd64_usb.inf_31bf3856ad364e35_6.3.9600.16442_none_bbe00802e24ab498\usb.inf
pnputil.exe -a C:\WINDOWS\WinSxS\amd64_prnms003.inf_31bf3856ad364e35_6.3.9600.17238_none_43c7d0bfa7ab0231\prnms003.inf
pnputil.exe -a C:\WINDOWS\WinSxS\amd64_sdbus.inf_31bf3856ad364e35_6.3.9600.17031_none_62d40f129e2862c0\sdbus.inf
pnputil.exe -a C:\WINDOWS\WinSxS\amd64_sdbus.inf_31bf3856ad364e35_6.3.9600.17329_none_62e6e7009e1908fc\sdbus.inf
pnputil.exe -a C:\WINDOWS\WinSxS\amd64_usbhub3.inf_31bf3856ad364e35_6.3.9600.17195_none_e694f5dd21042778\usbhub3.inf
pnputil.exe -a C:\WINDOWS\WinSxS\amd64_usbhub3.inf_31bf3856ad364e35_6.3.9600.17238_none_e6d8d82920d0c8fe\usbhub3.inf
pnputil.exe -a C:\WINDOWS\WinSxS\amd64_usbport.inf_31bf3856ad364e35_6.3.9600.17116_none_aece54f1d74a3634\usbport.inf
pnputil.exe -a C:\WINDOWS\WinSxS\amd64_usbport.inf_31bf3856ad364e35_6.3.9600.17195_none_ae76d547d78bfc65\usbport.inf
pnputil.exe -a C:\WINDOWS\WinSxS\amd64_usbstor.inf_31bf3856ad364e35_6.3.9600.17031_none_3977a1056ba46c29\usbstor.inf
pnputil.exe -a C:\WINDOWS\WinSxS\x86_prnms003.inf_31bf3856ad364e35_6.3.9600.17238_none_e7a9353bef4d90fb\prnms003.inf

Иногда неработоспособность USB-накопителей появляется после установки обновлений, когда обновляется файл usbstor.inf. В этом случае можно попробовать выполнить следующую команду в командной строке, запущенной от имени Администратора:

pnputil.exe -f -d usbstor.inf
pnputil.exe -a C:\WINDOWS\WinSxS\amd64_usbstor.inf_31bf3856ad364e35_6.3.9600.17331_none_3977a6b76ba4639e\usbstor.inf


Используемые ссылки:

Полезные статьи:
1. Восстановление флешек: http://geektimes.ru/post/98339/
2. Коды ошибок диспетчера устройств: https://support.microsoft.com/ru-ru/kb/310123/ru

Полезные программы:
1. Ремонт программных проблем с USB-накопителями: MK Registry & USB Fixer 2.0.1
2. Автоматическая диагностика и устранение проблем с USB в Windows: FixIt
3. Автоматическое устранение проблем с USB: FixIt WinUSB
4. Скрипт AVZ для обнаружения наиболее часто используемых уязвимостей: http://df.ru/~kad/ScanVuln.txt
5. Программа для стирания следов подключения USB-дисков из реестра Windows: usboblivion64-1.10.2.0
6. Как исправить проблемы с устройствами: не работает, не найдено: FixIt


Приложения

Скрипт AVZ для обнаружения наиболее часто используемых уязвимостей

{ Скрипт AVZ для обнаружения наиболее часто используемых уязвимостей. Версия 2.34
  Автор: Андрей Кондауров, участник форума defendium.info (AndreyKa)
 Скрипт может свободно распространяться, при условии сохранения данного комментария
  Постоянный адрес скрипта: http://dataforce.ru/~kad/ScanVuln.txt
}
var
IOSVer, ICounter : Integer;
A00,A01,A02,A03,A04,A05,A06,A07,A08,A09,A10,A11,A12,A13,A14,A15,A16,A17,A18,A19,A20,A21,A22,A23,A24,A25,
A26,A27,A28,A29,A30,A31,A32,A33,A34,A35,A36,A37,A38,A39,A40,A41,A42,A43,A44,A45,A46,A47,A48,A49,A50,A51,
Dot, notDot : string;
noSP, bRU : boolean;
D01,D02,D03,D04,D05,D06,D07,D08,D09,D10,D11,D12,D13,D14 : string;

function IsFileBuldLow(VulnFileName: string; IMinVer: integer) : boolean;
var
ARes : string;
IPos, IBuild : Integer;
begin
  ARes := GetFileVersion(VulnFileName, 6);
  IPos := Pos('.', ARes);
  while IPos > 0 do
  begin
    Delete(ARes, 1, IPos);
    IPos := Pos('.', ARes);
  end;
  Result := False; 
  if ValidInt(ARes) then
  begin
    IBuild := StrToInt(ARes);
    if IBuild < IMinVer then
      Result := True
  end;
end;

function IsFileSubVerLow(VulnFileName:string; IMinSubVer:Extended):boolean;
var
ARes: string;
IPos: Integer;
begin
  ARes := GetFileVersion(VulnFileName, 6);
  IPos := Pos('.', ARes);
  Delete(ARes, 1, IPos);
  IPos := Pos('.', ARes);
  Delete(ARes, 1, IPos);
  Result := False;
  ARes := NormalizeDot(ARes);
  if ValidFloat(ARes) then
    if StrToFloat(ARes) < IMinSubVer then
      Result := True;
end;

function NormalizeDot(aStr : string) : string;
begin
  Result := StringReplace(aStr, notDot, Dot);
end;

Procedure WinVuln;
var
AOSVer, ASP, AResult, ARes, ID, AFName, URL : string;
IMinVer, IEVer : integer;
IMinSubVer: Extended;
FS : TFileSearch;
begin
 if not IsNT then exit;
  // Определить версию ОС
  AOSVer := RegKeyStrParamRead('HKLM','SOFTWARE\Microsoft\Windows NT\CurrentVersion','CurrentVersion');
  if AOSVer < '5.0' then exit;
  ASP := RegKeyStrParamRead('HKLM','SOFTWARE\Microsoft\Windows NT\CurrentVersion','CSDVersion');
  if AOSVer = '5.0' then
    if ASP <> 'Service Pack 4' then
      AddToLog(A01)
    else
    begin
 IOSVer:=4;
 AddToLog(A02);
 AddToLog('http://support.microsoft.com/lifecycle/?p1=3071'+#13#10);
 noSP:=true;
 ICounter:=ICounter+1;
    end;
  if AOSVer = '5.1' then
    if ASP < 'Service Pack 3' then
     begin
 AddToLog(A03+#13#10);
 noSP:=true;
 ICounter:=ICounter+1;
    end
    else
 if ASP = 'Service Pack 3' then IOSVer := 13;
  if AOSVer = '5.2' then
    if ASP < 'Service Pack 2' then
    begin
      AddToLog(A04);
      noSP:=true;
      ICounter:=ICounter+1;
    end
    else
      if ASP = 'Service Pack 2' then IOSVer := 22;
  if AOSVer = '6.0' then
  begin
    ASP := RegKeyStrParamRead('HKLM','SOFTWARE\Microsoft\Windows NT\CurrentVersion','CurrentBuild');
    if ASP < '6002' then
    begin
      if ASP = '6000' then
       AddToLog(A05);
      if IsWOW64 then
        begin
 if ASP = '6000' then
   AddToLog(A00+'86d267bd-dfcd-47cf-aa76-dc0626dcdf10')
 else
   AddToLog(A32);
 AddToLog(A00+'8ad69826-03d4-488c-8f26-074800c55bc3');
        end
      else
        begin
 if ASP = '6000' then
   AddToLog(A00+'F559842A-9C9B-4579-B64A-09146A0BA746')
 else
   AddToLog(A32);
 AddToLog(A00+'891ab806-2431-4d00-afa3-99ff6f22448d');
        end;
      AddToLog('');
      noSP:=true;
      ICounter:=ICounter+1;
    end;
    if ASP = '6001' then  IOSVer := 31;
    if ASP = '6002' then  IOSVer := 32;
  end;
  if AOSVer = '6.1' then
  begin
    IOSVer := 40;
    if IsWOW64 then
    begin
      SetupAVZ('X64R=NN');
      ASP := RegKeyStrParamRead('HKLM','SOFTWARE\Microsoft\Windows NT\CurrentVersion','CSDVersion');
      SetupAVZ('X64R=YY');
    end;
    if ASP = 'Service Pack 1' then
      IOSVer := 41
    else
    begin
      AddToLog(A48);
      if IsWOW64 then
 AddToLog('http://download.microsoft.com/download/0/A/F/0AFB5316-3062-494A-AB78-7FB0D4461357/windows6.1-KB976932-X64.exe'+#13#10)
      else
 AddToLog('http://download.microsoft.com/download/0/A/F/0AFB5316-3062-494A-AB78-7FB0D4461357/windows6.1-KB976932-X86.exe'+#13#10);
      noSP:=true;
      ICounter:=ICounter+1;
    end;
  end;

  if IOSVer = 0 then
     exit; // не удалось определить версию SP ОС или ОС не поддреживается
  if IsWOW64 then IOSVer := IOSVer + 100;

  FS := TFileSearch.Create(nil);

  // MS08-067 ссылки на MS12-054
  IMinVer := 0;
  case IOSVer of
  4  : begin IMinVer := 7203; ID:='E22EB3AE-1295-4FE2-9775-6F43C5C2AED3'; end; // MS08-067
  13 : begin IMinVer := 5694; ID:='5403c78c-6b87-4788-89c3-0140b887ec6f'; end;
  22 : begin IMinVer := 4392; ID:='2847952f-0234-4cf6-820a-1f0a285b2fb7'; end;
  122: begin IMinVer := 4392; ID:='3833d768-1dab-4a85-822f-87c7fa3db261'; end;
  end;
  if IMinVer <> 0 then
    if IsFileBuldLow('%System32%\Netapi32.dll', IMinVer) then
  begin
 AddToLog(A07);
 AddToLog(A00+ID+#13#10);
 ICounter:=ICounter+1;
  end;

  // MS11-020, для Windows 7 ссылки на MS11-048
  IMinVer := 0;
  ID := '';
  case IOSVer of
   4  : begin IMinVer:=7365; ID:='267ce982-54a0-418f-ad52-e4963610f714'; end; // MS10-012
   13 : begin IMinVer:=6082; ID:='CCB08A8A-F4D9-4320-8FFB-3FD4FE217987'; end;
   22 : begin IMinVer:=4832; ID:='64C550D4-C927-4382-91E1-473ED6790819'; end;
   122: begin IMinVer:=4832; ID:='EF62DB94-4F72-4245-AC9F-6391035E2516'; end;
   32 : ID:='D6EDDFF4-A242-4DEC-9D84-72891DB2B754';
   132: ID:='2878C587-6544-40B4-9288-FC3B3CE1128D';
   41 : ID:='CF9E5ECD-68F7-4982-B4ED-BE80859B757C';
   141: ID:='2707650A-604C-4044-ACC4-07A30B5640D8';
  end;
  AResult:='%System32%\drivers\Srv.sys';
  if IsWOW64 then SetupAVZ('X64R=NN');
  if FileExists(AResult) and (ID<>'') then
    if FS.FindFirst(AResult) then
      if ((IMinVer=0) and (FS.FileLastWriteTime<StrToDateTime(D01))) or ((IMinVer>0) and IsFileBuldLow(AResult, IMinVer)) then
       begin
 AddToLog(A08);
 AddToLog(A00+ID+#13#10);
 ICounter:=ICounter+1;
       end;
  if IsWOW64 then SetupAVZ('X64R=YY');

  // MS10-013
  IMinVer := 0;
  case IOSVer of
  4:begin
      AResult := RegKeyStrParamRead('HKLM','SOFTWARE\Microsoft\DirectX','Version');
      AResult := Copy(AResult, 3, 2);
      if ValidInt(AResult) then
 case StrToInt(AResult) of
 7: begin IMinVer := 738; ID := '16787c93-2c95-4c13-8492-be1db9d18146'; end;
 9: begin IMinVer := 913; ID := '59a8bc19-02bb-4800-bac1-464f59e1cb7b'; end;
 end;
    end;
  13 : begin IMinVer := 5908; ID := '7ab53be3-3f42-4e61-a2bc-3ed41d8736ff'; end;
  22 : begin IMinVer := 4625; ID := '983c5484-6321-4765-97ec-8d42d42d1f70'; end;
  122: begin IMinVer := 4625; ID := '7dc20252-6091-407b-befc-c25e8f5d3fb0'; end;
  end;
  if IMinVer <> 0 then
    if IsFileBuldLow('%System32%\Quartz.dll', IMinVer) then
  begin
 AddToLog(A09);
 AddToLog(A00+ID+#13#10);
 ICounter:=ICounter+1;
  end;

  // MS14-051 ссылки на MS14-052 rhjvt
  ARes := RegKeyStrParamRead('HKLM','SOFTWARE\Microsoft\Internet Explorer','Version');
  AResult := Copy(ARes, 1, 1);
  if AResult = '9' then
    case Copy(ARes, 3, 2) of
      '10': AResult := '10';
      '11': AResult := '11';
    end;
  ID := '';
  if ValidInt(AResult) then
  begin
   IEVer:=StrToInt(AResult);
   case IEVer of
   7: case IOSVer of
      22: ID := '3dd813bd-11da-4d9c-b09d-b5236f9fe2e1';
      122:ID := 'a90838a2-6cfe-42fc-87df-8633b747c5d9';
 end;
   8: case IOSVer of
      22: ID := '1611d668-d05b-472b-b321-e9c01ffb0c16';
      122:ID := 'd80d93bf-eb0b-47fe-a7e7-e0c946b58c83';
 end;
   9: case IOSVer of
      32: ID := 'dbe758a7-b720-4155-9bee-04aad0343d6e';
      132:ID := 'e5af2769-859d-4f68-8bb7-9977293cbcf4';
      41: ID := 'dc7f0d67-dd86-4ada-931a-395ed4f13400';
      141:ID := '392340b1-6c1c-4247-b7a7-ac9ab5a8f5d2';
 end;
   10: case IOSVer of
      41: ID := '25b9735d-9df0-477b-a34f-90c62d2f9c33';
      141:ID := '0062d37f-5dc4-44e5-994a-0ac37358fd7b';
 end;
   11: case IOSVer of // ссылки на MS14-051
      41: ID := '6D99E879-DF98-4915-ADD6-99FD1B61A22B';
      141:ID := '4365B653-ACFB-4503-91EE-F8C86CD6AF7F';
 end;
   end;
   if ((IEVer=6) or
      ((IEVer=7) and (IOSVer=13)) or
      ((IEVer=7) or (IEVer=8)) and ((IOSVer=32) or (IOSVer=132) or (IOSVer=41) or (IOSVer=141))) then
     begin
        ICounter:=ICounter+1;
        if IOSVer=13 then
        begin
           if bRU = true then
 AddToLog('Установите Internet Explorer 8'+#13#10+
 'https://ie.yandex.ru/'+#13#10)
            else
 AddToLog('Install Internet Explorer 8'+#13#10+
 'https://ie.yandex.ru/download/?key=en'+#13#10);
        end
        else
 AddToLog(A46+#13#10);
     end;

   if FS.FindFirst('%System32%\Mshtml.dll') then
    if ID <> '' then
    begin
      if ((FS.FileLastWriteTime<StrToDateTime(D14)) and (IEVer=11)) then // kb2929437
      begin
 case IOSVer of
   41: ID := 'http://www.microsoft.com/en-US/download/details.aspx?id=42463';
  141:ID := 'http://www.microsoft.com/en-US/download/details.aspx?id=42482';
 end;
 if bRU then ID := StringReplace(ID, 'en-US', 'ru-ru');
 AddToLog(A10);
 AddToLog(ID+#13#10);
 ICounter:=ICounter+1;
      end
      else
      if (FS.FileLastWriteTime<StrToDateTime(D02)) then
      begin
 AddToLog(A10);
 AddToLog(A00+ID+#13#10);
 ICounter:=ICounter+1;
      end;
    end
    // ID = ''
    else if ((IEVer=8) and (IOSVer=13) and bRU and (FS.FileLastWriteTime<StrToDateTime(D02))) then
    begin
 AddToLog(A10);
 AddToLog('https://cloud.mail.ru/public/84f1304e1c7c/X86-ru-ie8-windowsxp-kb2977629.exe'+#13#10);
 ICounter:=ICounter+1;
    end;
  end;

  //http://www.microsoft.com/technet/security/advisory/2458511.mspx
  AResult:=NormalFileName('%USERPROFILE%\KB2458511.CSS');
  if FileExists(AResult) then
  begin
   DeleteFile(AResult);
   RegKeyParamDel('HKCU','Software\Microsoft\Internet Explorer\Styles','User Stylesheet');
   RegKeyIntParamWrite('HKCU','Software\Microsoft\Internet Explorer\Styles','Use My Stylesheet',0);
   AResult:=NormalFileName('%USERPROFILE%\CSS-backup.reg');
   if FileExists(AResult) then
   begin
    ExecuteFile('Regedit.exe','/c "'+AResult+'"',0,5000,true);
    DeleteFile(AResult);
   end;
  end;

  // MS13-090
  ID := '';
  if NoKillBit('{19916e01-b44e-4e31-94a4-4696df46157b}') then
  begin
    case IOSVer of
     13:  ID := '60906192-8a5b-459a-b8e5-6b65f1da5799';
     22:  ID := 'a36d3168-c5b4-4cba-874e-32abf387b54a';
     122: ID := 'fddbd288-827e-4d04-ba30-1f044a168ee0';
     32: ID := 'b35f44ce-4af5-4be2-9e45-f400d0d3f21b';
     132: ID := '8c691d27-9cb2-4695-97da-d86b62e10835';
     41: ID := '787d0729-a3c5-4312-a30e-5a211a22de77';
     141: ID := 'dd7cc36b-bb4e-4548-8d9c-43c6dd6cb78e';
    end;
   if ID <> '' then
   begin
      AddToLog(A11);
      AddToLog(A00+ID+#13#10);
      ICounter:=ICounter+1;
   end;
   end;

  // MS10-042
  IMinVer := 0;
  case IOSVer of
  13 : begin IMinVer := 5997; ID := '7C2122BB-0ECF-4467-A3BA-6FB862F603C5'; end;
  22 : begin IMinVer := 4726; ID := 'CD4363B2-D7A7-4FFF-8BCD-6FD02BD1AC07'; end;
  122: begin IMinVer := 4726; ID := 'A6BAFD3B-C921-466D-BEE0-59A3FE126712'; end;
  end;
  if IMinVer <> 0 then
  begin
    if IsFileBuldLow('%SystemRoot%\PCHEALTH\HELPCTR\Binaries\Helpsvc.exe', IMinVer) then
    begin
 AddToLog(A12);
 AddToLog(A00+ID+#13#10);
 ICounter:=ICounter+1;
    end
    else if not RegKeyExists('HKCR','HCP\shell') then 
 RegKeyParamWrite('HKCR','HCP\shell\open\command','','REG_EXPAND_SZ',
 '%SystemRoot%\PCHEALTH\HELPCTR\Binaries\HelpCtr.exe -FromHCP -url "%1"');
  end;

  // http://securitytracker.com/alerts/2007/Oct/1018843.html
  SetKillBit('{FDC7A535-4070-4B92-A0EA-D9994BCC0DC5}');

  // MS11-006
  ID := '';
  case IOSVer of
  13 : ID := 'BBEA7EAD-6C5C-4DA8-AA03-A40325FD2DE3';
  22 : ID := '2AA94528-5063-427B-97F7-2A0A55CBB6BF';
  122: ID := '6E740922-6CE4-46EC-A35E-E94201A9E398';
  32 : ID := '0C18ECCA-AFB9-4738-BC7B-76A0E815DFB8';
  132: ID := '62DC454F-4B1E-4AC0-8FFE-6C73112F8D4D';
  end;
  if ID <> '' then
   if FS.FindFirst('%System32%\Shell32.dll') then
    if FS.FileLastWriteTime<StrToDateTime(D04) then
     begin
 AddToLog(A31);
 AddToLog(A00+ID+#13#10);
 ICounter:=ICounter+1;
     end;

  // MS10-061
  if IOSVer = 13 then
  begin
    if IsFileBuldLow('%System32%\Spoolsv.exe', 6024) then
    begin
 AddToLog(A30);
 AddToLog(A00+'93FABA6B-0A85-4ACC-B527-A012BBF56B13'+#13#10);
 ICounter:=ICounter+1;
    end;
  end;

  // KB971029
  IMinVer := 0;
  ID := '';
  case IOSVer of
   13 : begin IMinVer:=5853; ID:='96ca61f6-8b16-4157-9635-8cfc0bbf4c35'; end;
   22 : begin IMinVer:=4559; ID:='edf9c049-bf1e-4130-87e6-0e64fa73f684'; end;
   122: begin IMinVer:=4559; ID:='b8df9256-cbb0-418d-a336-d29dc4415a65'; end;
   32 : ID:='dd6a61a3-b3c6-4b0a-a848-7b32be9f31c5';
   132: ID:='12e3fe0f-db79-4a27-aa7d-a456ee1c6ac4';
  end;
  AResult:='%System32%\Shsvcs.dll';
  if IsWOW64 then SetupAVZ('X64R=NN');
  if (ID<>'') and FileExists(AResult) then
    if FS.FindFirst(AResult) then
      if ((IMinVer=0) and (FS.FileLastWriteTime<StrToDateTime(D05))) or ((IMinVer>0) and IsFileBuldLow(AResult, IMinVer)) then
       begin
 AddToLog(A33);
 AddToLog(A00+ID+#13#10);
 ICounter:=ICounter+1;
       end;
  if IsWOW64 then SetupAVZ('X64R=YY');

  // MS11-087 ссылки на MS12-034
  IMinVer := 0;
  ID := '';
  case IOSVer of
   13 : begin IMinVer:=6178; ID:='8d341077-8fcd-4666-a27e-2141a04a321e'; end;
   22 : begin IMinVer:=4938; ID:='6287b994-041f-45b7-a230-d689bf1901a8'; end;
   122: begin IMinVer:=4938; ID:='f9f49cd0-24db-4438-afde-aa7113ec2035'; end;
   32 : ID:='292d1f3b-a065-4d7d-9046-f35ab7f0591b';
   132: ID:='8f90c09c-a2cb-4adb-ace7-a8bc38d78ba6';
   41 : ID:='572af8d4-effb-41a6-8448-7576b03f18fd';
   141: ID:='c09cbb73-7814-4946-8c0a-323d304dd633';
  end;
  AResult:='%System32%\Win32k.sys';
  if IsWOW64 then SetupAVZ('X64R=NN');
  if (ID<>'') and FileExists(AResult) then
    if FS.FindFirst(AResult) then
      if ((IMinVer=0) and (FS.FileLastWriteTime<StrToDateTime(D06))) or ((IMinVer>0) and IsFileBuldLow(AResult, IMinVer)) then
       begin
 AddToLog(A35);
 AddToLog(A00+ID+#13#10);
 ICounter:=ICounter+1;
       end;
  if IsWOW64 then SetupAVZ('X64R=YY');

  // MS10-092
  ID := '';
  case IOSVer of
   32 : ID:='48F10251-34D8-4149-B4B2-BF3EC28F5846';
   132: ID:='099CCC5F-B92F-4D06-BCB5-92E35C49F613';
   41 : ID:='CF85CDB6-58C7-4144-82F6-F01A6A4F9C3A';
   141: ID:='0597018D-39F5-4CA9-B437-63D9E68F264D';
  end;
  if ID<>'' then
  begin
   AResult:='%System32%\Taskeng.exe';
   if IsWOW64 then SetupAVZ('X64R=NN');
    if FileExists(AResult) then
     if FS.FindFirst(AResult) then
       if FS.FileLastWriteTime<StrToDateTime(D07) then
        begin
  AddToLog(A36);
  AddToLog(A00+ID+#13#10);
  ICounter:=ICounter+1;
        end;
  end;
  if IsWOW64 then SetupAVZ('X64R=YY');

  // MS11-011
  IMinVer := 0;
  ID := '';
  case IOSVer of
   13 : begin IMinVer:=6055; ID:='A511D33A-9AE0-46EE-A225-9D97390DE7D1'; end;
   22 : begin IMinVer:=4789; ID:='6BF2EEEC-8225-477F-A606-263D3EE434D6'; end;
   122: begin IMinVer:=4789; ID:='EC544894-EE98-4A2B-AC4D-33B0C3754213'; end;
   32 : ID:='66978514-BB7F-42CC-9360-2FD1C686F4E6';
   132: ID:='8FDB8C37-1B22-457B-BDC0-21F6A5061DD3';
  end;
  AResult:='%System32%\Ntdll.dll';
  if IsWOW64 then SetupAVZ('X64R=NN');
  if (ID<>'') and FileExists(AResult) then
    if FS.FindFirst(AResult) then
      if ((IMinVer=0) and (FS.FileLastWriteTime<StrToDateTime(D08))) or ((IMinVer>0) and IsFileBuldLow(AResult, IMinVer)) then
       begin
 AddToLog(A37);
 AddToLog(A00+ID+#13#10);
 ICounter:=ICounter+1;
       end;
  if IsWOW64 then SetupAVZ('X64R=YY');

  // MS12-004
  IMinVer := 0;
  ID := '';
  case IOSVer of
   13 : begin IMinVer:=6160; ID:='a142f7ba-4268-4453-a8eb-470213c028ac'; end;
   22 : begin IMinVer:=4916; ID:='3c266dfb-630d-4f32-b2ca-63955279b6a9'; end;
   122: begin IMinVer:=4916; ID:='8dd1c882-4ed1-4e47-a017-7d162bd94194'; end;
   32 : ID:='99d9b9fc-ed37-4a32-a20d-6604a1b9c4ca';
   132: ID:='44aa8d91-2b30-4191-8965-8aee2b860d50';
  end;
  AResult:='%System32%\Winmm.dll';
  if IsWOW64 then SetupAVZ('X64R=NN');
  if (ID<>'') and FileExists(AResult) then
    if FS.FindFirst(AResult) then
      if ((IMinVer=0) and (FS.FileLastWriteTime<StrToDateTime(D09))) or ((IMinVer>0) and IsFileBuldLow(AResult, IMinVer)) then
       begin
 AddToLog(A38);
 AddToLog(A00+ID+#13#10);
 ICounter:=ICounter+1;
       end;
  if IsWOW64 then SetupAVZ('X64R=YY');

  // KB2718704
  URL := '';
  IMinVer := 0;
  case IOSVer of
   13 : IMinVer := 6237;
   22 : IMinVer := 5012;
   122 : IMinVer := 5012;
  end;
  if bRU then
    case IOSVer of
     13 : URL := 'http://www.microsoft.com/ru-ru/download/details.aspx?id=29975 (требуется лицензионный Windows) или'+#13#10+
 'http://download.microsoft.com/download/1/1/A/11A221A6-953C-40E1-87CD-2A4CD98224C4/WindowsXP-KB2718704-x86-RUS.exe';
     22 : URL := 'http://www.microsoft.com/ru-ru/download/details.aspx?id=29971 (требуется лицензионный Windows) или'+#13#10+
 'http://download.microsoft.com/download/1/7/3/1733DB6F-F10B-4C25-94EF-FAD7BAAD81ED/WindowsServer2003-KB2718704-x86-RUS.exe';
     122 : URL := 'http://www.microsoft.com/ru-ru/download/details.aspx?id=29976 (требуется лицензионный Windows) или'+#13#10+
 'http://download.microsoft.com/download/B/D/6/BD6FA68A-2A23-476B-8CFC-F1D03118D96F/WindowsServer2003.WindowsXP-KB2718704-x64-RUS.exe';
    end
  else
    case IOSVer of
     13 : URL := 'http://www.microsoft.com/en-us/download/details.aspx?id=29975';
     22 : URL := 'http://www.microsoft.com/en-us/download/details.aspx?id=29971';
     122 : URL := 'http://www.microsoft.com/en-us/download/details.aspx?id=29976';
    end;
  if URL <>'' then
  begin
   AResult:='%System32%\Crypt32.dll';
    if FileExists(AResult) then
       if (IMinVer>0) and IsFileBuldLow(AResult, IMinVer) then
        begin
  AddToLog(A42);
  AddToLog(URL+#13#10);
  ICounter:=ICounter+1;
        end;
  end;
  AFName := '';
  case IOSVer of
   32 : begin AFName :='X86_13f66e81425ab9718ea16821324e3faa_31bf3856ad364e35_6.0.6002.18642_none_4b3c196b981fe80c.manifest';
  URL :='http://download.microsoft.com/download/D/7/A/D7A4C58C-A0E8-4CD7-A405-36C787637474/Windows6.0-KB2718704-x86.msu'; end;
   132: begin AFName :='X86_microsoft-windows-capi2-certs_31bf3856ad364e35_6.0.6002.18642_none_c44bff19916a7786.manifest';
  URL :='http://download.microsoft.com/download/7/3/1/731F9EE8-438E-4411-A994-2D0A1443501F/Windows6.0-KB2718704-x64.msu'; end;
   41 : begin AFName :='x86_microsoft-windows-capi2-certs_31bf3856ad364e35_6.1.7601.22008_none_c52e70d60b79c688.manifest';
  URL :='http://download.microsoft.com/download/4/1/3/413A9B3D-DC56-4DD8-8944-9B0DB0CC8025/Windows6.1-KB2718704-x86.msu'; end;
   141: begin AFName :='amd64_4677e27d20f74740fec514c660d10fa4_31bf3856ad364e35_6.1.7601.22008_none_d851475c9cba0cdf.manifest';
  URL :='http://download.microsoft.com/download/1/7/8/1787B87D-5DA3-44EF-A393-F15BF8EA3FBF/Windows6.1-KB2718704-x64.msu'; end;
  end;
  if AFName<>'' then
  begin
    if IsWow64 then
      SetupAVZ('X64R=NN');
    AResult := NormalFileName('%windir%\winsxs\Manifests\'+AFName);
    if not FileExists(AResult) then
    begin
 AddToLog(A42);
 AddToLog(URL+#13#10);
 ICounter:=ICounter+1;
    end;
    if IsWow64 then
     SetupAVZ('X64R=YY');
  end;

  // MS12-043 частично ссылки на MS13-002
  ID := '';
  case IOSVer of
   13 : ID:='017f1ed7-eed4-4de3-aca1-93fb25058866';
   22 : ID:='b7321c17-0e8e-4217-8da6-4c270dbfc802';
   122: ID:='29985fdc-8aba-44b2-9420-970ca475052e';
   32 : ID:='f8ccdb90-66bd-471a-9c78-825d1140b5ac';
   132: ID:='873eba5d-5a8f-410e-bad8-e9d538acf1b3';
   41 : ID:='d8a4817c-481c-4ed2-980a-21623f0ca6d2';
   141: ID:='4b442601-2808-4192-aa7d-b6476668cd23';
  end;
  AResult:='%System32%\Msxml3.dll';
  if (ID<>'') and FileExists(AResult) then
    if FS.FindFirst(AResult) then
      if (FS.FileLastWriteTime<StrToDateTime(D10)) then
       begin
 AddToLog(A43);
 AddToLog(A00+ID+#13#10);
 ICounter:=ICounter+1;
       end;

  ID := '';
  case IOSVer of
   13 : ID:='1e2738b9-d3c2-4dfe-8a79-335d5feee55b';
   22 : ID:='1e2738b9-d3c2-4dfe-8a79-335d5feee55b';
   122: ID:='7dabf372-4b31-4c9e-a660-4e0f4a65db04';
   32 : ID:='1e2738b9-d3c2-4dfe-8a79-335d5feee55b';
   132: ID:='7dabf372-4b31-4c9e-a660-4e0f4a65db04';
   41 : ID:='1e2738b9-d3c2-4dfe-8a79-335d5feee55b';
   141: ID:='7dabf372-4b31-4c9e-a660-4e0f4a65db04';
  end;
  AResult:='%System32%\Msxml4.dll';
  if (ID<>'') and FileExists(AResult) then
    if FS.FindFirst(AResult) then
      if (FS.FileLastWriteTime<StrToDateTime(D10)) then
       begin
 AddToLog(A43);
 AddToLog('http://www.microsoft.com/downloads/details.aspx?FamilyID='+ID);
 if (IOSVer > 30) and (IOSVer <> 122) then  AddToLog(A45);
 AddToLog('');
 ICounter:=ICounter+1;
       end;

  ID := '';
  case IOSVer of
   22 : ID:='3b56ba48-b74c-4681-8e17-715dc5d45e2c';
   122: ID:='0b13a83c-1e51-4604-a09d-afb2e25646f9';
  end;
  AResult:='%System32%\Msxml6.dll';
  if (ID<>'') and FileExists(AResult) then
    if FS.FindFirst(AResult) then
      if (FS.FileLastWriteTime<StrToDateTime(D10)) then
       begin
 AddToLog(A43);
 AddToLog('http://www.microsoft.com/downloads/details.aspx?FamilyID='+ID+#13#10);
 ICounter:=ICounter+1;
       end;

  // MS13-053 ссылки на KB2883150 из MS13-081
  IMinVer := 0;
  ID := '';
  case IOSVer of
   13 : begin IMinVer:=6404; ID:='7cb5e134-451c-4d20-919e-abc147ca8f5f'; end;
   22 : begin IMinVer:=5174; ID:='a52c08e5-42dd-4f76-8fff-5a8b990b1878'; end;
   122: begin IMinVer:=5174; ID:='adecac41-2842-43c2-9a3a-50c8d7d17e8d'; end;
   32 : ID:='5b0032fe-b02f-4726-87df-4500c525803f';
   132: ID:='6cc0ad94-a881-42ab-84e2-d1ca67808b37';
   41 : ID:='f286c69b-b83e-4c42-be9a-99d648dd5e12';
   141: ID:='d0d8e289-2c71-4b40-9a1f-de2501c8d40e';
  end;
  AResult:='%System32%\Win32k.sys';
   if IsWOW64 then
      SetupAVZ('X64R=NN');
  if ID<>'' then
    if FS.FindFirst(AResult) then
      if ((IMinVer=0) and (FS.FileLastWriteTime<StrToDateTime(D11))) or ((IMinVer>0) and IsFileBuldLow(AResult, IMinVer)) then
       begin
 AddToLog(A49);
 AddToLog(A00+ID+#13#10);
 ICounter:=ICounter+1;
       end;
   if IsWOW64 then
      SetupAVZ('X64R=YY');

  // MS13-096
  ID := '';
  case IOSVer of
   32 : ID:='fd0f3c4d-a741-44ef-b566-29ed95ae9228';
   132: ID:='420c49f6-65aa-41b5-9f34-1f0384f6c394';
  end;
  AResult:='%System32%\Gdiplus.dll';
  if (ID<>'') and FileExists(AResult) then
    if FS.FindFirst(AResult) then
      if (FS.FileLastWriteTime<StrToDateTime(D12)) then
       begin
 AddToLog(A50);
 AddToLog(A00+ID+#13#10);
 ICounter:=ICounter+1;
       end;

  // MS14-002
  ID := '';
  case IOSVer of
   13 : ID:='6cae1016-419a-47ab-9765-b4c1d7c0865c';
   22 : ID:='6d50f851-4be3-413f-b02d-b5b6a3f49fb4';
   122: ID:='69966ceb-a9c9-4aa7-b685-78562c96640f';
  end;
  AResult:='%System32%\drivers\NDProxy.sys';
  if IsWOW64 then SetupAVZ('X64R=NN');
  if (ID<>'') and FileExists(AResult) then
    if FS.FindFirst(AResult) then
      if (FS.FileLastWriteTime<StrToDateTime(D13)) then
       begin
 AddToLog(A51);
 AddToLog(A00+ID+#13#10);
 ICounter:=ICounter+1;
       end;
  if IsWOW64 then SetupAVZ('X64R=YY');

  FS.Free;
end;

Function NoKillBit(CLSID: string) : boolean;
begin
 Result:=RegKeyExists('HKCR','CLSID\'+CLSID) and
 not RegKeyExists('HKLM','SOFTWARE\Microsoft\Internet Explorer\ActiveX Compatibility\'+CLSID);
end;

Procedure SetKillBit(CLSID: string);
begin
  if NoKillBit(CLSID) then
    RegKeyIntParamWrite('HKLM','SOFTWARE\Microsoft\Internet Explorer\ActiveX Compatibility\'+CLSID,'Compatibility Flags', 1024);
end;

Function GetFileLastWriteTime(AFName: string) : TDateTime;
var
FS : TFileSearch;
begin
  FS := TFileSearch.Create(nil);
  if FS.FindFirst(AFName) then
    Result := FS.FileLastWriteTime;
  FS.Free;
end;

Procedure MSOffice;
var
AFName, AResult : string;
MSCOMCTL_old, Gdiplus_old : boolean; 
begin
  // Уязвимость элемента ActiveX средства просмотра снимков Microsoft Access делает возможным удаленное выполнение кода 
  // MS08-041
  SetKillBit('{F0E42D50-368C-11D0-AD81-00A0C90DC8D9}');
  SetKillBit('{F0E42D60-368C-11D0-AD81-00A0C90DC8D9}');
  SetKillBit('{F2175210-368C-11D0-AD81-00A0C90DC8D9}');

  // Уязвимости в веб-компонентах Microsoft Office делают возможным удаленное выполнение кода
  // MS09-043
  SetKillBit('{0002E543-0000-0000-C000-000000000046}');
  SetKillBit('{0002E55B-0000-0000-C000-000000000046}');
  SetKillBit('{0002E541-0000-0000-C000-000000000046}');
  SetKillBit('{0002E559-0000-0000-C000-000000000046}');
  SetKillBit('{0002E512-0000-0000-C000-000000000046}');
  SetKillBit('{0002E510-0000-0000-C000-000000000046}');
  SetKillBit('{0002E511-0000-0000-C000-000000000046}');
  SetKillBit('{0002E533-0000-0000-C000-000000000046}');
  SetKillBit('{0002E530-0000-0000-C000-000000000046}');

  // MS12-060 ссылки на MS14-024
  AFName := NormalFileName('%System32%\MSCOMCTL.OCX');
  MSCOMCTL_old := isFileBuldLow(AFName,9834);

  // MS13-096
    // Office 2010
    if RegKeyExists('HKLM','SOFTWARE\Microsoft\Office\14.0\Common\InstalledPackages') then
    begin
      AResult := RegKeyStrParamRead('HKLM','SOFTWARE\Microsoft\Office\14.0\Common\ProductVersion','LastProduct');
      AFName:=RegKeyStrParamRead('HKLM','SOFTWARE\Microsoft\Office\14.0\Common\InstallRoot','Path')+'Ogl.dll';
      if MSCOMCTL_old then
      begin
 AddToLog(A40+#13#10+A00+'7f19e755-7fd3-41ba-9b7c-befdbce457cb');
 if AResult < '14.0.6029.1000' then
   AddToLog(A44);
 ICounter:=ICounter+1;
 AddToLog('');
      end;
      if FileExists(AFName) then
        if GetFileLastWriteTime(AFName) < StrToDateTime(D12) then
        begin
   AddToLog(A50+#13#10+A00+'082ac73e-fcc9-46ac-b888-5c248a64a117');
   if AResult < '14.0.6029.1000' then
     AddToLog(A44);
   ICounter:=ICounter+1;
   AddToLog('');
 end;
    end
    else
    // Office 2003
    if RegKeyParamExists('HKLM','SOFTWARE\Microsoft\Office\11.0\Common\InstallRoot','Path') then
    begin
      AResult := RegKeyStrParamRead('HKLM','SOFTWARE\Microsoft\Office\11.0\Common\ProductVersion','LastProduct');
      AFName:=RegKeyStrParamRead('HKLM','SOFTWARE\Microsoft\Office\11.0\Common\InstallRoot','Path')+'Gdiplus.dll';
      if MSCOMCTL_old then
      begin
 AddToLog(A40+#13#10+A00+'fd9626f7-4265-48ae-94b2-68243605db6b');
 if AResult < '11.0.8173.0' then
   AddToLog(A41+'3'+#13#10+A00+'e25b7049-3e13-433b-b9d2-5e3c1132f206');
 ICounter:=ICounter+1;
 AddToLog('');
      end;
      if FileExists(AFName) then
        if GetFileLastWriteTime(AFName) < StrToDateTime(D12) then
        begin
   AddToLog(A50+#13#10+A00+'bfc3b881-4b95-4a22-998d-048487406d4f');
   if AResult < '11.0.8173.0' then
     AddToLog(A41+'3'+#13#10+A00+'e25b7049-3e13-433b-b9d2-5e3c1132f206');
   ICounter:=ICounter+1;
   AddToLog('');
 end;
    end
    else
    // Office 2007
    if RegKeyParamExists('HKLM','SOFTWARE\Microsoft\Office\12.0\Common\InstallRoot','Path') then
    begin
      AResult := RegKeyStrParamRead('HKLM','SOFTWARE\Microsoft\Office\12.0\Common\ProductVersion','LastProduct');
      AFName:=RegKeyStrParamRead('HKLM','SOFTWARE\Microsoft\Office\12.0\Common\InstallRoot','Path')+'OGL.DLL';
      if MSCOMCTL_old then
      begin
 AddToLog(A40+#13#10+A00+'afdb9c83-07e7-4280-94a7-125e0e7320ae');
 if AResult < '12.0.6425.1000' then
   AddToLog(A41+'7'+#13#10+A00+'0E40BBE7-1422-40EA-912D-2A29D709F93F');
 ICounter:=ICounter+1;
 AddToLog('');
 end;
      if FileExists(AFName) then
        if GetFileLastWriteTime(AFName) < StrToDateTime(D12) then
        begin
   AddToLog(A50+#13#10+A00+'3d373aba-eec3-4b76-ae95-9270a82e2e7e');
   if AResult < '12.0.6425.1000' then
     AddToLog(A41+'7'+#13#10+A00+'0E40BBE7-1422-40EA-912D-2A29D709F93F');
   ICounter:=ICounter+1;
   AddToLog('');
 end;
    end;
end;

Procedure AdobeFlashVuln;
var
AResult : string;
i : integer;
Plugin64Old, AX64old : boolean;
begin
  // x64
  Plugin64Old := false;
  AX64old := false;
  if IsWow64 then
  begin
   SetupAVZ('X64R=NN');
   AResult := RegKeyStrParamRead('HKCR','CLSID\{D27CDB6E-AE6D-11cf-96B8-444553540000}\InprocServer32','');
   if AResult <> '' then
   begin
     AResult := GetFileVersion(AResult, 6);
     if IsFlashOld(AResult) then
       AX64old := true;
   end;
   AResult := RegKeyStrParamRead('HKLM','SOFTWARE\MozillaPlugins\@adobe.com/FlashPlayer','Version');
   if AResult <> '' then
    if IsFlashOld(AResult) then
      Plugin64Old := true;
    SetupAVZ('X64R=YY');
  end;

  // x86
  AResult := RegKeyStrParamRead('HKLM',
 'SOFTWARE\Classes\CLSID\{D27CDB6E-AE6D-11cf-96B8-444553540000}\InprocServer32','');
  AResult := GetFileVersion(AResult, 6);
  if (IOSVer>4) and (AX64Old or IsFlashOld(AResult)) then
  begin
    AddToLog(A14);
    AddToLog('http://download.macromedia.com/get/flashplayer/current/licensing/win/install_flash_player_17_active_x.exe'+#13#10);
    ICounter:=ICounter+1;
  end;

  AResult := RegKeyStrParamRead('HKLM',
 'SOFTWARE\MozillaPlugins\@adobe.com/FlashPlayer','Version');
  if Plugin64Old or IsFlashOld(AResult) then
  begin
    AddToLog(A15);
    AddToLog('http://download.macromedia.com/get/flashplayer/current/licensing/win/install_flash_player_17_plugin.exe'+#13#10);
    ICounter:=ICounter+1;
  end;
end;

function IsFlashOld(AFlVer: string) : boolean;
var
AVer, ABuild : string;
DotPos : integer;
begin
  Result := true;
  AFlVer := StringReplace(AFlVer, ',', '.');
  AVer := Copy(AFlVer, 1, 2);
  DotPos := Pos('.', AFlVer);
  AFlVer := Copy(AFlVer, DotPos+1, Length(AFlVer)-DotPos);
  DotPos := Pos('.', AFlVer);
  AFlVer := Copy(AFlVer, DotPos+1, Length(AFlVer)-DotPos);
  DotPos := Pos('.', AFlVer);
  ABuild := Copy(AFlVer, DotPos+1, Length(AFlVer)-DotPos);
  AFlVer := NormalizeDot(AFlVer);
  if ValidFloat(AFlVer) then
   case AVer of
   '13' : if StrToFloat(AFlVer) > 0 then //13.0.0.206
     if ValidInt(ABuild) then
       if (StrToFloat(AFlVer) > 1) or (StrToInt(ABuild) >= 206) then Result:=false;
   end
  else
   Result:=false;
  if ValidInt(AVer) then
    if StrToInt(AVer) > 13 then Result:=false;
end;

Procedure AdobeReaderVuln;
var
ARes, AVer, AMinVer, CVer, AKey, AExe, ASubVer : string;
ISubVer, IMinSubVer  : integer;
begin
  ARes:='';
  if RegKeyExists('HKCR','CLSID\{06849E9F-C8D7-4D59-B87D-784B7D6BE0B3}')
  then ARes:='06849E9F-C8D7-4D59-B87D-784B7D6BE0B3'
  else if RegKeyExists('HKCR','CLSID\{18DF081C-E8AD-4283-A596-FA578C2EBDC3}')
 then ARes:='18DF081C-E8AD-4283-A596-FA578C2EBDC3';
  if ARes = '' then exit;
  ARes := RegKeyStrParamRead('HKCR','CLSID\{'+ARes+'}\InprocServer32','');
  if not FileExists(ARes) then exit;
  AVer := GetFileVersion(ARes, 6);
  AMinVer := '';
  CVer := Copy(AVer, 1, 2);
  if (CVer[2]='.') or (CVer[2]=',') then CVer:=CVer[1];
  if ValidInt(CVer) then
  begin
    case StrToInt(CVer) of
     11: begin AMinVer := '11.0.08'; IMinSubVer := 8;   end;
     10: begin AMinVer := '10.1.11'; IMinSubVer := 11; end;
     end;
    if StrToInt(CVer) > 11 then exit;
  end
  else exit;
  AExe := RegKeyStrParamRead('HKCR','Software\Adobe\Acrobat\Exe','');

  if Pos('acrobat.exe',LowerCase(AExe)) > 0 then
  begin
    if AMinVer = '' then
    begin
 AddToLog(A16+#13#10);
 ICounter:=ICounter+1;
    end
   else
   begin
    ARes:=RegKeyStrParamRead('HKLM','SOFTWARE\Adobe\Adobe Acrobat\'+CVer+'.0\Installer','ENU_GUID');
    AVer:=RegKeyStrParamRead('HKLM','SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\'+ARes,'DisplayVersion');
    if Length(AVer) > 5 then
    begin
      ASubVer := Copy(AVer, 6, 2);
       if ValidInt(ASubVer) then ISubVer := StrToInt(ASubVer);
    end
    else ISubVer := 0;

    if ISubVer<IMinSubVer then
    begin
 AddToLog(A17 + AVer + A18 + AMinVer);
 AddToLog(''); ICounter:=ICounter+1;
    end;
   end;
  end else
  begin
    if AMinVer = '' then
    begin
 AddToLog(A19);
 AddToLog('http://get.adobe.com/reader/otherversions'+#13#10);
 ICounter:=ICounter+1;
    end else
    begin
     ARes:=RegKeyStrParamRead('HKLM','SOFTWARE\Adobe\Acrobat Reader\'+CVer+'.0\Installer','ENU_GUID');
     AVer:=RegKeyStrParamRead('HKLM','SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\'+ARes,'DisplayVersion');
     if Length(AVer) > 5 then
     begin
       ASubVer := Copy(AVer, 6, 2);
        if ValidInt(ASubVer) then ISubVer := StrToInt(ASubVer);
     end
     else ISubVer := 0;

     if ISubVer<IMinSubVer then
     begin
 AddToLog(A20 + AVer + A18 + AMinVer);
 if CVer='11' then
 begin
   if AVer < '11.0.08' then
     AddToLog('http://ardownload.adobe.com/pub/adobe/reader/win/11.x/11.0.09/misc/AdbeRdrUpd11009.msp');
 end;
 if CVer='10' then
 begin
   if AVer<'10.1' then
   begin
  AddToLog(A19);
  AddToLog('http://get.adobe.com/reader/otherversions/');
   end
   else
   begin
  if ISubVer < 11 then
    AddToLog('http://ardownload.adobe.com/pub/adobe/reader/win/10.x/10.1.12/misc/AdbeRdrUpd10112.msp');
   end;
 end;
 if CVer='9' then
 begin
  AddToLog(A19);
  AddToLog('http://get.adobe.com/reader/otherversions/');
 end;
        AddToLog(''); ICounter:=ICounter+1;
     end;
    end;
  end;
end;

Procedure FireFoxVuln;
var
AResult,AVer,AFile:string;
Ver:integer;
FFIsOut:boolean;
begin
  if RegKeyExists('HKCU','SOFTWARE\Mozilla\Mozilla Firefox') then
  begin
   AResult:=RegKeyStrParamRead('HKCU','SOFTWARE\Mozilla\Mozilla Firefox','');
   AFile:=RegKeyStrParamRead('HKCU','SOFTWARE\Mozilla\Mozilla Firefox '+AResult+'\bin','PathToExe');
  end
  else if RegKeyExists('HKLM','SOFTWARE\Mozilla\Mozilla Firefox') then
  begin
   AResult:=RegKeyStrParamRead('HKLM','SOFTWARE\Mozilla\Mozilla Firefox','');
   if not RegKeyExists('HKLM','SOFTWARE\Mozilla\Mozilla Firefox'+AResult) then
     AResult:=RegKeyStrParamRead('HKLM','SOFTWARE\Mozilla\Mozilla Firefox','CurrentVersion');
   AFile:=RegKeyStrParamRead('HKLM','SOFTWARE\Mozilla\Mozilla Firefox '+AResult+'\bin','PathToExe');
   if AFile = '' then
     AFile:=RegKeyStrParamRead('HKLM','SOFTWARE\Mozilla\Mozilla Firefox\'+AResult+'\Main','PathToExe');
  end
   else exit;
  AResult := GetFileVersion(AFile, 6);
  AVer := Copy(AResult, 1, Pos('.', AResult)-1);
  if ValidInt(AVer) then Ver:=StrToInt(AVer) else exit;
  FFIsOut:=true;
  if (Ver = 17)and((AResult >= '17.0.7')or(AResult = '17.0.10')or(AResult = '17.0.11')) then FFIsOut:=false
    else if Ver >= 22 then FFIsOut:=false;
  if FFIsOut then
  begin
    AddToLog('Firefox '+AResult+A22);
    AddToLog('http://www.mozilla.com/'+#13#10);
    ICounter:=ICounter+1;
  end;
end;

Procedure JavaVuln;
var
ARes, ABuld : string;
JavaIsOut:boolean;
IPos: Integer;
begin
  ARes := RegKeyStrParamRead('HKLM','SOFTWARE\JavaSoft\Java Runtime Environment','CurrentVersion');
  JavaIsOut:=false;
  ABuld := RegKeyStrParamRead('HKLM','SOFTWARE\JavaSoft\Java Runtime Environment','BrowserJavaVersion');
  if ABuld='' then
 ABuld := RegKeyStrParamRead('HKLM','SOFTWARE\JavaSoft\Java Web Start','CurrentVersion')
  else if ARes='' then ARes := copy(ABuld, 1, 3);

  IPos := Pos('.', ABuld);
  Delete(ABuld, 1, IPos);
  ABuld := NormalizeDot(ABuld);
  case ARes of
   '1.8': begin
     if ValidFloat(ABuld) then
      if StrToFloat(ABuld) < 5 then
       JavaIsOut:=true;
   end;
   '1.7': begin
     if ValidFloat(ABuld) then
      if StrToFloat(ABuld) < 55 then
       JavaIsOut:=true;
   end;
   '1.6': JavaIsOut:=true;
   '1.5': JavaIsOut:=true;
   '1.4': JavaIsOut:=true;
  end;
  if JavaIsOut then
  begin
    AddToLog(A23);
    AddToLog(A24+#13#10);
    ICounter:=ICounter+1;
  end;

  if IsWow64 then
  begin
    SetupAVZ('X64R=NN');
    ARes := RegKeyStrParamRead('HKLM','SOFTWARE\JavaSoft\Java Runtime Environment','CurrentVersion');
    JavaIsOut:=false;
    ABuld := RegKeyStrParamRead('HKLM','SOFTWARE\JavaSoft\Java Runtime Environment','BrowserJavaVersion');
    if ABuld='' then
 ABuld := RegKeyStrParamRead('HKLM','SOFTWARE\JavaSoft\Java Web Start','CurrentVersion');
    IPos := Pos('.', ABuld);
    Delete(ABuld, 1, IPos);
    ABuld := NormalizeDot(ABuld);
    case ARes of
     '1.8': begin
       if ValidFloat(ABuld) then
        if StrToFloat(ABuld) < 5 then
         JavaIsOut:=true;
     end;
     '1.7': begin
     if ValidFloat(ABuld) then
      if StrToFloat(ABuld) < 55 then
       JavaIsOut:=true;
   end;
     '1.6': JavaIsOut:=true;
    end;
    if JavaIsOut then
    begin
      A23 := StringReplace(A23,'32','64');
      AddToLog(A23);
      AddToLog(A24+#13#10);
      ICounter:=ICounter+1;
    end;
    SetupAVZ('X64R=YY');
  end;
end;

Procedure OperaVuln;
var
AResult,AVer:string;
cVer:char;
iPos:integer;
begin
  AResult:=RegKeyStrParamRead('HKLM','SOFTWARE\Opera Software','Last CommandLine v2');
  if AResult = '' then
    AResult:=RegKeyStrParamRead('HKCU','SOFTWARE\Opera Software','Last CommandLine v2');
  if AResult = '' then exit;
  iPos := Pos('.exe', AResult);
  AResult := Copy(AResult, 1, iPos+4);
  AVer := GetFileVersion(AResult, 6);
  AVer := NormalizeDot(AVer);
  if ValidFloat(AVer) then
    if StrToFloat(AVer) < 12.10 then
    begin
 AddToLog('Opera '+AVer+A25);
 AddToLog('http://www.opera.com/browser/download'+#13#10);
 ICounter:=ICounter+1;
    end;
end;

Procedure QuickTimeVuln;
var
AResult, AVer :string;
begin
  AResult:=RegKeyStrParamRead('HKCR','CLSID\{02BF25D5-8C17-4B23-BC80-D3488ABDDC6B}\InprocServer32','');
  if not FileExists(AResult) then exit;
  AVer:=GetFileVersion(AResult,3);
  Delete(AVer,7,7);
  if AVer<'7.6.8' then
  begin
   AddToLog('QuickTime '+AVer+A22);
   AddToLog('http://www.apple.com/quicktime/download'+#13#10);
   ICounter:=ICounter+1;
  end;
end;

Procedure SilverlightVuln;
var
AVer :string;
begin
  AVer:=RegKeyStrParamRead('HKLM','SOFTWARE\Microsoft\Silverlight','Version');
  if (AVer<>'') and (AVer<'5.1.20913.0') then
  begin
   AddToLog('Microsoft Silverlight '+AVer+A22);
   AddToLog('http://www.microsoft.com/getsilverlight/handlers/getsilverlight.ashx'+#13#10);
   ICounter:=ICounter+1;
  end;
end;

begin
  ClearLog;
  if GetAVZVersion<4.39 then begin
    ShowMessage('Для этого скрипта требуется AVZ версии 4.39 или старше.'); Exit; end;
  if TranslateStr('$AVZ0075')='DLLs' then
  begin
   bRU := false;
   A00:='http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=';
   A01:='Install Service Pack 4 for Windows 2000';
   A02:='Windows 2000 lifecycle ended';
   A03:='Install Service Pack 3 for Windows XP';
   A04:='Install Service Pack 2 for Windows 2003';
   A05:='Install Windows Vista Service Pack 1 and 2';
   A06:='Search for critical vulnerabilities';
   A07:='Vulnerability in Server Service Could Allow Remote Code Execution';
   A08:='Vulnerabilities in SMB Server Could Allow Remote Code Execution';
   A09:='Vulnerability in Microsoft DirectShow Could Allow Remote Code Execution';
   A10:='Cumulative Security Update for Internet Explorer';
   A11:='Cumulative Security Update of ActiveX Kill Bits';
   A12:='Vulnerability in Help and Support Center Could Allow Remote Code Execution';
   A13:='Vulnerability in Windows Shell Could Allow Remote Code Execution';
   A14:='Vulnerabilities in Adobe Flash Player for Internet Explorer';
   A15:='Vulnerabilities in Adobe Flash Player for Firefox/Safari/Opera';
   A16:='Install Adobe Acrobat XI or uninstall vulnerable';
   A17:='Adobe Acrobat ';
   A18:='installed. Too dangerous to use the version below ';
   A19:='Install Adobe Reader XI (11.0) or uninstall vulnerable.';
   A20:='Adobe Reader ';
   A21:='Install Adobe XI (11.0)';
   A22:=' vulnerable. Uninstall it or install actual one';
   A23:='Vulnerabilities in Java JDK and JRE (32-bit). Uninstall it and install actual one:';
   A24:='http://www.java.com/en/download/manual.jsp';
   A25:=A22;
   A26:='Frequently used critical vulnerabilities not found.';
   A27:='Vulnerabilities found: ';
   A28:='Log saved in subfolder Log';
   A29:='Log saved in c:\avz_log.txt file';
   A30:='Vulnerability in Print Spooler Service Could Allow Remote Code Execution';
   A31:='Vulnerability in Windows Shell Graphics Processing could allow remote code execution';
   A32:='Install Windows Vista Service Pack 2';
   A33:='Update to the AutoPlay functionality in Windows';
   A34:='';
   A35:='Vulnerability in Windows Kernel-Mode Drivers Could Allow Remote Code Execution';
   A36:='Vulnerability in Task Scheduler Could Allow Elevation of Privilege';
   A37:='Vulnerabilities in Windows Kernel Could Allow Elevation of Privilege';
   A38:='Vulnerabilities in Windows Media Could Allow Remote Code Execution';
   A39:='dozens.';
   A40:='Vulnerability in Windows Common Controls Could Allow Remote Code Execution';
   A41:='This update require the SP3 installed on Office 200';
   A42:='Unauthorized Digital Certificates Could Allow Spoofing';
   A43:='Vulnerability in Microsoft XML Core Services Could Allow Remote Code Execution';
   A44:='This update require the SP2 installed on Office 2010'+#13#10+
 'http://www.microsoft.com/en-US/download/details.aspx?id=39667';
   A45:='Run Update as Administrator';
   A46:='Install new Internet Explorer'+#13#10+
 'http://windows.microsoft.com/en-US/internet-explorer/download-ie';
   A47:='Vulnerability in Microsoft Office Could Allow Remote Code Execution';
   A48:='Install Windows 7 Service Pack 1';
   A49:='Vulnerabilities in Windows kernel-mode drivers could allow remote code execution';
   A50:='Vulnerability in Microsoft Graphics component could allow remote code execution';
   A51:='Vulnerability in Windows kernel could allow elevation of privilege';
  end else
  begin
   bRU := true;
   A00:='http://www.microsoft.com/downloads/details.aspx?displaylang=ru&FamilyID=';
   A01:='Установите Service Pack 4 для Windows 2000';
   A02:='Жизненный цикл Windows 2000 закончился';
   A03:='Установите Service Pack 3 для Windows XP. Возможно, потребуется активация.';
   A04:='Установите Service Pack 2 для Windows 2003';
   A05:='Установите Service Pack 1 и 2 для Windows Vista. Возможно, потребуется активация.';
   A06:='Поиск критических уязвимостей';
   A07:='Уязвимость службы сервера делает возможным удаленное выполнение кода';
   A08:='Уязвимости в протоколе SMB делают возможным удаленное выполнение кода';
   A09:='Уязвимости в Microsoft DirectShow делают возможным удаленное выполнение кода';
   A10:='Накопительное обновление безопасности для браузера Internet Explorer';
   A11:='Накопительное обновление системы безопасности для битов аннулирования ActiveX';
   A12:='Уязвимость в Центре справки и поддержки Windows';
   A13:='Уязвимость оболочки Windows делает возможным удаленное выполнение кода';
   A14:='Уязвимости в Adobe Flash Player для Internet Explorer';
   A15:='Уязвимости в Adobe Flash Player для Firefox/Safari/Opera';
   A16:='Установите Adobe Acrobat XI или удалите старый';
   A17:='Установлен Adobe Acrobat версии ';
   A18:='. Опасно использовать версии до ';
   A19:='Установите Adobe Reader XI (11.0) или удалите старый.';
   A20:='Установлен Adobe Reader версии ';
   A22:=' устарел. Удалите его или установите новый';
   A21:='Установите Adobe Reader XI (11.0)';
   A23:='Множественные уязвимости в Java JDK и JRE (32-разрядная версия). Деинсталлируйте старую версию. Установите новую, если Java вам нужна:';
   A24:='http://www.java.com/ru/download/manual.jsp';
   A25:=' устарела. Удалите её или установите новую';
   A26:='Часто используемые уязвимости не обнаружены.';
   A27:='Обнаружено уязвимостей: ';
   A28:='Протокол сохранён в под-папке Log';
   A29:='Протокол сохранён в файле c:\avz_log.txt';
   A30:='Уязвимость в службе диспетчера очереди печати делает возможным удаленное выполнение кода';
   A31:='Уязвимость обработки графики в оболочке Windows делает возможным удаленное выполнение кода';
   A32:='Установите Service Pack 2 для Windows Vista. Возможно, потребуется активация.';
   A33:='Обновление функции автозапуска в Windows';
   A34:='';
   A35:='Уязвимость драйверов режима ядра Windows, делает возможным удаленное выполнение кода';
   A36:='Уязвимость в планировщике заданий делает возможным несанкционированное получение прав';
   A37:='Уязвимости в ядре Windows могут привести к несанкционированному получению прав';
   A38:='Уязвимости в Windows Media делают возможным удаленное выполнение кода';
   A39:='много.';
   A40:='Уязвимость общих элементов управления Windows делает возможным удаленное выполнение кода';
   A41:='Для установки этого обновления требуется установить SP3 для Office 200';
   A42:='Несанкционированные цифровые сертификаты делают возможным подмену содержимого';
   A43:='Уязвимость в MSXML делает возможным удаленное выполнение кода';
   A44:='Для установки этого обновления требуется установить SP2 для Office 2010'+#13#10+
 'http://www.microsoft.com/ru-ru/download/details.aspx?id=39667';
   A45:='Запускайте обновление от имени Администратора';
   A46:='Установите новый Internet Explorer'+#13#10+
 'http://windows.microsoft.com/ru-ru/internet-explorer/download-ie';
   A47:='Обновление для системы безопасности Office 2003';
   A48:='Установите Service Pack 1 для Windows 7. Возможно, потребуется активация.';
   A49:='Уязвимости драйверов режима ядра Windows делают возможным удаленное выполнение кода';
   A50:='Уязвимость компонента Microsoft Graphics делает возможным удаленное выполнение кода';
   A51:='Уязвимость в ядре Windows может допустить повышение уровня полномочий';
end;
  if ValidDate('17.02.2011') then
  begin
   D01:='17.02.2011'; // MS11-020
   D02:='23.07.2014'; // MS14-051
   D03:='05.05.2013'; // MS13-051
   D04:='21.01.2011'; // MS11-006
   D05:='10.07.2009'; // KB971029
   D06:='23.11.2011'; // MS11-087
   D07:='02.11.2010'; // MS10-092
   D08:='15.10.2010'; // MS11-011
   D09:='14.10.2011'; // MS12-004
   D10:='04.06.2012'; // MS12-043
   D11:='03.06.2013'; // MS13-053
   D12:='19.10.2013'; // MS13-096
   D13:='26.11.2013'; // MS14-002
   D14:='05.03.2014'; // kb2929437
  end;
  if ValidDate('17/02/2011') then
  begin
   D01:='17/02/2011';
   D02:='23/07/2014';
   D03:='05/05/2013';
   D04:='21/01/2011';
   D05:='10/07/2009';
   D06:='23/11/2011';
   D07:='02/11/2010';
   D08:='15/10/2010';
   D09:='14/10/2011';
   D10:='04/06/2012';
   D11:='03/06/2013';
   D12:='19/10/2013';
   D13:='26/11/2013';
   D14:='05/03/2014'; 
  end;
  if ValidDate('02/17/2011') then
  begin
   D01:='02/17/2011';
   D02:='07/23/2014';
   D03:='05/05/2013';
   D04:='01/21/2011';
   D05:='07/10/2009';
   D06:='11/23/2011';
   D07:='11/02/2010';
   D08:='10/15/2010';
   D09:='10/14/2011';
   D10:='06/04/2012';
   D11:='06/03/2013';
   D12:='10/19/2013';
   D13:='11/26/2013';
   D14:='03/05/2014'; 
   end;

  if ValidFloat('1.0') then
   begin
     Dot := '.';
     notDot := ',';
   end
  else
   begin
     Dot := ',';
     notDot := '.';
   end;
  ICounter:=0; noSP:=false; IOSVer := 0;
  AddToLog(A06);
  WinVuln;
  MSOffice;
  AdobeFlashVuln;
  AdobeReaderVuln;
  FireFoxVuln;
  JavaVuln;
  OperaVuln;
  QuickTimeVuln;
  SilverlightVuln;

  if (ICounter=0) then
  begin
   AddToLog(A26);
   MessageDlg(A26, mtInformation, mbOk, 0);
  end
  else
  begin
   if noSP then
     AddToLog(A27+A39)
   else
      AddToLog(A27+IntToStr(ICounter));
   SaveLog(GetAVZDirectory+'log\avz_log.txt');
   if FileExists(GetAVZDirectory+'log\avz_log.txt') then
     AddToLog(A28)
   else
   begin
    SaveLog('c:\avz_log.txt');
    AddToLog(A29);
   end;
  end;
end.

Комментариев нет:

Отправить комментарий