Я хочу создать « Черный список » текущих запущенных процессов.
В настоящее время я прохожу каждый процесс и иду в Путь к программе.
Сканирование первые 512 байт и сделать из него своего рода " водяной знак " Программы для моего черного списка.
byte[] blacklistProgram = new byte[] { 77, 90, 144, 0, etc.... }; // 512 Bytes
var ps = Process.GetProcesses();
foreach (var p in ps)
{
try
{
string path = p.MainModule.FileName;
byte[] actualBytesWatermark = ReadBytesWatermark(path);
string printThis = PrintBytes(actualBytesWatermark);
Console.WriteLine(path + " first 512 Bytes ---------------------------");
//Console.WriteLine(printThis);
if (ByteArrayCompare(blacklistProgram, actualBytesWatermark))
{
Console.WriteLine("!!!!!!!!!!!!!!!");
Console.WriteLine("Found Blacklist Program");
Console.WriteLine("CLOSE HERE MY PROGRAM");
//Environment.Exit(0);
Console.WriteLine("!!!!!!!!!!!!!!!");
}
Console.WriteLine("---------------------------------------------------");
}
catch
{
}
}
Console.ReadKey();
}
static bool ByteArrayCompare(byte[] b1, byte[] b2)
{
return b1.Length == b2.Length && memcmp(b1, b2, b1.Length) == 0;
}
public static byte[] ReadBytesWatermark(string fileName)
{
byte[] buffer = new byte[512];
using (FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read))
{
// First 512 Bytes should be fine to make a watermark of a Program?
fs.Read(buffer, 0, buffer.Length);
}
return buffer;
}
Я хочу улучшить его и запустить сканирование споловина размера программы, а затем сканирование с этой точки, только 512-1024 байта, зависит также от размера программы.
int startPoint = file.length / 2;int endPoint = startPoint + 512 или 1024 байта.
Но сейчас я борюсь с этим!
Возможно, у кого-то даже есть лучшая идея сделатьЧерный список вроде этого.