Example #1
0
        // Генерируем простую сигнуру типа
        // Console.WriteLine("Virus!");
        // Thread.Sleep(1000);
        private void GeneratSignatureButton_Click(object sender, EventArgs e)
        {
            // Прочитаем "зараженные" файлы(сегменты кода) и найдем их общую часть
            Parser p1 = new Parser("Virus1.exe");

            p1.doIt();
            Parser p2 = new Parser("Virus2.exe");

            p2.doIt();
            Parser p3 = new Parser("MiniVirus.exe");

            p3.doIt();
            Parser p4 = new Parser("NotVirus.exe");

            p4.doIt();

            var segm1 = p1.AllSegments.First().CodeBytes;
            var segm2 = p2.AllSegments.First().CodeBytes;
            var segm3 = p3.AllSegments.First().CodeBytes;

            // Найдем пересечение общих участков кода - это и будет сигнатура! ищем данный участок: он отсутствует у p4
            // Console.Writeline("VIRUS!";
            //  Thread.Sleep(1000);
            var a7 = LCS(Encoding.Default.GetString(segm1), Encoding.Default.GetString(segm2));
            var a8 = LCS(Encoding.Default.GetString(segm3), Encoding.Default.GetString(segm2));
            var a9 = LCS(a7, a8);

            // Методом тыка пришёл к получению данной сигнатуры:
            //Добавляем сигнатуру в базу данных
            Addsignature(Encoding.Default.GetBytes(a9));

            this.progressBar1.Value = 0;
        }
Example #2
0
        public  void ScanFile(FileInfo f)
        {
            i++;
            if (numberofFile != 0)
            {
                procent = (i * 100) / numberofFile;
            }

            //// Вывод процентов
            progressBar.Value = (int) procent;
            //// Вывод названия сканируемого файла
            richTextBoxResult.Text += '\n'+f.Name;

            try
            {
                // Парсер - получаем сегменты кода проверяемого файла
                Parser p = new Parser(f.FullName);
                if (p.doIt() != 1)
                {
                    if (virusLibrary.check(ref p))
                    {
                        virusFiles.Add(f);
                        numberofVirusFile++;
                    }
                    numberofPEFile++;
                }
            }
            catch (FileNotFoundException exception)
            {
                numberofNotOpenedFile++;
                richTextBoxResult.Text += '\n' + exception.Message+ '\n';
            }
            catch (IOException exception)
            {
                numberofNotOpenedFile++;
                richTextBoxResult.Text += '\n' + exception.Message + '\n';
            }
        }
        public void ScanFile(FileInfo f)
        {
            i++;
            if (numberofFile != 0)
            {
                procent = (i * 100) / numberofFile;
            }

            //// Вывод процентов
            progressBar.Value = (int)procent;
            //// Вывод названия сканируемого файла
            richTextBoxResult.Text += '\n' + f.Name;

            try
            {
                // Парсер - получаем сегменты кода проверяемого файла
                Parser p = new Parser(f.FullName);
                if (p.doIt() != 1)
                {
                    if (virusLibrary.check(ref p))
                    {
                        virusFiles.Add(f);
                        numberofVirusFile++;
                    }
                    numberofPEFile++;
                }
            }
            catch (FileNotFoundException exception)
            {
                numberofNotOpenedFile++;
                richTextBoxResult.Text += '\n' + exception.Message + '\n';
            }
            catch (IOException exception)
            {
                numberofNotOpenedFile++;
                richTextBoxResult.Text += '\n' + exception.Message + '\n';
            }
        }
Example #4
0
        // Генерируем простую сигнуру типа
        // Console.WriteLine("Virus!");
        // Thread.Sleep(1000);
        private void GeneratSignatureButton_Click(object sender, EventArgs e)
        {
            // Прочитаем "зараженные" файлы(сегменты кода) и найдем их общую часть
            Parser p1 = new Parser("Virus1.exe");
            p1.doIt();
            Parser p2 = new Parser("Virus2.exe");
            p2.doIt();
            Parser p3 = new Parser("MiniVirus.exe");
            p3.doIt();
            Parser p4 = new Parser("NotVirus.exe");
            p4.doIt();

            var segm1 = p1.AllSegments.First().CodeBytes;
            var segm2 = p2.AllSegments.First().CodeBytes;
            var segm3 = p3.AllSegments.First().CodeBytes;

            // Найдем пересечение общих участков кода - это и будет сигнатура! ищем данный участок: он отсутствует у p4
            // Console.Writeline("VIRUS!";
            //  Thread.Sleep(1000);
            var a7 = LCS(Encoding.Default.GetString(segm1), Encoding.Default.GetString(segm2));
            var a8 = LCS(Encoding.Default.GetString(segm3), Encoding.Default.GetString(segm2));
            var a9 = LCS(a7, a8);

            // Методом тыка пришёл к получению данной сигнатуры:
            //Добавляем сигнатуру в базу данных
            Addsignature(Encoding.Default.GetBytes(a9));

            this.progressBar1.Value = 0;
        }