Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.06.13;
Скачать: [xml.tar.bz2];

Вниз

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 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.06.13;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.032 c
3-1085475768
sesh
2004-05-25 13:02
2004.06.13
Как сохранить результат запроса AdoQuery в текстовій файл


14-1085451868
gn
2004-05-25 06:24
2004.06.13
M$ Word


6-1082779446
Aplay
2004-04-24 08:04
2004.06.13
мак адрес по ip в сети


1-1085934812
Ruslan
2004-05-30 20:33
2004.06.13
Насчет работы с датами. Надо вычислять количество пройденных


11-1075121861
sams
2004-01-26 15:57
2004.06.13
Наследование





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский