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

Вниз

Перехват процесса.   Найти похожие ветки 

 
Igor   (2003-04-03 09:58) [0]

Задача такая: необходимо ограничить пользователей на число запусков одного процесса, т.е если процесс с таким именем существует выдавать сообщение об этом и пресекать попытку загрузить 2-ой.


 
caesar   (2003-04-03 10:19) [1]

твоего приложения или вообще любого процесса?
Если твоего, то:
if FindWindow("TForm1","Form1")<>0 then Applicatin.Terminate;
перед CreateForm
{подключи модуль Windows}


 
Igor   (2003-04-03 10:26) [2]

имя процесса я задаю (не моя программа)


 
a   (2003-04-03 11:49) [3]

Удалено модератором
Примечание: Offtopic


 
Joisy   (2003-04-03 11:54) [4]

Izvinite za oshibku (vishe).

Ya dumayu chto eto mojno sdelat sled obrazom - periodicheski zapuskay api func EnumWindows, v perviy raz zapomni handle i imya nujnogo okna FindWindow(inHWND, TitleTxt) i elsi obnarujitsya chto poyavilos eshe odno okno s takim je imene posilay yemu SendMessage(HWND, WM_CLOSE, 0, 0)

poeksperemeniruy koroche


 
Digitman   (2003-04-03 12:02) [5]

>Igor

реализуй службу, которая будет (глобально в системе, для всех существующих и потенциально стартуемых) перехватывать все вызовы kernel32.CreateProcess[Ex]


 
Igor   (2003-04-03 12:08) [6]

>digitman Можно поподробней?


 
Digitman   (2003-04-03 12:31) [7]

>Igor

В подавляющем большинстве случаев новый процесс создается вызовом неким процессом (например, процессом Explorer"a) ф-ции kernel32.CreateProcess[Ex]. Вполне достаточно будет внедрить во все контролируемые (существующие и вновь стартуемые) процессы код перехвата обращения (со стороны этих процессов) к ф-ции CreateProcess[Ex] из kernel32.dll и возвращать отказ, если происходит попытка запуска некоего нежелательного процесса.
Внедрение кода перехвата можно возложить на некое "свое" сервисное приложение, автоматически стартуемое при старте системы.


 
Igor   (2003-04-03 12:59) [8]

>digitman
Если я правильно понял,то: я пишу некое приложение, которое при старте внедряет во все уже сущестующие процессы упомянутую тобой функцию, затем при возникновении нового процесса: если плохой, то отрубать если хороший, то внедрять функцию.

Вопрос: как внедрить? (Пример кода)


 
Digitman   (2003-04-03 14:06) [9]


> Igor


Неправильно понял. Ты пишешь приложение, которое при старте внедряет во все существующие процессы код, осуществляющий перехват обращений этих процессов к упомянутой функции.

Когда некий процесс A обратится к упомянутой ф-ции c целью попытки создания процесса B, код, который ты внедрил в этот процесс А, получит управление, если старт B нежелателен, вернет отказ; иначе - вызовет оригинальную (перехваченную) ф-цию, дождется успешного старта процесса и внедрит в него копию кода перехвата.

внедрение кода - см. ф-ции VirtualQueryEx, VirtualProtectEx, WriteProcessMemory и т.д.

старт внедренного кода - см. CreateRemoteThread

перехват экспортируемых/импортируемых Win32API-вызовов в теле внедренного кода - см. описание формата PE-модулей


 
Igor   (2003-04-03 16:19) [10]

tnx



Страницы: 1 вся ветка

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

Наверх





Память: 0.46 MB
Время: 0.123 c
14-3053
Плохой человек
2003-05-14 23:06
2003.06.02
Звук на CD-ROM


1-2934
Polar
2003-05-20 19:06
2003.06.02
Как сделать округление чисел? Уже достало 1.234567890Е0002!!!


3-2747
AlexGreg
2003-05-13 12:57
2003.06.02
... Медленно встаёт ...


3-2743
Карелин Артем
2003-05-13 10:13
2003.06.02
Рост базы после отката.


7-3188
alexts
2003-04-01 11:47
2003.06.02
Набор номера через модем





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский