|
korsak7, дело не в атрибутах. Это специфика ОС Windows: файл и папка с одинаковым именем невозможны (в одном каталоге/корне). И при этом, команды удаления для файла и папки разные. Получается: вирус пытается записать файл Autorun.inf - ошибка (есть такая папка). Пробует удалить ФАЙЛ и повторить запись - тоже ошибка. А, чтобы догадался папку удалять - мне такие пока не встречались. А атрибуты папки скорее для того, чтобы глаза не мозолило (ну и удалять сложнее).
|
korsak7
- Стаж: 9 лет
- Сообщений: 1063
- Репутация:62[+] [-]
|
|
Metamorf
- Стаж: 9 лет 8 месяцев
- Сообщений: 85
- Репутация:3[+] [-]
- Откуда: Барнаул
|
Держите батник, который лечит флэшки и диски. Удаляет ярлыки, которые вместо папок, возвращает скрытые папки, удаляет авторан, создает не удаляемую штатными средствами папку авторан. Запускать из корня. Если вам нужно своё имя флешки, а не название "съемный диск", то вам этот способ не пойдет. Винда не отобразит имя диска, если на нем есть авторан.@echo off Setlocal EnableDelayedExpansion EnableExtensions mode con: cols=82 lines=30 title Anti Hidden Fast - Удаление следов вирусной деятельности ver.1.5.1 color 1a echo. echo Этап 1. Возобновление свойств корневых папок. echo. echo Будут установлены такие параметры: echo - не "Скрытый" echo - не "Системный" echo + стать собственником echo + предоставить полные права echo. echo Для ускорения операции можно временно отключить антивирусное ПО. Call :StrOne " Работаю с папкой: " <nul set /p text=%% Call :StrOne " " new Set Cur=%~dp0 Set Cur=%Cur:~0,-1% ::Оценка количества папок для прогресс-бара, запись первой порции папок в массив (Hidden) chcp 1251>nul for /f "delims=" %%i in ('dir "%Cur%" /b /a:dh 2^>nul') do (set /a folders+=1& Set F.!folders!=%Cur%\%%i) chcp 866>nul for /L %%A in (1,1,%folders%) do ( set /a Progress=100*%%A/%folders% Call :StrOne "!Progress! - !F.%%A!" Call :RecovFolder "!F.%%A!" ) chcp 1251>nul for /f "delims=" %%i in ('dir "%Cur%" /b /a:ds 2^>nul') do ( Call :StrOne "*** - %%i" Call :RecovFolder "%Cur%\%%i" ) chcp 866>nul Call :StrOne "100 - завершено. " echo. echo Этап 2. Удаление лишних ярлыков. chcp 1251>nul ::Удаление только ярлыков, имена которых соответствуют именам папок for /f "delims=" %%i in ('dir "%Cur%" /b /a:d') do if exist "%Cur%\%%i.lnk" ( call :killfile "%Cur%\%%i.lnk" ) chcp 866>nul echo Этап 3. Блокирование сторонних активных процессов и удаление их источника. if exist %appdata%\*.exe ( for /f "delims=" %%i in ('dir %appdata%\*.exe /b /a') do taskkill /im "%%i" /t /f call :killfile "%appdata%\*.exe" ) echo Этап 4. Удаление файла автозапуска. if not exist "%Cur%\autorun.inf\" if exist "%Cur%\autorun.inf" call :killfile "%Cur%\autorun.inf" echo Этап 5. Удаление модифицированных системных папок и инородных файлов. for %%a in ("recycled" "System Volume Information") do ( if exist "%Cur%\%%~a\" Call :KillFolder "%Cur%\%%~a") ) 1>nul 2>&1 if exist "%Cur%\recycler\" ( echo Найдена папка Recycler. Продолжить удаление корзины Windows для тома %~d0 ? Set /p RecycleRemove="Нажмите "Y" и кнопку {ENTER} " Echo.!RecycleRemove!|>nul find /i "y"&&Call :KillFolder "%Cur%\recycler" ) for %%b in (game.cpl system *.lnk) do for /F "delims=" %%a in ('2^>nul dir "%Cur%\%%b" /b /a:-d') do ( echo. echo Найдено подозрительный файл - %%a. echo Для удаления нажмите "Y" и кнопку {ENTER} (takeown /f "%Cur%\%%a"&echo y|cacls "%Cur%\%%a" /g %username%:f) 1>nul 2>&1 del /f /p /A "%Cur%\%%a" ) echo. color 1b echo Этап 5.1. Поиск и удаление файлов host.exe. Пожалуйста, подождите... tasklist |1>nul 2>&1 FindStr /B /L /I /C:host.exe&&( Echo В системе запущен подозрительный процесс Host.exe Set /p HostClose=" Завершить его? - нажмите Y и {ENTER}" Echo.!HostClose!|>nul find /i "y"&&taskkill /im "host.exe" /t /f ) (for /f "tokens=*" %%a in ('Dir /b /s /a:-d "%Cur%\host.exe"') Do ( if not Defined HostAgree ( Echo Все файлы с именем Host.exe будут удалены с носителя %~dp0% рекурсивно. Set /p HostAgree="Чтобы продолжить нажмите Y и {ENTER}" Echo.!HostAgree!|>nul find /i "y"||Goto :ExtHostSeek ) Call :KillFile "%%a" )) 2>nul :ExtHostSeek color 1a echo Этап 6. Создание защитного файла автозапуска, который не удаляется echo штатными средствами. if not exist "%Cur%\autorun.inf\" mkdir "%Cur%\autorun.inf" 1>nul 2>&1 if not exist "%Cur%\autorun.inf\Metamorf..\" mkdir "%Cur%\autorun.inf\Metamorf..\" 1>nul 2>&1 if not exist "%Cur%\autorun.inf\com1\" mkdir "\\?\%Cur%\autorun.inf\com1" 1>nul 2>&1 if not exist "%Cur%\autorun.inf\defence" ( mkdir "%Cur%\autorun.inf\defence" 1>nul 2>&1 echo y|1>nul 2>&1 cacls "%Cur%\autorun.inf\defence" /d Все echo y|1>nul 2>&1 cacls "%Cur%\autorun.inf\defence" /d All ) echo. echo Процедура проведена. Программа будет закрыта. ping -n 3 localhost 1>nul 2>&1 color goto :eof :RecovFolder attrib -s -h "%~1" 1>nul 2>&1 attrib "%~1"|>nul FindStr /BIR "....H.." if %errorlevel%==0 ( Call :GrantAccess "%~1" attrib -s -h "%~1" 1>nul 2>&1 ) else ( attrib "%~1"|>nul FindStr /BIR "...S..."&&( Call :GrantAccess "%~1" attrib -s -h "%~1" 1>nul 2>&1 ) ) exit /b :GrantAccess takeown /f "%~1" /r /d y 1>nul 2>&1 echo y|cacls "%~1" /g %username%:f 1>nul 2>&1 exit /b :KillFile attrib -s -h "%~1" 1>nul 2>&1 del /F /Q "%~1" 1>nul 2>&1 if exist "%~1" ( takeown /f "%~1" echo y|cacls "%~1" /g %username%:f del /F /Q /A "%~1" ) 1>nul 2>&1 if exist "%~1" ( del /F /Q /A "\\?\%~1" ) 1>nul 2>&1 exit /b :KillFolder attrib -s -h "%~1" 1>nul 2>&1 rd /S /Q "%~1" 1>nul 2>&1 if exist "%~1" ( takeown /f "%~1" /r /d y echo y|cacls "%~1" /g %username%:f rd /S /Q "%~1" ) 1>nul 2>&1 if exist "%~1" ( rd /S /Q "\\?\%~1" ) 1>nul 2>&1 exit /b :StrLen ::Вычисляет длину переменной. ::Результат записывается в переменную LastLen set strString=%~1 set /a LastLen = 0 ::Максимальная длина переменной = 1024 символа for /l %%i in (0,1,1024) do ( set strTempString=!strString:~%%i,1! if "!strTempString!" neq "" ( set /a LastLen+=1 ) ) exit /b 0 :StrOne ::%1 - строка, которую отображаем ::%2 - параметры: ::new - печатать рядом ::vblf - печатать с новой строки ::если опущен, то заменять предыдущий текст. if "%2"=="new" (set /a conWidth-=%LastLen%& call :StrWrite "%~1" New& exit /b 0) if "%2"=="crlf" (call :GetConsoleWidth& echo.&call :StrWrite "%~1" New& exit /b 0) ::если предыдущего текста не было, просто печатаем текст и записываем его длину if not defined LastLen (call :GetConsoleWidth& call :StrWrite "%~1" New& exit /b 0) ::Переменная с БекСпейсами Set BS= ::Набиваем нужным количеством БекСпейсов for /l %%i in (1,1,%LastLen%) do (Set BS=!BS!) ::Возвращаем каретку назад <nul set /p text=%BS% Set /a LenBefore=%LastLen% ::Печатаем текст поверх старого Call :StrWrite "%~1" Fill ::Если новый текст короче старого, нужно затереть оставшиеся символы if %LenBefore% GTR %LastLen% ( set Space= set /a n=%LenBefore%-%LastLen% rem Набиваем Space слева пробелами, а справа возратом каретки rem Нужно ее ведь затем вернуть в пред. позицию for /l %%i in (1,1,!n!) do (Set Space= !Space!) rem Знак подчеркивания + BackSpace здесь я использую для обхода ограничения rem т.к. иначе, если в начале строки мы захотим напечатать пробел - это не получится сделать rem Команда (<nul set /p text= Текст) выведет "Текст" без пробела! (<nul set /p text=_!Space!) ) exit /b 0 :StrWrite ::Вычисляем длину напечатанной строки Call :StrLen "%~1" ::Определяем поместится ли по ширине консоли Set Text=%~1 if %LastLen% GTR %conWidth% ( call set Text=!Text:~0,%conWidth%! set /a LastLen=%conWidth% ) ::Печатаем текст на той же строке <nul set /p text=_%Text% ::Обнуляем переменную длины предыдущей строки if "%2"=="New" set /a LenBefore=0 exit /b 0 :GetConsoleWidth ::Получение ширины консоли For /F "skip=4 tokens=1,2" %%v In ('mode con') Do ( Set /A conWidth=%%w-4 Exit /B )
Последний раз редактировалось: Metamorf (2015-04-05 17:16), всего редактировалось 1 раз
|
KaSpieC 666
- Стаж: 9 лет 9 месяцев
- Сообщений: 787
- Репутация:127[+] [-]
- Откуда: Одесса
|
Доброго всем времени суток! korsak7 Panda USB and AutoRun Vaccine Не работает на exFat, и есть немного негативных отзывов (в комментариях по Вашей ссылке). Может есть какие ещё ограничения? И если не затруднит, могли бы Вы более углубленно, по возможности, описать возможность программы (из Вашего опыта "ковыряния" в ней)? Metamorf Ваш способ (Anti_Hidden), он как писал conty9 - делает атрибуты "Read-only", "Hidden", "System"? (не силён в этом, так что не ругайте) И что означает:Удаляет ярлыки, которые вместо папок, удаляет авторан ? О каких ярлыках идёт речь? И авторан - вирус может удалить, который прописался? NTFS Drive Protection (по совету conty9) - не проверял, так как не всегда использую NTFS... Также попробовал способ nikzzzz и его FullBubble, не знаю как на других файловых системах, но на FAT32 - довольно долго идёт процесс (а флешка на 16ГБ), но рабочий способ. P.S. никто не желает создать тему Защита usb от вируса (вариантов достаточно), а эту тему удалить за ненадобностью?
|
Metamorf
- Стаж: 9 лет 8 месяцев
- Сообщений: 85
- Репутация:3[+] [-]
- Откуда: Барнаул
|
KaSpieC 666, Приветствую! Мой способ создаст папку, которую не то, что вирус, ты и сам не сможешь удалить. В папке autorun.inf создаются еще папки, каждая с разными вариантами защиты от удаления. Может одну сможешь удалить... Попробуй. Обычно авторан вирусы делают папки скратыми системными и только для чтения, вместо папок создают ярлыки с иконкой внешне неотличимой от папки. Пользователь нажимая наиярлык, запускает скрипт, написанный вирусописателем, а потом открывается папка. Пользователь сам распространяет вирус, открывая папки на разных компах. Выложенный мной скрипт, удаляет вирус, восстанавливает аттрубуты папок, удаляет ярлыки, создает защиту на флэшке. Незнаю как еще объяснить.
|
KaSpieC 666
- Стаж: 9 лет 9 месяцев
- Сообщений: 787
- Репутация:127[+] [-]
- Откуда: Одесса
|
Доброго времени Вам! korsak7 понял! Metamorf Да больше и объяснять нечего! Спасибо Вам, что поделились!
|
Отправлено: 09-Апр-2015 17:09
(спустя 2 часа 7 минут)
KaSpieC 666
- Стаж: 9 лет 9 месяцев
- Сообщений: 787
- Репутация:127[+] [-]
- Откуда: Одесса
|
nikzzzz, Доброго времени суток! А есть какие-то предложения, как это поправить?
|
nikzzzz
- Стаж: 9 лет 9 месяцев
- Сообщений: 3114
- Репутация:127[+] [-]
|
KaSpieC 666,А есть какие-то предложения, как это поправить? Не использовать FAT, с NTFS все нормально.
|
Metamorf
- Стаж: 9 лет 8 месяцев
- Сообщений: 85
- Репутация:3[+] [-]
- Откуда: Барнаул
|
nikzzzz, Я даже неподумал, что можно переименовать)))) Кстати Unlocker может удалить.
|
KaSpieC 666
- Стаж: 9 лет 9 месяцев
- Сообщений: 787
- Репутация:127[+] [-]
- Откуда: Одесса
|
Metamorf, Доброго времени! А нет мыслей, как это обойти? Интересно, как себя на exFAT поведет.
|
Metamorf
- Стаж: 9 лет 8 месяцев
- Сообщений: 85
- Репутация:3[+] [-]
- Откуда: Барнаул
|
KaSpieC 666, Не заморачивайся. Вирусы авторан простые, иначе их ловят антивирусы. Не переименовывают они папку. Они файл пытаются создать, возможно с попыткой замены старого. Им это не удастся.
|
Отправлено: 13-Июн-2016 21:06
(спустя 1 год 2 месяца)
JOYsticK
- Стаж: 9 лет 8 месяцев
- Сообщений: 22
- Репутация:-1[+] [-]
|
может кому-то будет интересно, я для себя делал что-то наподобие но чтоб картинка у флешки была моя.
|
Страница 2 из 3
Текущее время: 21-Ноя 14:42
Часовой пояс: UTC + 3
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете прикреплять файлы к сообщениям Вы можете скачивать файлы
|
|