2010-10-10 25 views
1

Je me demandais si je pouvais connecter les processus Windows pour vérifier si des programmes suspects fonctionnent (Wireshark, Fiddler, OllyDBG, etc.).C# Accrocher les processus Windows pour vérifier les processus de débogage

Je veux raccorder les processus Windows pour qu'il ferme le client ou affiche un message en temps réel lorsqu'il détecte un processus indésirable.

Si vous pouvez me fournir des liens pour faire cela, ce serait bien.

Merci!

+0

Cela n'empêchera pas un désassembleur ou des personnes renommant 'ollydbg.exe' à autre chose. Ne croyez pas aveuglément que cela empêchera l'altération (bien que cela puisse ralentir quelqu'un pendant une minute ou deux). Assurez-vous d'avoir d'autres moyens de défense. – Zooba

+0

Je vérifie également les titres des fenêtres de ces processus. – xZerox

+0

Il existe des plugins anti-détection pour ollydbg pour presque toutes les méthodes de détection d'espace utilisateur que vous pouvez imaginer. Et pourquoi les fils de guerre, olly, ... le mal? – CodesInChaos

Répondre

1
Process[] processlist = Process.GetProcesses(); 

Ensuite, parcourez la liste et faites comme vous le souhaitez pour vos applications que vous ne voulez pas exécuter.

+0

Je veux accrocher les processus Windows, un peu comme accrocher un clavier pour avoir un "key logger" en temps réel. – xZerox

+0

@AaronMcIver Aaron merci pour votre réponse. Connaissez-vous les noms des processus utilisés par les logiciels de craquage commun? – BKSpurgeon

0

EnumWindows énumère toutes les fenêtres de niveau supérieur.

Et vous ne voulez pas injecter un DLL C# dans d'autres processus. Cela nécessite que le runtime .net soit chargé dans ce processus. Cela gaspille de la RAM, et si le processus est une application .net utilisant une version différente de .net, il y a des problèmes de versioning. Surtout si votre DLL est injectée avant que le processus charge sa propre version de .net.

Et que voulez-vous réaliser en injectant dans ce processus que vous ne pouvez pas atteindre de l'extérieur?

1

Vous pouvez détecter des créations de processus à l'aide des événements de création WMI pour Win32_Process. Une instance de Win32_Process est créée avec chaque processus, donc la recherche de nouvelles instances vous parlera de la création de processus en temps réel (proche).

Pour recevoir des événements de création WMI, voir cette page: http://msdn.microsoft.com/en-us/library/system.management.eventquery.aspx (EDIT: lien différent, maintenant pour échantillonner en C#).

0

Vous voudrez peut-être vérifier EasyHook sur CodePlex (http://easyhook.codeplex.com). Here est une discussion où les gens auraient été en mesure de se connecter à CreateProcess. Si vous parvenez à vous connecter à cette fonction API, vous connaissez le processus créé au moment de la création.