Hallo, ich suche schon lange nach einer Möglichkeit aktuelle Prozesse in MD5 Hash aufzulisten sowie neue Prozesse in MD5 anzeigen zu lassen.
Beispiel:
New Process started "explorer.exe" size:62933kb Hash:"XXXXXXXXXXXXXXX"
Process end "explorer.exe" size:62933kb Hash:"XXXXXXXXXXXXXXX"
Sowie:
explorer.exe size:62933kb Has:"XXXXXXXXXXXXXX"
Steam.exe Size:29100kb hash:"XXXXXXXXXXXX"
xxx.exe usw.
Ein Freund von mir sagte mir es sei garnicht Möglich nur über eine .DLL
Hat jemand eine Lösung für mein Problem?
mfg
🙂
Zum einen ist es möglich eine Liste aller laufenden Prozesse zu bekommen mit GetProcess aus der Process-Klasse.
Meines Wissens ist es nicht möglich einen Event ala ProcessStarted bzw. ProcessCreated zu abonnieren aber per Polling könntest du alle paar Sekunden checken ob die letzte Prozessliste noch aktuell ist.
Den MD5-Hash kannst du einfach aus der PID errechnen soweit kein Problem aber was genau meinst du mit:
Ein Freund von mir sagte mir es sei garnicht Möglich nur über eine .DLL ?
As a man thinketh in his heart, so he is.
Hallo Marwyc,
sieh dir mal die Klasse MD5CryptoServiceProvider zum Berechnen des MD5-Hashes an. Die Berechnung des Hashes hat mit der Verwendung von DLLS absolut nichts zu tun. Wie du an die laufenden Prozesse gelangst, hat ja der-schlingel schon beschrieben.
m0rius
Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg
Den MD5-Hash kannst du einfach aus der PID errechnen soweit kein Problem aber was genau meinst du mit:
Wahrscheinlich geht es mehr um den Hash des Executables.
Könnte dann wie folgt aussehen:
MD5 md5Provider = new MD5CryptoServiceProvider();
foreach(Process process in Process.GetProcesses())
{
Console.Write("\"{0}\" ", process.ProcessName);
try
{
string fileName = process.MainModule.FileName;
using(FileStream fs = File.OpenRead(fileName))
{
byte[] md5Bytes = md5Provider.ComputeHash(fs);
string md5String = String.Join("", md5Bytes.Select(x => x.ToString("x2")));
Console.WriteLine("size: {0}kb Hash: {1}", fs.Length / 1024, md5String);
}
}
catch(System.ComponentModel.Win32Exception)
{
Console.WriteLine("<NoAccess>");
}
}
beste Grüße
zommi
Hallo, danke für die Tipps und Beispiele.
Das man eine Prozessliste auslesen kann weiß ich.problematisch wurde es halt bei der MD5, ein Freund von mir sagte ich soll es in C++ machen und dann in C# einbinden. So oder so ähnlich. Leider behersche ich kein C++. Und ja es geht um die Hash von den Executables. Ich teste es nachher mal =) danke schön.
🙂