Главная страница
    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.47 MB
Время: 0.031 c
14-1085389453
WondeRu
2004-05-24 13:04
2004.06.13
Шрек 2. Ура! Ура! Ура!


4-1083688325
AlexZ_CRC
2004-05-04 20:32
2004.06.13
Открыть <u> все </u> CDROM на компе


1-1085727686
IgorR
2004-05-28 11:01
2004.06.13
Очистка памяти выделенной в RunTime


1-1085741984
ilnarab
2004-05-28 14:59
2004.06.13
Функция возвращающая диск по умолчанию Windows


14-1085589870
}|{yk
2004-05-26 20:44
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский