Проверка целостности системных файлов утилитой sfc 0.6.1

Проверка целостности системных файлов утилитой sfc с выводом лога.

  1. Kиpилл
    Оффлайн

    Kиpилл Команда форума Администратор

    Лучший автор месяца

    Сообщения:
    12.232
    Симпатии:
    4.980
    Пользователь Koza Nozdri разместил новый ресурс:

    Проверка целостности системных файлов утилитой sfc - Проверка целостности системных файлов утилитой sfc с выводом лога.

    Узнать больше об этом ресурсе...
     
    machito, Sandor, akok и 2 другим нравится это.
  2. Kиpилл
    Оффлайн

    Kиpилл Команда форума Администратор

    Лучший автор месяца

    Сообщения:
    12.232
    Симпатии:
    4.980
    Пользователь Koza Nozdri обновил ресурс Проверка целостности системных файлов утилитой sfc новой записью:

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

    Узнать больше об этом обновлении...
     
    Dragokas нравится это.
  3. Dragokas
    Оффлайн

    Dragokas Very kind Developer Команда форума Супер-Модератор Разработчик Клуб переводчиков

    Сообщения:
    4.498
    Симпатии:
    4.313
    Кирилл, пересохрани, пожалуйста, в zip-формате. А то 7z не везде удобно распаковывать, особенно на виртуалках.

    И я все же настоятельно прошу сначала копировать CBS в другой каталог, а затем парсить.
    В новых системах не всегда findstr может получить доступ к этому файлу в системном каталоге (возможен также конфликт общего доступа).

    Код (Text):
    copy /y %windir%\Logs\CBS\CBS.log %live%\
    findstr /c:"[SR]" %live%\CBS.log>%live%\sfcdetails.txt
    del /F /Q %live%\CBS.log
    Зачем это Эхо без ничего?.
    Код (Text):
    echo | cscript.exe //nologo "%~dp0Copy.vbs" "%~dpnx0" >null
    ++ здесь везде %live% без кавычек. Если юзер выберет папку с пробелами, будут проблемы.

    Код (Text):
    cscript.exe //nologo "%~dp0Copy.vbs" "%~dpnx0" >null
    set /p live=<nul
    Чтобы контролировать, когда не выбрана вообще папка (и не создавать лишнего файла null),
    можно заменить на:
    Код (Text):
    For /F "delims=" %%a in ('cscript.exe //nologo "%~dp0Copy.vbs" "%~dpnx0"') do set live=%%a
    if not Defined live Echo (Не выбран каталог& echo ++ тут сам придумаешь какая команда)
    Тогда в скрипте нужно будет вместо
    Код (Text):
    echo if err then WScript.Echo^("Не выбран каталог"^) else WScript.Echo ^(sPath^)
    написать:
    Код (Text):
    echo if not err then WScript.Echo ^(sPath^)
     
    Kиpилл нравится это.
  4. Kиpилл
    Оффлайн

    Kиpилл Команда форума Администратор

    Лучший автор месяца

    Сообщения:
    12.232
    Симпатии:
    4.980
    где то косяк,ищу...

    @echo off
    Chcp 866 >nul
    title Проверка целостности системных файлов.
    SetLocal EnableExtensions EnableDelayedExpansion

    SET Version=Unknown
    VER | FINDSTR /IL "5.0" > NUL
    IF %ERRORLEVEL% EQU 0 SET Version="Windows 2000"
    VER | FINDSTR /IL "5.1." > NUL
    IF %ERRORLEVEL% EQU 0 SET Version="Windows XP"
    VER | FINDSTR /IL "5.2." > NUL
    IF %ERRORLEVEL% EQU 0 SET Version="Windows 2003"
    VER | FINDSTR /IL "6.0." > NUL
    IF %ERRORLEVEL% EQU 0 SET Version="Windows Vista"
    VER | FINDSTR /IL "6.1." > NUL
    IF %ERRORLEVEL% EQU 0 SET Version="Windows 7"
    VER | FINDSTR /IL "6.2." > NUL
    IF %ERRORLEVEL% EQU 0 SET Version="Windows 8"


    echo.
    echo.


    IF %VERSION% == "Windows XP" GOTO XP
    IF %VERSION% == "Windows 2000" GOTO XP
    IF %VERSION% == "Windows 2003" GOTO XP
    IF %VERSION% == "Windows Vista" GOTO Elevate
    IF %VERSION% == "Windows 7" GOTO Elevate
    IF %VERSION% == "Windows 8" GOTO Elevate
    GOTO Unknown

    :WIN7
    REG DELETE hkcr\test.associatoon /f
    cls
    echo Версия Вашей операционной системы: %VERSION%
    echo.
    echo.
    echo ---- _SFC_ ----
    echo.
    echo Если есть установочный диск с версией Вашей Windows вставьте его в дисковод.
    echo.
    echo.
    echo 1. Продолжить проверку без диска
    echo (Введите цифру 1 и нажмите клавишу Enter)
    echo.
    echo 2. Продолжить проверку с диском
    echo (Вставьте диск в дисковод,введите цифру 2 и нажмите клавишу Enter)
    echo.
    If exist %~dp0Elevating.vbs (erase /q %~dp0Elevating.vbs)
    GoTo menu

    :menu
    set choice=
    Set /p choice="Ваш выбор: "
    if not defined choice goto menu
    if "%choice%"=="1" (goto sfco)
    if "%choice%"=="2" (goto sfco)
    Echo.
    cls
    Echo ═Вы выбрали неверное значение=
    Echo.
    echo.
    echo.
    echo 1. Продолжить проверку без диска
    echo (Введите цифру 1 и нажмите клавишу Enter)
    echo.
    echo 2. Продолжить проверку с диском
    echo (Вставьте диск в дисковод,введите цифру 2 и нажмите клавишу Enter)
    goto menu

    :Elevate
    reg add hkcr\test.associatoon /f && goto :WIN7
    cls
    Echo Требуются права Администратора.
    Echo.
    echo Для продолжения нажмите клавишу ENTER
    echo.
    pause>nul
    Echo CreateObject^("Shell.Application"^).ShellExecute WScript.Arguments^(0^),"%~1","","runas",1 >"%~dp0Elevating.vbs"
    cscript.exe //nologo "%~dp0Elevating.vbs" "%~dpnx0"& exit

    ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    :sfco
    cls
    Echo.
    Echo ВНИМАНИЕ!
    Echo.
    Echo Сейчас будет запущена проверка системных файлов на целостность.
    Echo Не выключайте компьютер и не закрывайте окно консоли пока не закончится проверка
    sfc/scannow||(
    cls
    echo Ошибка выполнения скрипта,перезагрузите компьютер и попробуйте снова
    echo запустить скрипт.
    Echo.
    echo Сообщите о проблеме хэлперу .
    ping -n 10 127.0.0.1 > NUL
    GoTo exite
    )
    echo.
    echo.
    echo.
    echo.
    echo Проверка завершена,теперь выберите папку для сохранения результата проверки,
    echo он будет сохранен в выбранной папке в виде файла Sfcdetalis.txt
    echo Прикрепите его на форум к вашему сообщению.
    goto folder

    :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

    :folder
    (
    echo on error resume next
    echo sPath = CreateObject^("Shell.Application"^).BrowseForFolder^(0, "┬√схЁшЄх яряъє фы ёюїЁрэхэш ыюура", 17^).self.Path
    echo if not err then WScript.Echo ^(sPath^) )> "%~dp0Copy.vbs"

    For /F "delims=" %%a in ('cscript.exe //nologo "%~dp0Copy.vbs" "%~dpnx0"') do set live=%%a
    if not Defined live Echo ( Не выбран каталог для сохранения лога
    cls
    goto folder
    )
    goto parser
    ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    :parser

    echo Вы выбрали папку "%live%"
    echo.
    del /f /q %~dp0Copy.vbs
    del /f /q %~dp0null
    copy /y %windir%\Logs\CBS\CBS.log %live%\
    findstr /c:"[SR]" %live%\CBS.log>%live%\sfcdetails.txt
    IF NOT EXIST "%live%"\sfcdetails.txt (
    echo При сохранении отчета произошла ошибка,прикрепите файл "%live%"\CBS.log
    echo или %windir%\Logs\CBS\CBS.log
    echo.
    echo Для продолжения нажмите клавишу ENTER
    echo.
    pause>nul) else (echo Лог сохранен в "%live%"
    echo.
    del /F /Q %live%\CBS.log
    echo Для продолжения нажмите клавишу ENTER
    pause>nul

    start "%live%")
    GoTo exite

    ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

    :XP
    echo Версия Вашей операционной системы: %VERSION%
    for %%i in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do if exist %%i:\WIN51 set CDROM=%%i:
    if not exist %cdrom%\win51.* (
    echo.
    echo.
    echo.
    echo Вам необходимо вставить диск с вашей копией Windows XP
    echo либо смонтировать образ диска в виртуальный привод.& goto cdopen
    ) else (goto koz)


    ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

    :cdopen
    set m.msg=^
    ДА - Диск с Windows вставлен (или образ смонтирован)^&^
    НЕТ - Выход из программы (ни диска ни образа нет)

    cmd /U /C echo Wscript.Echo Msgbox^(replace^(Wscript.Arguments^(0^),"&",vbLF^),67,"Проверка диска"^)>"msgbox.vbs"
    for /f %%a in ('cscript "msgbox.vbs" "%m.msg%"^& del "msgbox.vbs"') do set err=%%a
    if "%err%"=="2" goto Exite
    if "%err%"=="6" goto XP
    if "%err%"=="7" goto Exite
    goto Exite

    ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

    :koz
    echo.
    echo.
    echo Сохраняю резервную копию реестра...
    reg export "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup" %systemdrive%\install.reg
    echo.
    echo Устанавливаю значения реестра...
    echo.
    echo Дистрибутив обнаружен...
    reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup" /v ServicePackSourcePath /t reg_sz /d %cdrom%\ /f
    reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup" /v "Installation Sources" /t reg_sz /d %cdrom%\ /f
    reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup" /v SourcePath /t reg_sz /d %cdrom%\ /f
    sfc/scannow
    reg import %systemdrive%\install.reg
    del /q %systemdrive%\install.reg
    echo.
    echo.
    ping -n 5 127.0.0.1 > NUL
    cls
    echo Проверка целостности системных файлов начата.
    echo Дождитесь окончания проверки.
    ping -n 15 127.0.0.1 > NUL
    goto Exite

    ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::


    :Exite
    cls
    Echo ====== Работа скрипта завершена ======
    Echo.
    Echo.
    Echo Скрипт подгтовлен Koza Nozdri
    Echo Сайт: SafeZone.cc
    Echo E-mail: Fire@safezone.cc
    Echo.
    Echo======================================================================
    Echo Бесплатное лечение компьютерных вирусов и решение проблем в работе ПК
    ping -n 15 127.0.0.1 > NUL
    Exit

    ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    :UNKNOWN
    cls
    Echo ===== ERROR! =====
    Echo Данный скрипт не предназначен для Вашей операционной системы,
    Echo воспользуйтесь соответствующим версии Вашей операционной системs сценарием
    Echo или обратитесь за помощью на форум: SafeZone.cc
    ping -n 10 127.0.0.1 > NUL
    Exit

    --- Объединённое сообщение, 14 дек 2013, Дата первоначального сообщения: 14 дек 2013 ---
    Переменная Live не создается в таком варианте.
     
    Последнее редактирование: 14 дек 2013
  5. Dragokas
    Оффлайн

    Dragokas Very kind Developer Команда форума Супер-Модератор Разработчик Клуб переводчиков

    Сообщения:
    4.498
    Симпатии:
    4.313
    Напиши вместо @echo off
    Код (Text):
    Echo. 1>&3 2>&4 3>>log.txt 4>&3
    Запусти скрипт. Проанализируй команды в протоколе.
     
  6. glax24
    Оффлайн

    glax24 Разработчик

    Сообщения:
    2.000
    Симпатии:
    1.450
    6.3 Windows 8.1 не хватает
     
    Kиpилл и Dragokas нравится это.
  7. Kиpилл
    Оффлайн

    Kиpилл Команда форума Администратор

    Лучший автор месяца

    Сообщения:
    12.232
    Симпатии:
    4.980
    Все исправил,ресурс обновил.
     
  8. Kиpилл
    Оффлайн

    Kиpилл Команда форума Администратор

    Лучший автор месяца

    Сообщения:
    12.232
    Симпатии:
    4.980
    Пользователь Koza Nozdri обновил ресурс Проверка целостности системных файлов утилитой sfc новой записью:

    Доработан алгоритм,добавлено определение Windows 8.1

    Узнать больше об этом обновлении...
     
    Sandor и Dragokas нравится это.
  9. Kиpилл
    Оффлайн

    Kиpилл Команда форума Администратор

    Лучший автор месяца

    Сообщения:
    12.232
    Симпатии:
    4.980
    Sandor, Dragokas, orderman и ещё 1-му нравится это.
  10. Dragokas
    Оффлайн

    Dragokas Very kind Developer Команда форума Супер-Модератор Разработчик Клуб переводчиков

    Сообщения:
    4.498
    Симпатии:
    4.313
    Koza Nozdri, известен ли тебе сам механизм проверки валидности (целостности) системных файлов ?
    Например, в XP диск запрашивается только если обнаружено повреждение целостности (т.е. проверка идет не сравнительным анализом).
    Следовательно меня интересует по каким критериям это происходит -
    т.е. как вариант - я проверил проходит ли проверка по каталогу безопасности Microsoft.
    Судя из имен импортируемых в sfc.dll и sfc_os.dll функций это неверный вариант.
    А еще - какие конкретно сис. файлы подлежат проверке (как получить их исчерпывающий перечень) ?
     
    Последнее редактирование: 15 янв 2014
    Kиpилл нравится это.
  11. Kиpилл
    Оффлайн

    Kиpилл Команда форума Администратор

    Лучший автор месяца

    Сообщения:
    12.232
    Симпатии:
    4.980

    так и назовем пост.
    Начнем с ХР.

    Проверка правильности версии защищенных системных файлов производится с помощью подписей файлов и файлов каталога, созданных в процессе подписывания.
    Список анализируется с помощью механизма защиты файлов Windows (WFP),SFC контролирует около 3000 системных файлов.
    (Библиотека Sfc.dll обеспечивает защиту указанных в списке файлов.)
    Вот примерный список каталогов,за которыми ведется "наблюдение":
    Код (Text):
    \%systemroot%\
    \%systemroot%\system\
    \%systemroot%\system32\
    \%systemroot%\system32\wbem\
    \%systemroot%\system32\usr\bri\
    \%systemroot%\system32\spool
    \prtprocs\
    \%systemroot%\system32\spool
    \prtprocs\w32x86\
    \%systemroot%\system32\spool
    \drivers\w32x86\3\
    \%systemroot%\system32\rpcproxy\
    \%systemroot%\system32\reminst\
    \%systemroot%\system32\os2\dll\
    \%systemroot%\system32\npp\
    \%systemroot%\system32\netmon\
    \%systemroot%\system32\mui\0009\
    \%systemroot%\system32\mts\
    \%systemroot%\system32\mts\mtxclex\
    \%systemroot%\system32\inetsrv\
    \%systemroot%\system32\export\
    \%systemroot%\system32\drivers\
    \%systemroot%\system32\com\
    \%systemroot%\system32\clients
    \tsclient\net\win32a\
    Но это не весь список.Копии оригинальных файлов из списка SFC хранятся в каталоге \%systemroot%\ system32\dllcache, если только в реестре в параметре SfcDllCacheDir не указано иное.

    Говорят можно отследить список запустив sfc.dll через утилиту Strings
    Не разбирался с этим еще.

    Если цифровая подпись не совпадает (т.е. отсутствует в каталоге) или замененный файл вообще не имеет подписи, служба защиты файлов Windows извлекает оригинальную версию файла из папки кэша и перезаписывает оригинальную версию поверх новой версии файла. Уведомление о предпринятых действиях записывается в журнал изменений.

    Выполняемые файлы, для которых компанией Microsoft создаются цифровые подписи, распространяются в составе следующих приложений.

    • Пакеты обновлений, запускаемые с помощью Update.exe
    • Исправления (hotfix), запускаемые с помощью Ноtfiх.ехе
    • Обновления операционной системы, запускаемые с помощью Winnt32.ехе
    • Служба Windows Update
    • Диспетчер устройств/Установщик классов (Device Manager/Class Installer)
    Если в \%systemroot%\ system32\dllcache оказалось не густо,или вообще ничего не оказалось то идет поиск директории i386 и уже оттуда идет восстановление в аналогичном порядке- сначала в \%systemroot%\ system32\dllcache,потом в целевую папку.
     
    Dragokas нравится это.
  12. Dragokas
    Оффлайн

    Dragokas Very kind Developer Команда форума Супер-Модератор Разработчик Клуб переводчиков

    Сообщения:
    4.498
    Симпатии:
    4.313
    Врут.
     

    Вложения:

    • sfc.dll.txt
      Размер файла:
      1,1 КБ
      Просмотров:
      5
    • sfc.exe.txt
      Размер файла:
      10,9 КБ
      Просмотров:
      3
    Turok и Kиpилл нравится это.
  13. Kиpилл
    Оффлайн

    Kиpилл Команда форума Администратор

    Лучший автор месяца

    Сообщения:
    12.232
    Симпатии:
    4.980
    Тогда будем разбираться.
     
  14. Kиpилл
    Оффлайн

    Kиpилл Команда форума Администратор

    Лучший автор месяца

    Сообщения:
    12.232
    Симпатии:
    4.980
    В общем файлы сравниваются по данным,сертификаты зашифрованы в

    HKCU\Software\Microsoft\SystemCertificates\CA\Certificates\
    HKLM\SOFTWARE\Microsoft\SystemCertificates\CA\Certificates

    И всех остальных,данные как я понял дешифруются с помощью crypt32.dll (шифрование диска),далее криптография на 10 страниц,куча инфы которую сложно перевести на русский,так же сложно воспринимать,если разбираться то понадобятся знания разных областей.
    http://msdn.microsoft.com/en-us/library/windows/desktop/bb204781(v=vs.85).aspx


    Думаю перенести обсуждение непосредственно в тему про sfc
    http://safezone.cc/threads/obzor-utility-sfc-exe.18934/
     
    Dragokas нравится это.
  15. Kиpилл
    Оффлайн

    Kиpилл Команда форума Администратор

    Лучший автор месяца

    Сообщения:
    12.232
    Симпатии:
    4.980
    Пользователь Koza Nozdri обновил ресурс Проверка целостности системных файлов утилитой sfc новой записью:

    Убрал автоматическую элевацию UAС (особенности bath),убрал весь мусор.

    Узнать больше об этом обновлении...
     
    Turok, orderman, shestale и ещё 1-му нравится это.
  16. Dragokas
    Оффлайн

    Dragokas Very kind Developer Команда форума Супер-Модератор Разработчик Клуб переводчиков

    Сообщения:
    4.498
    Симпатии:
    4.313
    Посмотри утилиту SFCFix by niemiro
    Может, есть смысл переговорить с ее разработчиком для свежих идей.
     
    Kиpилл нравится это.
  17. Kиpилл
    Оффлайн

    Kиpилл Команда форума Администратор

    Лучший автор месяца

    Сообщения:
    12.232
    Симпатии:
    4.980
    Ждем ответ.
    Предложил совместную разработку.
    eng,рус,ук.
     
  18. Kиpилл
    Оффлайн

    Kиpилл Команда форума Администратор

    Лучший автор месяца

    Сообщения:
    12.232
    Симпатии:
    4.980
    Пришел ответ.
    Позитивный.

    Во первых привет @akok от тамошнего админа (уж не знаю какие у них дела)
    А во вторых встает вопрос о том,как избежать анекдотичности при общении.
    Трнаслит это конечно нечто,несерьезно.

    Ну и я думаю тут коллективно нужно подойти к проекту.

    От меня - все наработки и алгоритмы,мысли ,от вас - содействие.

    Что скажете насчет трансконтинентального проекта?:Big Boss:
    --- Объединённое сообщение, 10 окт 2014, Дата первоначального сообщения: 10 окт 2014 ---
    в понедельник покажу им некоторые обновления утилиты,которые пока не доступны другим пользователям.
     
    Последнее редактирование: 10 окт 2014
    akok нравится это.
  19. akok
    Оффлайн

    akok Команда форума Администратор

    Сообщения:
    12.456
    Симпатии:
    13.954
    Тогда нужен план проекта :) Тоже привет передавай
     
  20. Dragokas
    Оффлайн

    Dragokas Very kind Developer Команда форума Супер-Модератор Разработчик Клуб переводчиков

    Сообщения:
    4.498
    Симпатии:
    4.313
    Пишите, стучите... Чем смогу помогу.

    Для начала нужно для себя определится, что это будет.
    Просто перевод или что-то большее.

    Основная затея той утили - скачивание с их файл.сервера сис. файла, если он поврежден в хранилище
    (на это действие запрашивается разрешение у пользователя).
     

Поделиться этой страницей