Всё началось с того, что я искал в инете малопопулярную прогу. В итоге, открыв очередной файл, открылась фотка "неприятного" содержания. Я уже догадывался, что будут хлопоты...
Вирус имел название SSVCHOST. Комп я редко перезагружаю, и за это время успел хватануть с флэшки ещё 1 вирус, написанный на АвтоИт. настал тот час, когда пришлось перезагрузить комп... И настало время бороться с вирусами. Со 2-ым проблем не было, но с 1-ым... Вырубить его не составляло особого труда, но он блокировал и диспетчер задач, и реестр. Вроде бы удалил его из автозагрузки, но всё равно он загружался... И пришла идея мне сделать прогу, которая будет сама бороться с последствиями вирусов... В ходе её написания(чтения разных статей) я узнал, что вирус прописался в запись реестра Shell... Вот так вот.... Ниже приведу пример функций, которые написал... Они избавляют от всякой возни... Кому не лень, подскажите ещё идем для развития... Пока что прога - тупой набор функция, но планирую написать ГУИ....
Буду благодарен за советы!
Добавлено:
Кстати статьи:
http://www.windxp.com.ru/confreg.htm
http://www.windxp.com.ru/autop.htm
http://bezopasnik.org/info/13.htm
Вирус имел название SSVCHOST. Комп я редко перезагружаю, и за это время успел хватануть с флэшки ещё 1 вирус, написанный на АвтоИт. настал тот час, когда пришлось перезагрузить комп... И настало время бороться с вирусами. Со 2-ым проблем не было, но с 1-ым... Вырубить его не составляло особого труда, но он блокировал и диспетчер задач, и реестр. Вроде бы удалил его из автозагрузки, но всё равно он загружался... И пришла идея мне сделать прогу, которая будет сама бороться с последствиями вирусов... В ходе её написания(чтения разных статей) я узнал, что вирус прописался в запись реестра Shell... Вот так вот.... Ниже приведу пример функций, которые написал... Они избавляют от всякой возни... Кому не лень, подскажите ещё идем для развития... Пока что прога - тупой набор функция, но планирую написать ГУИ....
Буду благодарен за советы!
Код:
#include <array.au3>
Func _Regedit_ctfmon()
Dim $array[999][3]
_Regedit_AutorunList($array)
For $i = 0 To UBound($array) - 1
If $array[$i][1] == "CTFMON.EXE" Then
If $array[$i][2] == "C:\WINDOWS\system32\ctfmon.exe" Then
return 0
EndIf
EndIf
Next
RegWrite("C:\WINDOWS\system32\ctfmon.exe", "CTFMON.EXE", 'REG_SZ', 'C:\WINDOWS\system32\ctfmon.exe')
MsgBox(0,'', 'Создали запись ctfmon.exe, перезагрузите комп!')
EndFunc
Func _Regedit_AutorunOfIni()
Local $tmp_dir = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer"
If RegRead($tmp_dir, "NoDriveTypeAutoRun") <> "0xFF" Then
MsgBox(0,"", "Создаю отключение автозапуска")
RegWrite($tmp_dir, "NoDriveTypeAutoRun", "REG_DWORD", "0xFF")
EndIf
EndFunc
Func _Regedit_Shell()
Local $tmp_dir = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon"
If RegRead($tmp_dir, "Shell") <> "Explorer.exe" Then
MsgBox(0,"", "Обнаружена изменения в записи Shell, отвечающей за загрузку оболочки Windows!")
RegWrite($tmp_dir, "Shell", "REG_SZ", "Explorer.exe")
EndIf
EndFunc
Func _Regedit_TascMgr()
Local $tmp_dir = "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System"
If RegRead($tmp_dir, "DisableTaskMgr") == 1 Then
RegWrite($tmp_dir, "DisableTaskMgr", "REG_DWORD", 0)
return 1
EndIf
EndFunc
Func _Regedit_AutorunList(ByRef $array)
Local $i = 1, $i_array = 0, $tmp_dir
$tmp_dir = "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run"
While True
$val = RegEnumVal($tmp_dir, $i)
If @error <> 0 Then ExitLoop
$array[$i_array][0] = $tmp_dir
$array[$i_array][1] = $val
$array[$i_array][2] = RegRead($tmp_dir, $val)
$i_array = $i_array + 1
$i = $i + 1
WEnd
$tmp_dir = "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run"
$i = 1
While True
$val = RegEnumVal($tmp_dir, $i)
If @error <> 0 Then ExitLoop
$array[$i_array][0] = $tmp_dir
$array[$i_array][1] = $val
$array[$i_array][2] = RegRead($tmp_dir, $val)
$i_array = $i_array + 1
$i = $i + 1
WEnd
;_ArrayDisplay($array)
;RegEnumKey()
EndFunc
Func _Regedit_Regedit()
Local $tmp_dir = "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System"
If RegRead($tmp_dir, "DisableRegistryTools") == 1 Then
RegWrite($tmp_dir, "DisableRegistryTools", "REG_DWORD", 0)
return 1
EndIf
EndFunc
Func _Windows_Autorun()
Local $tmp = @HomeDrive & "\autoexec.bat"
If FileExists($tmp) Then
MsgBox(0, "", "Удаляю файл " & $tmp)
FileDelete($tmp)
EndIf
Local $tmp = @HomeDrive & "\autorun.inf"
If FileExists($tmp) Then
MsgBox(0, "", "Удаляю файл " & $tmp)
FileDelete($tmp)
EndIf
EndFunc
Func _Windows_Explorer()
If ProcessExists("explorer.exe") == 0 Then Run("C:\WINDOWS\explorer.exe")
EndFunc
Func _Windows_Ctfmon()
If ProcessExists("ctfmon.exe") == 0 Then Run("C:\WINDOWS\ctfmon.exe")
EndFunc
_Windows_Explorer() ;запускает explorer.exe
_Windows_Ctfmon() ;запускает ctfmon.exe
_Windows_Autorun() ;проверяет наличие файлов автозагрузки и удаляет их
_Regedit_Shell() ;провярет запись shell там могут быть вирусы или отключен explorer.exe
_Regedit_AutorunOfIni() ;Вырубает запуск autorun.ini на всех дисках
_Regedit_Ctfmon() ;Проверяет наличие записи ctfmon.exe
_Regedit_TascMgr() ;Убирает диспетчер задач отключен администратором
_Regedit_Regedit() ;Убирает реестр отключен администратором
Добавлено:
Сообщение автоматически объединено:
Кстати статьи:
http://www.windxp.com.ru/confreg.htm
http://www.windxp.com.ru/autop.htm
http://bezopasnik.org/info/13.htm