Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.49 MB
Время: 0.058 c
1-1086084362
init13
2004-06-01 14:06
2004.06.13
TDrawGrid


1-1085895664
MadAngel
2004-05-30 09:41
2004.06.13
Инфо о файле


1-1086002353
BorisMor
2004-05-31 15:19
2004.06.13
Прозрачный контрол


1-1085750204
Anton
2004-05-28 17:16
2004.06.13
Шрифты


14-1085172942
Sanek_metaller
2004-05-22 00:55
2004.06.13
Финал Лиги Чемпионов