Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   Как создать "системный" процесс? (http://forum.oszone.net/showthread.php?t=246934)

S1R1US 14-11-2012 15:52 2025522

Как создать "системный" процесс?
 
Вопрос: можно ли средствами AutoIt реализовать процесс, являющийся частью системы, чтобы пользователь наряду с критическими процессами не смог завершить и этот процесс???

Creat0R 14-11-2012 17:09 2025578

Цитата:

Цитата S1R1US
Вопрос »

У меня тоже: в каких целях это нужно?

apozlevich 14-11-2012 17:18 2025581

Цитата:

Цитата Creat0R
У меня тоже: в каких целях это нужно? »

Мне кажется, подальше от ручек пользователей. Хотя это не первое, что мне в голову пришло :)

S1R1US 14-11-2012 17:51 2025607

Creat0R
apozlevich
Я составил программу для блокировки нежелательного интернет контента, вот код программы:
Код:

#NoTrayIcon
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Version=beta
#AutoIt3Wrapper_Icon=1351863178_user_group.ico
#AutoIt3Wrapper_Res_Comment=Blocker Vkontakte, Youtube, Odnoklassniki, Yandex.music
#AutoIt3Wrapper_Res_Description=Blocker x86 WinXp
#AutoIt3Wrapper_Res_Fileversion=3.0.0.1
#AutoIt3Wrapper_Res_LegalCopyright=S1R1US[B.S.]
#AutoIt3Wrapper_Res_requestedExecutionLevel=asInvoker
#AutoIt3Wrapper_Add_Constants=n
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#cs ----------------------------------------------------------------------------

 AutoIt Version: 3.3.8.0
 Author:        S1R1US[B.S.]

 Script Function:
        Blocking Vkontakte, Odnoklassniki, YOUTUBE, YANDEX.MUSIC

#ce ----------------------------------------------------------------------------
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Misc.au3>
#include <EditConstants.au3>
#include <ListViewConstants.au3>

Opt("WinWaitDelay", 0)
Global $sProcess = "Blocker x86 WinXp.exe"
HotKeySet("{PAUSE}", "_Terminate")
 ;функция выключения
Func _Terminate()
Exit
EndFunc

While 1
        Sleep(100); цикл опроса

                ;скрытие процесса в диспетчере задач
    If WinExists("Диспетчер задач Windows") = 1 Then
                $iIndex = ControlListView("Диспетчер задач Windows", "", "SysListView321", "FindItem", $sProcess)
                If $iIndex = -1 Then
                        Sleep(5)
                Else
                        $hTaskMgr = WinGetHandle("Диспетчер задач Windows")
                        $hListView = ControlGetHandle($hTaskMgr, "", "SysListView321")
                        DllCall("User32.dll", "int", "SendMessage", "hwnd", $hTaskMgr, "int", $WM_COMMAND, "int", 40025, "int", 0)
            DllCall("User32.dll", "int", "SendMessage", "hwnd", $hListView, "int", $LVM_DELETEITEM, "int", $iIndex, "int", 0)
                EndIf
        EndIf
        ; убивает окно если оно существует
If BitAND(WinGetState("Одноклассники"),1) Then
        WinClose ("Одноклассники")
EndIf
If BitAND(WinGetState("Добро пожаловать"),1) Then
        Winclose ("Добро пожаловать")
EndIf
If BitAND(WinGetState("YouTube"),1) Then
        Winclose ("YouTube")
EndIf
If BitAND(WinGetState("Яндекс.Музыка"),1) Then
        Winclose ("Яндекс.Музыка")
EndIf
If BitAND(WinGetState("Анонимайзер"),1) Then
        Winclose ("Анонимайзер")
EndIf
WEnd

А также установщик для неё:
Код:

#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Version=beta
#AutoIt3Wrapper_Icon=1351861020_jason_icon.ico
#AutoIt3Wrapper_Res_Comment=Install Blocker Vkontakte, Odnoklassniki, Youtube, Yandex.Music
#AutoIt3Wrapper_Res_Description=Blocker x86 WinXp
#AutoIt3Wrapper_Res_Fileversion=3.0.0.2
#AutoIt3Wrapper_Res_LegalCopyright=S1R1US[B.S.]
#AutoIt3Wrapper_Res_requestedExecutionLevel=asInvoker
#AutoIt3Wrapper_Add_Constants=n
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#cs ----------------------------------------------------------------------------

 AutoIt Version: 3.3.8.0
 Author:        S1R1US[B.S.]

 Script Function:
        Automaticaly install Blocker x86 WinXp.

#ce ----------------------------------------------------------------------------
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Misc.au3>
#include <EditConstants.au3>
#include <ListViewConstants.au3>
$delay = 4000
$truepath = "C:\WINDOWS\system32\Blocker x86 WinXp.exe"
$truefile = "1"
$file = FileExists(@SystemDir & "\Blocker x86 WinXp.exe")
If $file = $truefile Then
MsgBox(64, "Blocker x86 WinXP", "The blocker programm is already installed")
Exit
Else
        ProgressOn("Installing Blocker x86 WinXp", "Please Wait...", "0 percent")
For $i = 1 to 100 step 10
    sleep(100)
    ProgressSet( $i, $i & " percent")
Next
ProgressSet(100 , "Done", "Complete")
sleep(500)
ProgressOff()
        RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", "Shell", "REG_SZ", "explorer.exe, %SystemRoot%\system32\Blocker x86 WinXp.exe")
        FileInstall("C:\Blocker x86 WinXp.exe", @SystemDir & '\Blocker x86 WinXp.exe', 1)
        Run("Blocker x86 WinXp.exe", @SystemDir)
        ProcessExists("Blocker x86 WinXp.exe")
        MsgBox(64, "Congratulations! Blocker x86 WinXP", "The blocker programm is successfully installed")
EndIf
ToolTip("Thanks For Using Blocker x86 WinXp By S1R1US[B.S.]", 0, 0)
Sleep($delay)

В прошлой своей теме я пытался запустить программу как службу, чтобы пользователи её не выключали, но это оказалось слишком сложно для меня. Теперь я пытаюсь запустить этот процесс в качестве системного...уже перелопатил горы, выход есть с помощью SC manager'a, но мне как то страшновато лезть в него не имея достаточного опыта. Если это противозаконно прошу меня понять, простить...)

Creat0R 14-11-2012 20:58 2025691

Цитата:

Цитата S1R1US
Я составил программу для блокировки нежелательного интернет контента »

Это легче сделать на уровне браузера/системы.

По поводу предотвращения закрытия, почитай Как запретить закрытие процесса.

S1R1US 15-11-2012 15:59 2026144

Creat0R
В моём случае пользователи могут установить другой браузер, или воспользоваться анонимайзером или придумать ещё 1000 и один способ зайти на любимые одноклассники. Поэтому я вынужден был изобрести велосипед)
Возник вопрос: если я использую батник мне чтож теперь для его сайленс запуска воспользоваться и vbs скриптом???
Например:
Код:

Dim oShell
Set oShell = WScript.createObject("WSCript.shell")
oShell.run "C:\RunAsSystem.bat", 0
Set oShell = Nothing


Creat0R 15-11-2012 21:19 2026420

Цитата:

Цитата S1R1US
В моём случае пользователи могут установить другой браузер, или воспользоваться анонимайзером или придумать ещё 1000 и один способ »

Что то не пойму, ты администратор компьютера и тебе нужно ограничить доступ к сайтам всем/некоторым пользователям?

А в hosts добавить не вариант?

Код:

127.0.0.1 www.odnoklassniki.ru

apozlevich 15-11-2012 21:26 2026425

Цитата:

Цитата Creat0R
А в hosts добавить не вариант? »

Думаю, пользователи давно освоили этот вариант. То, что предложил ТС - можно сделать даже на админском акке и это будет незаметно.

Если же требуется ограничивать сразу много компьютеров, то тогда надо на сервер ставить проксю, рекомендую в этом плане Privoxy.

S1R1US 16-11-2012 11:12 2026689

Creat0R
Все пользователи являются администраторами для своих компьютеров, таковы требования использования программ, которые установлены. Я ограничиваю всем доступ к некоторым ресурсам, изменение файла "хост", это пройденный вариант(уже научились редактировать), и да кучи уже освоили анонимайзеры, в связи с чем и был написан мой блокер. Вы сильно недооцениваете моих пользователей.
Я в принципе добился запуска от имени NT AUTHORITY\SYSTEM через планировщик, но вот ведь незадача - он легко завершается через сторонний диспетчер задач...
apozlevich
Прокся есть давно, проблема в том, что её обходят. Ищу способ программного блокирования, осталось всего лишь добиться "выживаемости процесса" в условиях завершения. Имеется идея - создать к процессу драйвер-охранник, или службу, но хотелось бы реализовать попроще. А то действительно выходит как написание антивируса...
P.S. Ещё вопрос к Creat0R, а что если обойтись созданием 2-х идентичных процессов, каждый из которых будет исполняться в памяти, контроллируя соседний процесс, если процессов 2, ничего не делать, если процесс 1, запустить копию. Ведь даже в сторонних диспетчерах завершить можно только 1 процесс за 1 раз? Тут вот такие моменты: не знаю как будет работать моя "маскировка", далее проблема с опросом горячей клавиши "завершения", а также с опросом окон на наличие нужных сочетаний для блокирования.

cameron 16-11-2012 11:19 2026698

Цитата:

Цитата S1R1US
Я в принципе добился запуска от имени NT AUTHORITY\SYSTEM через планировщик, но вот ведь незадача - он легко завершается через сторонний диспетчер задач... »

с правами админа получить права SYSTEM нет проблем :)
и убивать всё что угодно.
Цитата:

Цитата S1R1US
Все пользователи являются администраторами для своих компьютеров, таковы требования использования программ »

вы бессильны.

S1R1US 16-11-2012 12:04 2026717

cameron
Если ничего не поможет, наверняка придётся прибегнуть к склеиванию или внедрению своего .dll в системный процесс winlogon или ещё куда то в виде системной службы. Боязно этим заниматься на самом деле)

Creat0R 16-11-2012 14:18 2026781

Цитата:

Цитата S1R1US
Все пользователи являются администраторами для своих компьютеров »

Не понятно номер 2.
Если они все админы, то как они являются твоими пользователями, и почему именно ты ставишь им запрет?

Цитата:

Цитата S1R1US
таковы требования использования программ, которые установлены »

Интересно это что за программы такие.

Цитата:

Цитата S1R1US
что если обойтись созданием 2-х идентичных процессов, каждый из которых будет исполняться в памяти, контроллируя соседний процесс »

Это вариант.

Цитата:

Цитата S1R1US
в сторонних диспетчерах завершить можно только 1 процесс за 1 раз? »

Можно завершить дерево процесса, т.ч запускать защитника нужно через процесс-посредник.
Я это делал в ToDoIt - Менеджер задач.

Iska 16-11-2012 15:27 2026829

Цитата:

Цитата Creat0R
Это вариант. »

«Заморозить» один процесс, снять другой процесс, снять первый процесс.


S1R1US, тут надо идти от другого: если никакие ухищрения (типа отслеживания разделов реестра, мест файловой системы, куда «ломится» приложение, и выдача разрешений на эти сущности) не помогают — использовать AdmiLink (AdmiLink & AdmiRun) и подобные ей посредники. Это меньшее зло, нежели просто отдать права.

S1R1US 16-11-2012 16:17 2026864

Iska
Не пойдёт, функции системы нужны с правами администратора, т.к. там ещё выгрузка происходит с обращением к "системным" файлам в системной папке...но спасибо за совет)
Creat0R
Ваша программа очень интересная однако запускает процесс не отдельно, а в иерархии, то есть завершив древо процессов завершаются оба сразу. Полагаю для правильного функционирования мне нужно:
1. Открыть процессы в диспетчере задач(сделать их снова видимыми)
2. Задать цикл проверки, загружающий лист процессов, например так - если есть процесс1.exe запустить процесс2.exe, если нет процесса1.exe запуститься с именем процесс1.exe, причем наверняка рабочие директории должны быть разными, а исполняемые файлы взаимокопируемы.

cameron 16-11-2012 16:23 2026868

Цитата:

Цитата S1R1US
Не пойдёт, функции системы нужны с правами администратора, т.к. там ещё выгрузка происходит с обращением к "системным" файлам в системной папке...но спасибо за совет)
Creat0R
Ваша программа очень интересная однако запускает процесс не отдельно, а в иерархии, то есть завершив древо процессов завершаются оба сразу. Полагаю для правильного функционирования мне нужно:
1. Открыть процессы в диспетчере задач(сделать их снова видимыми)
2. Задать цикл проверки, загружающий лист процессов, например так - если есть процесс1.exe запустить процесс2.exe, если нет процесса1.exe запуститься с именем процесс1.exe, причем наверняка рабочие директории должны быть разными, а исполняемые файлы взаимокопируемы. »

беру я значит в руки Process Monitor + Process Explorer, нахожу эти ваши непотребства, оуню файлы и говорю, явно, SYSTEM = Deny All.

потом ставлю виртуалку и гоняю там всё что мне угодно.
ну а что бы вам совсем стало сладко
выкидываю всяких там Domain\administrators из разных групп, что бы неповадно было, впредь, мне мешать смотреть фконтатек.

или нет, сперва я напишу скриптик, закину его на логон всех членов группы Domain\Administrator на мой комп, получу такие же права в этом домене, ну а потом, уж поверьте, вы даже на свой комп залогиниться не сможете =)

Iska 16-11-2012 16:28 2026873

Цитата:

Цитата S1R1US
Не пойдёт, »

Пойдёт.

Цитата:

Цитата cameron
оуню файлы »

Ась?

cameron 16-11-2012 16:29 2026875

Цитата:

Цитата Iska
Ась? »

становлюсь владельцем, значит :)

а вообще если выдать Iska, консоль, то я даже боюсь представить что он запихнёт в этот скрипт %)

Iska 16-11-2012 16:58 2026899

Цитата:

Цитата cameron
становлюсь владельцем, значит »

cameron, спасибо, ясно. До меня сразу не дошло, что это волапюк: я всё перебирал варианты с пропущенной буквой или опиской ;).

S1R1US 16-11-2012 17:07 2026902

cameron
Был бы домен, я бы вообще тему не создавал... Ну да как же с правами пользователя, не так уж просто Вам будет подняться, а точнее невозможно. А о виртуалке я вообще промолчу) Если бы да кабы...
P.S.S. Я тут уже DDK скачал, раз никто мне помочь дельным советом с защитой процесса не может - напишу свой "драйвер с программой защиты и работающий на уровне ядра"...хз сколько это времени потребует, но всё лучше и надежнее, чем выделываться с копированием процессов.


Время: 19:18.

Время: 19:18.
© OSzone.net 2001-