Hevesini kırmak istemem ancak C# ile tam manasıyla bir antivirüs programı yapılması pek de mümkün değil. Burada ayrıntılı şekilde teknik sebepleri açıklanmış:
C# ile Antivirüs
Virüsleri tanımak için genel olarak iki yol var. İlk olarak, virüslerin imzalarını toplayarak bir veri tabanı kullanmak. Tüm virüslerden imzaları toplamak kolay olmayacak. Ayrıca bunu tek başına sürekli tutmak da imkansız gibi. İkinci olarak, sezgisel analiz teknikleri mevcut. Heuristic olarak geçiyor. C# da bunu yapmak için yeterli bir dil değil.
Bu demek olmuyor ki virüsleri C# ile avlayamazsın. Ben de bu işe merak saldığımda, evet .exe uzantılı virüsleri yakalayamıyor belki ancak ufak çaplısını yapmıştım.
Biliyorsundur özellikle şaka amaçlı kullanılan .bat uzantılı virüsler mevcut. Kapsamlı bir dil olmasa da; hesap şifreni değiştirebilecek, klavye ve mouse gibi kontrolleri devre dışı bırakabilecek kodlar internet üzerinde mevcut. Ben de bunları yakalayabilmek amaçlı bir program geliştirmiştim. Başlangıç olarak böyle bir şey düşünebilirsin. Tarama için foreach döngüsü ile belirtilen dizindeki tüm dosyaları teker teker çekip, streamreader sınıfı ile okuyarak, internette kolayca bulabileceğin hazır batch virüslerinden kodları aldıktan sonra karşılaştırabilecek bir kod dizisi yazabilirsin. Anlık izleme için filesystemwatcher objesini kullanabilirsin, yalnız pek performanslı çalışmıyor.
Kendin bir şeyler dene. Takıldığın noktalarda yardımcı olmaya çalışırım.