Приложение 6. Патч Sfcfiles.dll
читать дальше »
В составе Update pack приcутствует патч SFCfiles.dll написанный участником конференции BoaSoft
Взаимодействовать с патчером возможно путем конфигурационных файлов KillWFP.lst, DelDrv.lst, DelOC.lst.
Синтаксис простой: название файла с расширением для которого необходимо отключить WFP и\или который
необходимо удалить из дистрибутива.
Описание патча sfcfiles.dll предоставим автору:
Зачем это нужно?
Большая часть важных для системы файлов в Windows Xp защищена от удаления и изменения
функцией WPF - windows file protection.
Если Вы хотите удалять или изменять некотрые файлы, то система не даст этого сделать,вернее обойти это можно, но при запуске sfc произойдет замена файлов на оригинальные или же последует вопрос на вставку диска с дистрибутивом.
Можно полностью отключить защиту, но тогда система становится беззащитной перед шаловливыми руками пользователя или криво перепакованными дистрибутивами игрушек.
Результат - отсутствующие файлы, Dll hell и падение системы.
Обычно же надо исключить только несколько фалов. Этого легко достичь патчем SfcFiles.dll, заставив ее "забыть" о этих файлах.
Алгоритм работы.
Программа действует очень просто
Какие файлы защищены - это система узнает из SfcFiles.dll. Эта библиотека не несет в себе прямых функций защиты, а только выдает список защищенных файлов.
Там находятся списки защищаемых файлов, целых 5 штук для разных систем:
Xp pro
Xp home
Xp tablet PC
Xp mediacenter
Xp starter
В серверной библиотечке тоже 5 списков, но их назначения (соответствия версиям продуктов) не выяснены.
Система защиты получает список защищенных файлов с полными путями из этой библиотеки, вызывая Api - функцию SfcGetFiles. Нам же нужно, чтобы в этот список не попали нужные нам файлы.
В 3-й версии патчера применен новый алгоритм - патчатся не строковые значения, а таблица указателей. Этих таблиц так же 5 - по числу версий продукта. В этой таблице просто происходит подмена указателей на выводимые из защиты файлы на указатель на любой из оставшихся файлов. В результате при выдаче списка файлов просто некоторые файлы будут присутствовать более одного раза, а работа SFC никак не изменится - все не выведенные файлы будут защищены..
Патчер автоматом корректирует CRC в PE заголовке файла и файл готов к применению.
Если в логе говорится, что файл не найден, скорее всего он не входит в список защищенных. Для стабильного результата патчите всегда оригинал, но повторный патч библиотеки, уже пропатченной этой версией патчера, не приведет к ошибке.
NB! Если патчить библиотеку, ранее уже патченную более старыми версиями патчера или другими утилитами, то возможны разные непредсказуемые проблемы.
Проверялось с SfcFiles.dll от windows sp2 rus/ sp2 en/ sp1/2003 server rus.
(Во всей линейке OS одного семейства и сервиспака библиотека одинакова!)
С другими версиями программа так же должна работать.
Проверить правильность работы можно на рабочей OS, временно заменив оригинальную библиотеку на патченую, проигнорировав крик о вставке диска и перезагрузившись.
SFC /scannow должно работать!!! Если нет - то увы.