Текущий архив: 2004.06.13;
Скачать: CL | DM;
ВнизHOOK на создание нового процесса Найти похожие ветки
← →
Alexis © (2004-05-10 14:53) [0]Мастера, подскажите какое сообщение посылается системе при запуске(создании) нового процесса.Я реализую что-то по типу секции реестра RestrictRun.
← →
X9 © (2004-05-10 17:00) [1]Не знаю, какое сообщение посылается, но IMHO можно поставить хук на вызовы CreateProcess, ShellExecute и WinExec и смотреть, запустился ли процесс.
← →
DeadMeat © (2004-05-10 17:29) [2]Намного проще в цикле проверять список процессов...
← →
cdadmitriy © (2004-05-10 17:38) [3]процессов... или window ???
window :
WH_SHELL
CASE Message.WParam Of
HSHELL_WINDOWCREATED : S:="CREATED WINDOW ";
HSHELL_WINDOWDESTROYED : S:="DESTROYED WINDOW ";
HSHELL_ACTIVATESHELLWINDOW : S:="ACTIVATE SHELL WINDOW ";
HSHELL_WINDOWACTIVATED : S:="WINDOW ACTIVATED ";
HSHELL_GETMINRECT : S:="GET MIN RECT ";
HSHELL_REDRAW : S:="REDRAW ";
HSHELL_TASKMAN : S:="TASKMAN ";
// HSHELL_LANGUAGE : S:="LANGUAGE ";
HSHELL_ACCESSIBILITYSTATE : S:="ACCESS IBILITYSTATE ";
HSHELL_APPCOMMAND : S:="APP COMMAND ";
HSHELL_WINDOWREPLACED : S:="WINDOW REPLACED ";
else Exit;
End;
← →
Игорь Шевченко © (2004-05-10 17:45) [4]
> Я реализую что-то по типу секции реестра RestrictRun.
Вот через реестр и реализуй. Остальное все от лукавого.
← →
Alexis © (2004-05-10 19:35) [5]2 Игорь Шевченко-так и знал, что подобный совет последует...Но вы, Игорь, должны знать, что в использовании RestrictRun есть дыра!
2 DeadMeat-уже написал.Совершенно верно, что проще, однако проще не значит лучше.
2 cdadmitriy-нет, именно процессов.
2 X9-смотреть, запустился ли процесс может быть уже поздно. Надо ставить хук на создание процесса, и если он не соответствует отределенным требованиям, не позволять запускать нафик :)
Вроде всем ответил...
← →
cdadmitriy © (2004-05-10 19:53) [6]Соответственно, теперь из эксплорера можно будет запустить только эти файлы, при попытке запуска других будет выдано сообщение о том, что возможность запуска отключена администратором. Однако привязки к этим именам по абсолютному пути (типа c:\windows\notepad.exe) не существует, поэтому всё ещё можно запускать любые файлы, которые будут названы так же, как и разрешённые для запуска. Поэтому нашим решением является запрет ВСЕХ файлов для исполнения через функции Shell (это решение имеет смысл только если LockWin запущен как шелл, в противном случае решение бесполезно !). Для достижения этого достаточно создать пустой раздел [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\RestrictRun] и выставить значение вышестоящего ключа RestrictRun в "1". Осторожно! Если после этого шелл LockWin слетит или будет отключен, вернуть к работоспособности Windows будет крайне проблематично.
Для запуска своих приложений LockWin использует по умолчанию системную функцию CreateProcess, которая не проверяет RestrictRun, так что запуск приложений через шелл LockWin будет происходить без проблем. Однако программы, в свойствах запуска которых указан параметр "Другой способ запуска", из LockWin стартовать не будут, так как в этом случае будет использоваться не CreateProcess (по умолчанию), а ShellExecute.
← →
cdadmitriy © (2004-05-10 19:54) [7]http://pisoft.ru/locker/artik/createproc.htm
← →
Игорь Шевченко © (2004-05-10 22:59) [8]Alexis © (10.05.04 19:35)
Я могу дать совет, как это можно сделать. В ядре, как известно, есть функция PsSetCreateProcessNotifyRoutine, обратившись к которой из драйвера режима ядра можно установить хук на создание процесса. Или образом, аналогичным использованному Руссиновичем в FileMon и RegMon, поставить перехватчик на NtCreateProcess в ntoskrnl, точно также, из драйвера ядра. Гарантируется безусловное оповещение о создаваемых процессах, обойти которое в принципе невозможно.
Вопрос только, стоит ли овчинка выделки ? Может, все-таки, через Policy оно проще ?
← →
Alexis © (2004-05-11 15:04) [9]Игорь Шевченко © (10.05.04 22:59) [8]
Да я и не спорю, что через Policy проще.Однако драйвер режима ядра пока не для меня :(
Кстати, на sysinternals.com есть исходники FileMon или RegMon?
А все же из Delphi нельзя ли перехватывать вызовы API-функций с возможностью последующей их отмены, по аналогии с перехватом системных сообщений?
← →
Digitman © (2004-05-11 15:49) [10]
> Alexis © (11.05.04 15:04) [9]
> А все же из Delphi
при чем здесь Делфи ?
с т.з. Windows есть понятие "процесс", есть понятие "точка входа в импортируемую функцию"
Страницы: 1 вся ветка
Текущий архив: 2004.06.13;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.031 c