Форум: "Система";
Текущий архив: 2003.10.27;
Скачать: [xml.tar.bz2];
ВнизПерехват запуска приложений Найти похожие ветки
← →
DNT (2003-08-09 18:45) [0]Программа разрешает запуск только избранных приолжений.
Необходимо написать программу, которая будет ловить запуск приложений и разрешать запуск программ только из специального списка, а запуск других будет блокировать.
Помогите плз, с чего начать?
Мои мысли:
Поставить хук. Но на что я не знаю :(
← →
Безымянное среднего рода (2003-08-09 20:20) [1]А чем стандарьный способ не устраивает ?
Restricting Applications Users Can Run (Windows 9x and NT)
Windows gives the ability to restrict the applications that can be run by users on a workstation.
Open your registry and find the key [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer]
Create a new DWORD value and name it "RestrictRun" set the value to equal "1" for enabled or "0" for disabled.
Then define the applications the are allowed to be run at the key [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\RestrictRun].
Creating a new string value for each application, named as consecutive numbers.
Reboot the computer for the changes to take effect.
← →
NightAngel (2003-08-09 21:23) [2]> DNT © (09.08.03 18:45)
Для драйвера виртуального устройства есть возможность обработки сообщения CREATE_PROCESS, которое рассылается VWIN32 когда бы ни запустился новый процесс. В системе Windows NT/2000/XP существует дополнительная возможность установки такой функции через вызов процедуры PsSetCreateProcessNotifyRoutine из NTOSKRNL. Такая функция (описание смотрите в MSDN) позволяет драйверу устройства получать извещения системы о запуске новой программы.
← →
DNT (2003-08-10 09:50) [3]NightAngel
CREATE_PROCESS можно на хук поставить?
Я не очень в этом разбираюсь.
Есть ли где-нибудь примерчик?
← →
mOOx_ (2003-08-10 10:35) [4]Еще вариант: функцию TerminateProcess знаешь? Если ресурсов не жалко, то можно ее просто в цикле с ProcessMessage обрабатывать или по таймеру.
← →
Burmistroff (2003-08-10 21:10) [5]По хорошему - это делается так, как сказали выше. По-плохому - через перехват API.
Примеры второго способа можно обнаружить на http://maxcomputing.narod.ru/
← →
Marser (2003-08-11 01:18) [6]Слушайте Безымянное среднего рода
← →
An-N (2003-08-11 18:21) [7]>Marser
Проблема в том, что те правила распространяются только на explorer.exe
← →
Axis_of_Evil (2003-08-11 18:25) [8]wh_Shell совсем никак?
← →
Burmistroff (2003-08-11 18:27) [9]>Axis_of_Evil
wh_Shell пропускает порядка 40% случаев (16bit; безоконные; не из explorer.exe; ...)
← →
DNT (2003-08-12 09:23) [10]Ребята, необходимо именно из моей программы перехватывать запуск.
Т.е. через API.
А как это сделать?
← →
PGM (2003-08-12 11:42) [11]Перехватом API CreateProcess как посоветовал Burmistroff "по-плохому". Практически любой запуск рано или поздно приводит к этому вызову (но теоретически могут быть и исключения - те же 16-битные, например).
← →
NightAngel (2003-08-12 14:50) [12]> DNT © (12.08.03 09:23) [10] необходимо именно из моей программы перехватывать запуск.
С написанием драйвера, как я понял, проблемы. Если пишете под Win9x/Me можете пропатчить Kernel32.dll в памяти (для всех процессов он общий) - функции CreateProcess(), WinExec() etc. Под WinNT/2000/XP, как всегда всё сложнее. Без драйвера, для такой задачи, здесь всё будет полумерами ничего не гарантирующими. Можно поставить hook на NtResumeThread (NTDLL.DLL) во всех существующих процессах (эта функция всегда вызывается после того, как новый процесс загрузится).
← →
Burmistroff (2003-08-12 18:09) [13]>NightAngel
Иными словами - это и есть перехват API. Кстати, как показала практика, все совсем наоборот: для NT все намного более проще и надежнее, нежели для Win9x ;)
← →
Е-Моё имя (2003-08-12 18:31) [14]Burmistroff (12.08.03 18:09)
имхо то же
← →
NightAngel (2003-08-12 20:38) [15]> Burmistroff Иными словами - это и есть перехват API.
Ну, надо-же! Конца нет чудесам! :)
> как показала практика, все совсем наоборот: для NT все намного более проще и надежнее
Подобную задачу приходилось решать, и как показала практика, всё немного сложнее, чем кажется на первый взгляд. Или может быть у меня коэфициент кривизны конечностей, несколько превышает требования ГОСТа. ;)
Страницы: 1 вся ветка
Форум: "Система";
Текущий архив: 2003.10.27;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.013 c