PDA

Показать полную графическую версию : [решено] WinLock блокировка входа в Windows


Fomarkin
15-02-2010, 19:01
Все "разблокираторы" и "генераторы номеров" хороши, но чтоб их запустить надо еще попасть в систему.
Написал простенький скрипт для защиты реестра от запуска Winlock.
Может кому поможет:


Opt ('TrayIconHide', 1)
#Include <date.au3>
$today = _NowDate()
$htime = _NowTime()
Func checkit ()
$val = RegRead ($section, $key)
if $val <> $def then
$i+=1
$logfile = FileOpen ($today&'.txt', 1)
If $logfile = -1 Then
MsgBox(0, "Ошибка", "Невозможно открыть файл.")
EndIf
FileWriteLine ($logfile, $htime&"- Изменен "&$i&" параметр"&@CRLF)
FileWriteLine ($logfile, $section&@CRLF)
FileWriteLine ($logfile, "стандартный ключ: "&$key&'='&$def&@CRLF)
FileWriteLine ($logfile, "измененый ключ: "&$key&'='&$val&@CRLF)
FileClose ($logfile)
RegWrite ($section, $key, $parreg,$def )
return ($i)
EndIf
EndFunc
$exscript = 0
Do
Sleep (5000)
$section ='HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon'
$i =0
$parreg = "REG_SZ"
$key ='Shell'
$def ='Explorer.exe'
checkit ()
$key ='System'
$def =''
checkit ()
$key = 'Userinit'
$def = @SystemDir&'\userinit.exe,'
checkit ()
$section = 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows'
$key = 'AppInit_DLLs'
$def = ''
checkit ()
if $i > 0 then
$alarm = "Неизвестной программой были изменено: " & $i & @CRLF & "Значений реестра, проверь систему!"
MsgBox ( 262160, "Внимание !!", $alarm, 30 )
ShellExecute($today&'.txt', "", @ScriptDir, "open")
Sleep (2000)
if FileExists ( "HijackThis.exe" ) then
Run ("HijackThis.exe")
EndIf
$exscript = 1
EndIf
Until $exscript = 1

Пояснять тут вроде нечего, параметры можно добавить (если появятся другие пути запуска)
Можно скомпилироать екзешник и добавить ярлык в автозагрузку (лучше установить как службу, меньше будет подтормаживать систему, хоть и некритично, он занимает всего 6 мб в свопе). Скрипт только препятствует загрузке WinLock при входе в Windows, он не удаляет вирус, только записывает измененые значения в лог. Обработка ошибок не предусмотрена, для запуска HijackThis файл должен лежать
в папке с екзешником.

iskander-k
15-02-2010, 19:15
Пояснять тут вроде нечего, »
Если поподробнее пояснили - было бы лучше.
А если бы - собрали бы самостоятельную утилитку с автозапуском при запуске компа - было бы хорошо. клиенту не объяснишь на пальцах по инету как ему запустить этот скрипт.

Drongo
15-02-2010, 19:38
Можно скомпилироать екзешник и добавить ярлык в автозагрузку »Можно, конечно. :) Все поголовно прогеры :gigi: и разбираются во всех языках программирования и у всех есть необходимые компиляторы. Поправьте меня если я не правильно понял.
Здесь идёт проверка ветки
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WinlogonИ ключей. Верно?
Shell
Userinit
AppInit_DLLsЕсли значение этих ключей отличается от обычного, то вывести информацию в лог сколько ключей изменено.

Это вроде константных данных, с которыми мы сравниваем изменения. Так?
...
$section ='HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon'
$i =0
$parreg = "REG_SZ"
$key ='Shell'
$def ='Explorer.exe'
checkit ()
$key ='System'
$def =''
checkit ()
$key = 'Userinit'
$def = @SystemDir&'\userinit.exe,'
checkit ()
$section = 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows'
$key = 'AppInit_DLLs'
$def = ''
checkit ()
...

Fomarkin, Желательно как минимум, откоментировать каждую строку. :)

thyrex
15-02-2010, 20:04
+ к Drongo

Не вижу смысла в этой проверке AppInit_DLLs = ''Очень часто можно встретить в этом параметре запись от Касперского. Да и vksaver туда лезет. Их явно не отнесешь к Winlocker'ам :)

Drongo
15-02-2010, 20:32
Очень часто можно встретить в этом параметре запись от Касперского. Да и vksaver туда лезет. »Да, а также DLL'ки фаерволов, Outpost и т.д. Поэтому при таком раскладе скрипт перепишет легальное и существующее значение для AppInit_DLLs.

Fomarkin
15-02-2010, 21:00
Sleep таймаут между проверками (5 сек.)
$parreg = Параметр ключа
$section = Раздел реестра для проверки
$key = Проверяемый ключ
$def = значение по дефолту
checkit () функция проверки, записи в лог и востановления на дефолт.
Скрипт дан для примера
Нужна ли проверка AppInit_DLLs, Вам решать, можно посмотреть http://www.z-oleg.com/secur/virlist/vir1158.php
Параметры можно поставить, такие какие стоят у Вас на компьютере. Поэтому и выложил скрипт, а не скомпилированный файл. Свои параметры могут быть не только у AppInit_DLLs, но и по моему у Shell вроде бы Aston туда себя прописывает (хотя могу и ошибаться).
и у всех есть необходимые компиляторы. »
AutoIt бесплатен и есть подробная справка на русском, достаточно открыть соответствующую ветку форума




© OSzone.net 2001-2012