C # перехватывает процессы Windows для проверки процессов отладки - PullRequest
1 голос
/ 11 октября 2010

Мне было интересно, можно ли каким-то образом подключить процессы Windows, чтобы проверить, работают ли какие-либо подозрительные программы, такие как (Wireshark, Fiddler, OllyDBG и т. Д.).

Я хочу подключить процессы Windows, чтобы он закрывал клиент или всплывал сообщение в режиме реального времени при обнаружении нежелательного процесса.

Если вы, ребята, можете предоставить мне какие-либо ссылки на это, было бы неплохо.

Спасибо!

Ответы [ 4 ]

1 голос
/ 14 октября 2010

Вы можете обнаружить создание процесса, используя события создания WMI для Win32_Process. Экземпляр Win32_Process создается с каждым процессом, поэтому поиск новых экземпляров расскажет вам о создании процесса в (почти) реальном времени.

Для получения событий создания WMI см. Эту страницу: http://msdn.microsoft.com/en-us/library/system.management.eventquery.aspx (РЕДАКТИРОВАТЬ: другая ссылка, теперь образец в C #).

1 голос
/ 11 октября 2010
Process[] processlist = Process.GetProcesses();

Затем пройдитесь по списку и сделайте все необходимое для своих приложений, которые вы не хотите запускать.

0 голосов
/ 14 октября 2010

Возможно, вы захотите проверить EasyHook на CodePlex (http://easyhook.codeplex.com). Здесь - это обсуждение, в котором люди, как сообщается, смогли подключиться к CreateProcess. Если вам удастся подключиться к этой функции API, вы знаетесозданный процесс во время создания.

0 голосов
/ 14 октября 2010

EnumWindows перечисляет все окна верхнего уровня.

И вы не хотите внедрять C # dll в другие процессы.Это требует загрузки среды .net в этот процесс.Это приводит к потере оперативной памяти, и если процесс представляет собой приложение .net, использующее другую версию .net, возникают проблемы с версиями.Особенно, если ваша DLL введена до того, как процесс загрузит свою собственную версию .net.

А чего вы хотите достичь, внедрив в этот процесс то, чего вы не можете добиться извне?

...