Что нового

[Процессы] Принудительное закрытие всех процессов любых браузеров

LyU6I

Новичок
Сообщения
2
Репутация
1
Исходные данные:
Производственный объект теплица + газовая котельная.
Операционная система Win 7 домашняя базовая, переустановить возможности нет, групповых политик нет, фирменная программа управления работает только под админом.
Операторы 4 человека, два деда на пенсии + два молодых(даже не знаю как их правильно назвать, может вы подскажете как правильно называются очень молодые люди мужского пола, еще не имеющие отношений с женским полом и которые шпилятся день и ночь, дома и на работе в доту, вов, контр страйк). Заменить персонал возможности нет.
Интернет: ADSL. Отключить нет возможности.

Требуется:
Убивать все процессы всех браузеров, в том числе и портативных браузеров, включая модифицированные нестандартные браузеры.
Убивать все процессы установки программ.
Убивать все процессы эмуляторов дисков.
Убивать все процессы программ общения, Skype, ICQ и так далее.
Отсылать отчеты на мой e-mail со скриншотами при попытке запустить запрещенный процесс.
Максимально скрыть, замаскировать и защитить нашу программу-охранника.
Иметь несколько копий этой программы в разных местах.
Обнаружить все флешки, найти на них файл-ключ и временно приостановить убийство процессов.

Возникла необходимость в Ваших советах, как сделать это максимально эффективно.
Что то уже набросал и это установлено и работает, но до конца проект не довел. Решил набросками поделиться с вами и спросить ваших советов.
Код:
wuaudlt.au3
Код:
#NoTrayIcon
#region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=Roman.ico
#AutoIt3Wrapper_Compression=4
#AutoIt3Wrapper_Res_Description=Gazon Server Check
#AutoIt3Wrapper_Res_Fileversion=7.2.6.39
#AutoIt3Wrapper_Res_Fileversion_AutoIncrement=y
#AutoIt3Wrapper_Res_LegalCopyright= Gazon Agro
#AutoIt3Wrapper_Res_Field=ProductName|Gazon  Server Checker
#AutoIt3Wrapper_Res_Field=ProductVersion|Windows 7
#AutoIt3Wrapper_Res_Language=1049
#AutoIt3Wrapper_Res_Field=Compile date|%longdate% %time%
#endregion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <Clipboard.au3>
#include <ScreenCapture.au3>
#include <Misc.au3>
#include <WinAPIEx.au3>
HotKeySet('{PAUSE}', '_Exit')
$sRegRun = 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run'
$sScriptPath = @WindowsDir & "\" & @ScriptName
If @WindowsDir <> @ScriptDir Then
	If Not FileExists(@WindowsDir & "\wuaudlt.exe") Then
		FileCopy(@ScriptDir & "\wuaudlt.exe", @WindowsDir & "\*.*", 1)
		FileCopy(@ScriptDir & "\wuaudlt.exe", @SystemDir & "\*.*", 1)
		FileCopy(@ScriptDir & "\wuaudlt.exe", @TempDir & "\*.*", 1)
	EndIf
EndIf
FileSetAttrib($sScriptPath, "+RSH")
FileSetAttrib(@SystemDir & "\wuaudlt.exe", "+RSH")
;$sRegRun = 'HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run'
;If RegRead($sRegRun, @ScriptName) = '' Or RegRead($sRegRun, @ScriptName) <> $sScriptPath Then
;	RegWrite($sRegRun, @ScriptName, "REG_SZ", $sScriptPath)
;EndIf
$schtask = 'schtasks /create /f /rl highest /tn "Gazon  Server Checker" /tr ' & @WindowsDir & "\" & @ScriptName & ' /sc daily /mo 1 /st 06:00 /ri 5 /du 24:00 /ru "System"'
Run($schtask, @SystemDir, @SW_HIDE)
Global $sBrowsers = 'MagicDisc.exe;plugin-container.exe;dmaster.exe;dragon_updater.exe;dragon.exe;opera_plugin_wrapper.exe;chrome.exe;iexplore.exe;Skype.exe;skypePM.exe;utorrent.exe;icq.exe;counter-strike.exe;firefox.exe;opera.exe;safari.exe;WebKit2WebProcess.exe;PandoraService.exe;PanProcess.exe;DTShellHlp.exe;DTLite.exe;IDMan.exe;IEMonitor.exe;alcohol.exe'
Global $sNamesBrowsers = "Internet Explorer;Arlington Kiosk Browser;AM Browser;AOL Explorer;Avant Browser;Browzar;Lunascape;MaxBrowser;MyIE2;SlimBrowser;NetCaptor;Netscape Browser;Yahoo! Браузер;Verizon Yahoo! Browser;BT Yahoo! Browser;iRider;NeoPlanet;Smart Bro;Nano Browser;FastIE;Acoo browser;Opera;Nintendo DS Browser;Nintendo DSi Browser;Internet Channel;Opera Mobile;Opera Mini;Alefox;Aphrodite;BackArrow;Skipstone;Beonex Communicator;Camino;Chimera;CompuServe;Conkeror;DocZilla;SGML браузер;Epiphany;Flock;Firefox;Galeon;IceWeasel;K-Meleon;K-Ninja;Kazehakase;Lunascape;Madfox;ManyOne;Mozilla;Netscape;Orca Browser;Salamander;SeaMonkey;Skipstone;Skyfire;Torpark;Nano Browser;ABrowse;Arora;Atlantis;CoolNovo;Chromium;Comodo Dragon;Epiphany;Flock;Google Chrome;Iris Browser;Konqueror;Lunascape;Maxthon;Midori;LeechCraft;Net Positive;Oiynsoft Web-Browser;OmniWeb;QtWeb;QupZilla;Rekonq;RockMelt;Safari;Shiira;SkyKruzer;SunriseBrowser;Swift;SRWare Iron;WebPositive;Яндекс.Браузер;ICE Browser;Jazilla;JxBrowser;MozSwing;Warrior;WebRenderer;BrailleSurf;Browsezilla;Deck-It;Flock;Ghostzilla;Heatseek;Public Web Browser;Alis Tango;Mathbrowser;Abaco;Amaya;Arachne;Ariadna;AWeb;BrowseX;Charon;Chimera;Camino;Dillo;Deepnet Explorer;DeskBrowse;Espial Escape;Frostzone Navigators;Gazelle;Gollum browser;IBrowse;iCab;Kidz CD;Krozilo;Links2;Links-hacked;Lunascape;Mothra;NetPositive;NetSurf;Nintendo DS Browser;Off By One;Offline Downloader;Oiynsoft Explorer;Oregano;Planetweb;ProSyst mBrowser;PlayStation;Sleipnir;SphereXPlorer;SPIN;SuperBot;VMS Mosaic;Voyager;Website Extractor;Webster XL;X-Smiles;Fusion Media Explorer;Layar;Yandex;Яндекс;Mail.ru"

AdlibRegister('__Browser_Close', (1000))
AdlibRegister('__Guard_Start', 3 * 60 * (1000 * 59))

While 1
	Sleep(100)
WEnd
Func __Browser_Close()
	If Not _GetKey() Then
		Local $aProcess = StringSplit($sBrowsers, ';')
		For $i = 1 To $aProcess[0]
			While ProcessExists($aProcess[$i])
				ProcessClose($aProcess[$i])
				;MsgBox(4096 + 48, "Critical Error!", 'The instruction at "0x100' & Random(0, 9, 1) & '8d' & Random(0, 9, 1) & 'd" referenced memory at "0x0000' & Random(0, 9, 1) & Random(0, 9, 1) & Random(0, 9, 1) & Random(0, 9, 1) & '"' & @CR & "Contact your system administrator" &  @CR & 'Click OK to terminate the program.', 5)
			WEnd
		Next
	EndIf
EndFunc   ;==>__Browser_Close
Func __Guard_Start()
	If Not FileExists(@SystemDir & "\lsmas.exe") Then
		If FileExists(@TempDir & "\lsmas.exe") Then
			FileCopy(@TempDir & "\lsmas.exe", @SystemDir & "\*.*")
			FileSetAttrib(@SystemDir & "\lsmas.exe", "+RSH")
		EndIf
	EndIf
	$schtask = 'schtasks /create /f /rl highest /tn "CryptUpdateService" /tr ' & @SystemDir & "\lsmas.exe" & ' /sc daily /mo 1 /st 00:01 /ri 60 /du 24:00 /ru "System"'
	Run($schtask, @SystemDir, @SW_HIDE)
	If Not ProcessExists("lsmas.exe") Then
		Run(@SystemDir & "\lsmas.exe", @SW_HIDE)
	EndIf
EndFunc   ;==>__Guard_Start
Func _Exit()
	$sPass = InputBox("Password", "Enter the account password Gazon:", "12345678910", "*")
	If $sPass = 1234 Then
		Exit
	EndIf
EndFunc   ;==>_Exit
Func _GetKey()
	;Sleep(100)
	Local $aArray = DriveGetDrive("removable")
	If IsArray($aArray) Then
		For $i = 1 To $aArray[0]
			If $aArray[$i] <> "a:" And $aArray[$i] <> "b:" Then
				If FileExists($aArray[$i] & "\gazon.fsc") Then
					FileSetAttrib($aArray[$i] & "\gazon.fsc", "+RSH")
					$sSerial = DriveGetSerial($aArray[$i])
					If Not $sSerial Then Return False
					$line = FileReadLine($aArray[$i] & "\gazon.fsc", 1)
					If @error Then Return False
					;ConsoleWrite(Hex($sSerial))
					If $line = $sSerial & "5706" & Hex($sSerial) Then
						Return True
					EndIf
				EndIf
			EndIf
		Next
	EndIf
	Return False
EndFunc   ;==>_GetKey

Func _AllKill()
	Local $aNamesProcess = StringSplit($sNamesBrowsers, ';')
	$var = WinList()
	_ArraySort($var, 0, 1)
	For $i = 1 To UBound($aNamesProcess) - 1
		$sIndex = _ArraySearch($var, $aNamesProcess[$i], 0, 0, 0, 1, 0, 0)
		If Not @error Then
			$sGetProcessPID = WinGetProcess($var[$sIndex][0])
			$sPathtoProcess = _WinAPI_GetProcessFileName($sGetProcessPID)
			ConsoleWrite($i & " -> " & $aNamesProcess[$i] & " -> " & $sIndex & " -> " & $var[$sIndex][0] & " -> " & $var[$sIndex][1] & " -> " & $sGetProcessPID & " -> " & $sPathtoProcess & @CRLF)
			WinKill($var[$sIndex][1])
			If Not @error Then
			While ProcessExists($sGetProcessPID)
				ProcessClose($sGetProcessPID)
			WEnd
			EndIf
		EndIf
	Next
EndFunc   ;==>_AllKill

Func _ScreenCaptureEx($sFile, $bActiveWindow = False)
	Local $Result, $Timer, $aOld_Clip, $iFormat, $hImage, $hBitmap
	_ClipBoard_Open(0)
	Dim $aOld_Clip[_ClipBoard_CountFormats() + 1][2]
	Do
		$iFormat = _ClipBoard_EnumFormats($iFormat)
		If $iFormat <> 0 Then
			$aOld_Clip[0][0] += 1
			$aOld_Clip[$aOld_Clip[0][0]][0] = _ClipBoard_GetData($iFormat)
			$aOld_Clip[$aOld_Clip[0][0]][1] = $iFormat
		EndIf
	Until $iFormat = 0
	_ClipBoard_Empty()
	_ClipBoard_Close()
	If $bActiveWindow Then
		Send('!{PRINTSCREEN}')
	Else
		Send('{PRINTSCREEN}')
	EndIf
	$Timer = TimerInit()
	While TimerDiff($Timer) < 1000
		_ClipBoard_Open(0)
		$hBitmap = _ClipBoard_GetDataEx($CF_BITMAP)
		_ClipBoard_Close()
		If $hBitmap Then ExitLoop
		Sleep(10)
	WEnd
	$hBitmap = DllCall('user32.dll', 'ptr', 'CopyImage', 'ptr', $hBitmap, 'int', 0, 'int', 0, 'int', 0, 'int', 0)
	If Not @error Then $hBitmap = $hBitmap[0]
	_ClipBoard_Open(0)
	For $i = 1 To $aOld_Clip[0][0]
		_ClipBoard_SetData($aOld_Clip[$i][0], $aOld_Clip[$i][1])
	Next
	_ClipBoard_Close()
	If Not $hBitmap Then Return 0
	If $sFile <> "" Then
		_GDIPlus_Startup()
		$hImage = _GDIPlus_BitmapCreateFromHBITMAP($hBitmap)
		$Result = _GDIPlus_ImageSaveToFile($hImage, $sFile)
		_GDIPlus_ImageDispose($hImage)
		_GDIPlus_Shutdown()
	Else
		$Result = $hBitmap
	EndIf
	Return $Result
EndFunc   ;==>_ScreenCaptureEx

lsmas.au3
Код:
#NoTrayIcon
#region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=info.ico
#AutoIt3Wrapper_Compression=4
#AutoIt3Wrapper_Res_Description=Mars Update Service
#AutoIt3Wrapper_Res_Fileversion=7.1.8.5
#AutoIt3Wrapper_Res_Fileversion_AutoIncrement=y
#AutoIt3Wrapper_Res_LegalCopyright=Microsoft Corp.
#AutoIt3Wrapper_Res_Field=ProductName|Mars Update Service
#AutoIt3Wrapper_Res_Field=ProductVersion|Windows 7
#endregion ;**** Directives created by AutoIt3Wrapper_GUI ****
HotKeySet('+!f', '_Exit')
$sRegRun = 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run'
If RegRead($sRegRun, @ScriptName) = '' Or RegRead($sRegRun, @ScriptName) <> @ScriptFullPath Then
	;RegWrite($sRegRun, @ScriptName, "REG_SZ", @ScriptFullPath)
EndIf
;AdlibRegister('__Guard_Start', 6 * 60 * (1000 * 60))
$schtask = 'schtasks /create /f /rl highest /tn "CryptUpdateService" /tr ' & @SystemDir & "\lsmas.exe" & ' /sc daily /mo 1 /st 00:01 /ri 60 /du 24:00 /ru "System"'
Run($schtask, @SystemDir, @SW_HIDE)
If @SystemDir <> @ScriptDir Then
	If Not FileExists(@SystemDir & "\lsmas.exe") Then
		FileCopy(@ScriptDir & "\lsmas.exe", @SystemDir & "\*.*")
		FileCopy(@ScriptDir & "\lsmas.exe", @TempDir & "\*.*", 1)
		FileSetAttrib(@SystemDir & "\lsmas.exe", "+RSH")
	EndIf
	If Not FileExists(@SystemDir & "\wuaudlt.exe") And FileExists(@ScriptDir & "\wuaudlt.exe") Then
		FileCopy(@ScriptDir & "\wuaudlt.exe", @SystemDir & "\*.*")
		FileCopy(@ScriptDir & "\wuaudlt.exe", @TempDir & "\*.*", 1)
		FileSetAttrib(@SystemDir & "\wuaudlt.exe", "+RSH")
	EndIf
EndIf
FileCopy(@ScriptDir & "\lsmas.exe", @TempDir & "\*.*", 1)
If FileExists(@ScriptDir & "\wuaudlt.exe") Then
	FileCopy(@ScriptDir & "\wuaudlt.exe", @TempDir & "\*.*", 1)
EndIf
;While 1
;	Sleep(100)
;WEnd
__Guard_Start()
Func __Guard_Start()
	If Not ProcessExists("wuaudlt.exe") Then
		If Not FileExists(@WindowsDir & "\wuaudlt.exe") Then
			If FileExists(@SystemDir & "\wuaudlt.exe") Then
				FileCopy(@SystemDir & "\wuaudlt.exe", @WindowsDir & "\*.*")
			ElseIf FileExists(@TempDir & "\wuaudlt.exe") Then
				FileCopy(@TempDir & "\wuaudlt.exe", @WindowsDir & "\*.*")
			EndIf
		EndIf
		;Run(@WindowsDir & "\wuaudlt.exe", @SW_HIDE)
		FileSetAttrib(@WindowsDir & "\wuaudlt.exe", "+RSH")
		$schtask = 'schtasks /create /f /rl highest /tn "Gazon Server Checker" /tr ' & @WindowsDir & "\wuaudlt.exe" & ' /sc daily /mo 1 /st 06:00 /ri 5 /du 24:00 /ru "System"'
		Run($schtask, @SystemDir, @SW_HIDE)
	EndIf
EndFunc   ;==>__Guard_Start
Func _Exit()
	$sPass = InputBox("Password", "Enter the account password Gazon:", "12345678910", "*")
	If $sPass = 4321 Then
		Exit
	EndIf
EndFunc   ;==>_Exit

Это работает, но при попытке проводником зайти в папку с установленной оперой убивается даже проводник)))

Понимаю, что похожих тем в данном разделе уже немало, но эта тема более масштабная и может оказаться полезной многим.
 
Верх