// Генерируем простую сигнуру типа // 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; }
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'; } }