Войти

Показать полную графическую версию : Завершение процессов кроме, определенных


Страниц : 1 [2] 3

O L E G
02-04-2012, 09:47
процесс MSHTA.exe -его не удалось завершить


---------------------------
Windows Script Host
---------------------------
Сценарий: C:\Documents and Settings\Admin\Рабочий стол\12.vbs
Строка: 29
Символ: 4
Ошибка: Не найден
Код: 80041002
Источник: SWbemObjectEx

---------------------------
ОК
---------------------------

O L E G
02-04-2012, 10:19
arrProcesses = Array("svchost.exe", "services.exe", "ctfmon.exe", "explorer.exe", "system.exe", "winlogon.exe", "smss.exe", "csrss.exe", "lsass.exe", "mshta.exe", "ntoskrnl.exe", "wmiprvse.exe" )

ошибка была из за "mshta.exe" "wmiprvse.exe" процессов
добавил эти процессы вроде закрывается без каких либо ошибок,но мне интересно ,с этим скриптом могут возникнуть проблемы на других машинах?

Iska
02-04-2012, 11:02
Если добавить некоторое ожидание после получения PID скрипта — «mshta.exe», думаю, можно будет исключить: он используется только в начале скрипта и далее не используется. «wmiprvse.exe» — это служба самого Wbem, без неё, конечно, никак.

мне интересно ,с этим скриптом могут возникнуть проблемы на других машинах? »
Со скриптом — вряд ли, со списком «arrProcesses» — могут.

А какова была конечная Ваша цель, и почему Вы не захотели использовать политики ограниченного использования программ?

O L E G
02-04-2012, 11:08
Нашел один косяк, после запуска скрипта те проргаммы что не в списке не возможно открыть, они автоматически закрываются,такую чувство что скрипт в процессах висит и закрывает приложения,в чем проблема может быть

Как и ранее я хотел сделать программу которая меняет данные ресстра и удалеет банеры при Включенной системе,
1. я сделал что бы скрипт запускался по нажатию Win+F1
2. сделал что скрипт запускается через пол часа как заставка, что мне дает 100% гарантию закрытия всех процессов и Explorer и винлокеров и восстановить его заново Explorer.
3. скрипт даже работает по верх Win+L блокировки системы,как бы запускает 2 рабочий стола по верх Блокировщика,что дает возможность изменить реестр и так далее,от вирусов и локеров при активной системы


Теперь мне все данные надо соединить в один фунциональный файл и все перепроверить

Iska
02-04-2012, 11:33
Нашел один косяк, после запуска скрипта те проргаммы что не в списке не возможно открыть, они автоматически закрываются,такую чувство что скрипт в процессах висит и закрывает приложения,в чем проблема может быть »
Это не косяк, и не проблема, а именно то, что Вы просили (http://forum.oszone.net/post-1888426.html#post1888426).

Если Вам сие не нужно — удалите эту часть:
Set objSWbemEventSource = objSWbemServicesEx.ExecNotificationQuery( _
"SELECT * FROM __InstanceCreationEvent WITHIN 1 WHERE TargetInstance ISA 'Win32_Process'")

Do
With objSWbemEventSource.NextEvent().TargetInstance
If Not IsProcessEnabled(arrProcesses, .Name) Then
If .Terminate() = 0 Then
'WScript.Echo .Name, "Terminate"
End If
End If
End With
Loop

скрипта.

что мне дает 100% гарантию закрытия всех процессов »
Не даёт.

O L E G
02-04-2012, 11:39
Не правильно избяснил мысль,не всех процессов,а тех что не всписке.
1.Заблокировал винлокер систему не возможно что либо запустить
2. мой скрипт через определенное время срабатывает,блокирует полностью автозапуск, исправляет Winlogon,Police и тд
3. Закрывает процессы что не всписке и Explorer то же,открывает его заново,тем самым уже без винлокера и у нас есть доступ к реестру и остальным данных
4. даже если мы системы перезагрузим,у нас будет всеравно заблокирован автозапуск и почишены ветви,тем самым неоткуда будет локеру запуститься

Iska
02-04-2012, 11:43
Я сталкивался с такими случаями инфекций:

* служба, в свойствах которой указана немедленная перезагрузка ОС в случае её завершения;
* несколько процессов, каждый из которых следит за наличием остальных и, в случае их отсутствия — немедленно их запускает и восстанавливает пути и методы их запуска.

Потому вывод: лучший способ чистить ОС — чистить её не из-под неё самой.

O L E G
02-04-2012, 11:48
Думаю, если по сидеть по думать, то все таки перехитрить можно Локеров
Или с помошью Безопасности Заблокировать доступ к веткам, откуда грузиться локер,закрыть процессы, тем самым он незапуститься, а пути в реестре уже не найдет

Iska
02-04-2012, 12:14
O L E G, для одного, конкретного, вируса практически всегда можно подобрать набор определённых действий, ведущих к искомой цели.

O L E G
02-04-2012, 12:27
вопрос, но не по этой теме, скрипт запускается как скрин сейвер через определеноое время,он закрывает Explorer и заново его открывает. Проблема в чем! невозможно закрыть Explorer во 2 раз,так как он находиться в под процессе как его можно закрыть
До wscript.exe, есть еще один процессе но я его не добавил в скрин

Iska
02-04-2012, 13:44
O L E G, как Вы запускаете «explorer.exe»?

O L E G
02-04-2012, 14:06
wsh.run "Explorer.exe" или wsh.run "Explorer.exe", 0 ,True
или
wsh.run "Taskkill /IM Explorer.exe /F", 0 ,True
wsh.run "Explorer.exe"

Iska
02-04-2012, 16:35
O L E G, вот Вам пример для Блокнота:
Option Explicit

Dim strProcess
Dim strComputer

Dim objSWbemLocator
Dim objSWbemServicesEx

Dim lngProcessID


strProcess = "notepad.exe"
strComputer = "."

Set objSWbemLocator = WScript.CreateObject("WbemScripting.SWbemLocator")
Set objSWbemServicesEx = objSWbemLocator.ConnectServer(strComputer, "root\cimv2")

If objSWbemServicesEx.Get("Win32_Process").Create(strProcess, Null, Nothing, lngProcessID) = 0 Then
WScript.Echo "Process [" & strProcess & "] create successfully, Process ID is [" & lngProcessID & "]."

WScript.Sleep 3000

If objSWbemServicesEx.Get("Win32_Process.Handle='" & CStr(lngProcessID) & "'").Terminate() = 0 Then
WScript.Echo "Process [" & strProcess & "], Process ID [" & lngProcessID & "] terminate successfully."
Else
WScript.Echo "Can't terminate process [" & strProcess & "], Process ID [" & lngProcessID & "]."
End If
Else
WScript.Echo "Can't create process [" & strProcess & "]."
End If

Set objSWbemServicesEx = Nothing
Set objSWbemLocator = Nothing

WScript.Quit 0

Пытаемся запустить Блокнот, в случае успеха ждём три секунды, пытаемся закрыть тот экземпляр Блокнота, который запустили.

В случае же Проводника не всё так однозначно. Во-первых, процесс Проводника может существовать как в единственном экземпляре, так и в двух — когда настройками указано разделять процессы Проводника «Рабочего стола» и папок (вторичные входы здесь не рассматриваем). Во-вторых, если просто попытаться завершить процесс «Рабочего стола» Проводника — «Программа входа в систему Windows NT» (winlogon.exe) его попросту перезапустит (справедливо, по крайней мере для WIndows XP). Отменить подобное поведение можно, указав ненулевое значение «Reason» при вызове метода «.Terminate(Reason)».

К тому же, я совсем не понял, зачем снимать процесс, запускать процесс и снова снимать его. Ну, и, утверждение:
невозможно закрыть Explorer во 2 раз,так как он находиться в под процессе »
не верно.

O L E G
02-04-2012, 16:40
к примеру у тебя стоит блокировка win + L, если снять процесс explorer и запустить его заново он будет по верх этой блокировки,что нам даст полное дествие над ПК

Iska
02-04-2012, 17:01
к примеру у тебя стоит блокировка win + L, если снять процесс explorer и запустить его заново он будет по верх этой блокировки,что нам даст полное дествие над ПК »
«он будет по верх этой блокировки» — не подтверждаю.

O L E G
02-04-2012, 17:03
я пробовал! работает)) 100% поэтому я и задался этим вопросом

Iska
02-04-2012, 17:36
Значит, это не есть:
блокировка win + L »

O L E G
02-04-2012, 17:43
Iska, а вот с этим скриптом что ты мне дал на примере Блокнотапо верх Блокировки не вылазиет, пытался изменить но выдает ошибку
---------------------------
Windows Script Host
---------------------------
Сценарий: C:\Documents and Settings\Admin\Рабочий стол\cmd\vbs\Программа KeyRepair\unlock\служба восстановления реестра\запуск и завершение процесса\Копия 1.vbs
Строка: 24
Символ: 2
Ошибка: Не найден
Код: 80041002
Источник: SWbemServicesEx

---------------------------
ОК
---------------------------



оставлял только закрытие процесса.

Option Explicit

Dim strProcess
Dim strComputer

Dim objSWbemLocator
Dim objSWbemServicesEx

Dim lngProcessID


strProcess = "explorer.exe"


Set objSWbemLocator = WScript.CreateObject("WbemScripting.SWbemLocator")
Set objSWbemServicesEx = objSWbemLocator.ConnectServer(strComputer, "root\cimv2")





WScript.Sleep 3000

If objSWbemServicesEx.Get("Win32_Process.Handle='" & CStr(lngProcessID) & "'").Terminate() = 0 Then

Else
WScript.Echo "Can't terminate process [" & strProcess & "], Process ID [" & lngProcessID & "]."
End If

WScript.Echo "Can't create process [" & strProcess & "]."


Set objSWbemServicesEx = Nothing
Set objSWbemLocator = Nothing

WScript.Quit 0



а открывал по своему

wsh.run "Explorer.exe"

Iska
02-04-2012, 19:28
Вы убрали код для запуска процесса и получения его идентификатора, а затем пытаетесь применить неинициализированную PID'ом (стало быть — нулевую) переменную «lngProcessID» для получения экземпляра процесса с последующим его закрытием.

Не удивительно, что это не работает, ибо в терминах Wbem процесс с нулевым PID'ом — это «System Idle Process» — «ожидание» системы.

O L E G
03-04-2012, 10:14
Option Explicit

Dim strProcess
Dim strComputer

Dim objSWbemLocator
Dim objSWbemServicesEx

Dim lngProcessID


strProcess = "Explorer.exe"
strComputer = "."

Set objSWbemLocator = WScript.CreateObject("WbemScripting.SWbemLocator")
Set objSWbemServicesEx = objSWbemLocator.ConnectServer(strComputer, "root\cimv2")

If objSWbemServicesEx.Get("Win32_Process").Create(strProcess, Null, Nothing, lngProcessID) = 0 Then
WScript.Echo "Process [" & strProcess & "] create successfully, Process ID is [" & lngProcessID & "]."

WScript.Sleep 3000

If objSWbemServicesEx.Get("Win32_Process.Handle='" & CStr(lngProcessID) & "'").Terminate() = 0 Then
WScript.Echo "Process [" & strProcess & "], Process ID [" & lngProcessID & "] terminate successfully."
Else
WScript.Echo "Can't terminate process [" & strProcess & "], Process ID [" & lngProcessID & "]."
End If
Else
WScript.Echo "Can't create process [" & strProcess & "]."
End If

Set objSWbemServicesEx = Nothing
Set objSWbemLocator = Nothing

WScript.Quit 0
Данный скрипт открывает процесс в подпроцессе Winlogon, а можно ли его переписать,что бы открывал как отдельный процесс?не в под процессах?




© OSzone.net 2001-2012