C # Сделать черный список запущенных программ с определенными байтами файла и закрыть программу - PullRequest
0 голосов
/ 22 февраля 2019

Я хочу создать « Черный список » текущих запущенных процессов.

В настоящее время я прохожу каждый процесс и иду в Путь к программе.

Сканирование первые 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 байта.

Но сейчас я борюсь с этим!

Возможно, у кого-то даже есть лучшая идея сделатьЧерный список вроде этого.

...