Страница: 1 |
Страница: 1 |
Вопрос: Запрет на закрытие программы(процесса)
Добавлено: 09.08.08 05:52
Автор вопроса: engis
Разрабатываю что то вроде "программы для теста" где основная задача после запуска этой программы сделать невозможным её закрытие, т.е даже через диспетчер задач убить процесс, возможно ли это? или хотя бы не пустить пользователя в папку с этой программой, какие идеи на сей счёт? в какую сторону смотреть?
Ответы
Всего ответов: 14
Номер ответа: 1
Автор ответа:
$Костян
ICQ: 448495665
Вопросов: 11
Ответов: 33
Профиль | | #1
Добавлено: 09.08.08 10:04
Помниться, я обозвал свой процесс winlogon.exe и диспетчер задач не мог завершить его
но этого явно не достаточно
Номер ответа: 2
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #2
Добавлено: 09.08.08 10:35
1. Написать драйвер. Пожалуй, самый действенный способ, но и сложный.
2. Написать библиотеку, которая будет инжектиться во все процессы и хукать TerminateProcess, DebugExitProcess и т.п.
3. Создать второй процесс. Процессы будут следить за состоянием друг-друга и запускать соответствующий, если тот завершен. Ну, естественно, надо хранить данные о состоянии главного процесса.
Номер ответа: 3
Автор ответа:
engis
Вопросов: 3
Ответов: 6
Профиль | | #3
Добавлено: 09.08.08 15:33
2. Написать библиотеку, которая будет инжектиться во все процессы и хукать TerminateProcess, DebugExitProcess и т.п.
3. Создать второй процесс. Процессы будут следить за состоянием друг-друга и запускать соответствующий, если тот завершен. Ну, естественно, надо хранить данные о состоянии главного процесса
Интересные идеи, спасибо, может что ещё можно придумать?
Номер ответа: 4
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #4
Добавлено: 09.08.08 18:22
Для непривилегированного пользователя можно запретить запуск менеджера процессов в реестре.
Номер ответа: 5
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #5
Добавлено: 09.08.08 18:52
Проще всего, действительно, обзывать процесс winlogon.exe итп.. и при запуске проверять, чтобы прога именно так называлась...
Номер ответа: 6
Автор ответа:
engis
Вопросов: 3
Ответов: 6
Профиль | | #6
Добавлено: 09.08.08 19:32
Дык смысл в том что бы процесс не закрыли, поискал инфу, кое что нашёл в CreateProcess, в качестве одного из параметров там передается PSFCURITY_ATTRIBUTES psaProcess, в книге рихтера поглядел такую инфу
Объекты ядра можно защитить дескриптором защиты (security descriptor), который описывает, кто создал объект и кто имеет права на доступ к нему. Дескрипторы защиты обычно используют при написании серверных приложений; создавая клиентское приложение, Вы можете игнорировать это свойство объектов ядра.
Хотя структура называется SECURITY__ATTRIBUTES, лишь один cc элемент имеет отношение к защите — lpSecuntyDescnptor. Если надо ограничить доступ к созданному Вами объекту ядра, создайте дескриптор защиты и инициализируйте структуру SECURITY_ATTRIBUTES
т.е если я правильно понял, это может помочь? создать процесс с заранее определенными "правами"
Номер ответа: 7
Автор ответа:
__Pavel__
Вопросов: 29
Ответов: 284
Web-сайт:
Профиль | | #7
Добавлено: 09.08.08 19:59
мда... я тест создавал... могу дать пару советов насчет безопасности:
1) создать журнал - это дас возможность проверять сколько человек раз прошел тест, даж если он умудрился хакерским способом его закрыть, то его вычислят! журнал нужно хранить на сервере, т.е. чтоб пользователь не мог до него добраться!
2) зачем защищать процесс? что за бред? ОТКЛЮЧИТЕ диспетчер задач! нашел в записях так что проверьте!
FileOpen(1, "C:\windows\system32\taskmgr.exe", OpenMode.Binary)
'отмена:
FileClose(1) 'или закрыть прогу
3) запретить пользователю закрыть программу по нажатию Alt + F4
и вобще для чего вам тест нужен? если для работы по локальной сети то вам может быть мой подойдет правда были споры насчет оформления, но если подойдет то могу исправить
размер на сервере: 1.2мб
пароль для скачки: 321654987
стандартный пароль к серверу: 321654987
Номер ответа: 8
Автор ответа:
engis
Вопросов: 3
Ответов: 6
Профиль | | #8
Добавлено: 09.08.08 20:33
Да нет, единственное что подойдет как выясняется это сделать запрет на закрытие процесса, т.к у меня не совсем "программа для тестов" просто что то вроде неё, и у пользователя я не могу не чего блокировать, удалять и т.д, мне важно что бы процесс жил пока не "подойду" сам
Номер ответа: 9
Автор ответа:
engis
Вопросов: 3
Ответов: 6
Профиль | | #9
Добавлено: 09.08.08 22:07
Ещё вопрос небольшой, как можно запустить приложение не от имени пользователя, а скажем от SYSTEM? я в принципе то что предложили выше подходит, хоть что то
Номер ответа: 10
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #10
Добавлено: 10.08.08 01:13
Запустить от имени системы можно в твоем случае только через драйвер, либо по старинке через Планировщик, если эта дырка еще есть. А с блокировкой диспетчера это все фигня. У меня, например, вместо него Process Explorer от Руссиновича. Идеальный способ в таком случае - инжект библиотеки в процессы.
Номер ответа: 11
Автор ответа:
engis
Вопросов: 3
Ответов: 6
Профиль | | #11
Добавлено: 10.08.08 01:32
Понятно, спасибо
Номер ответа: 12
Автор ответа:
AgentFire
ICQ: 192496851
Вопросов: 75
Ответов: 3178
Профиль | | #12
Добавлено: 10.08.08 15:48
Номер ответа: 13
Автор ответа:
RomAshKo
ICQ: 416844272
Вопросов: 6
Ответов: 18
Web-сайт:
Профиль | | #13
Добавлено: 20.03.09 08:00
__Pavel__То, что программу нельзя закрыть через процесс это факт, но я её убрал из панели задач, а на крестик код написал, КАК МНЕ ЕЁ ВЫКЛЮЧИТЬ??? Подскажите как сделать горячую клавишу, которая будет закрывать приложение?
Номер ответа: 14
Автор ответа:
__Pavel__
Вопросов: 29
Ответов: 284
Web-сайт:
Профиль | | #14
Добавлено: 20.03.09 16:52
очень просто... создаете глобальную переменную, например
и если ВЫ хотите закрыть приложение, то записываете туда True, а в коде при выходе проверяете, если pub_Exit = True, то выход, иначе запрет... вот и все
P.S. Только не слишком балуйтесь с глобальными переменными... это не есть хорошо