VirusKiller.h
上传用户:leon2013
上传日期:2007-01-10
资源大小:186k
文件大小:3k
源码类别:

杀毒

开发平台:

Visual C++

  1. // VirusKiller.h: interface for the VirusKiller class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #if !defined(AFX_VIRUSKILLER_H__4D0A0DB8_8877_4A66_87A3_A8BB69BBB4E7__INCLUDED_)
  5. #define AFX_VIRUSKILLER_H__4D0A0DB8_8877_4A66_87A3_A8BB69BBB4E7__INCLUDED_
  6. #if _MSC_VER > 1000
  7. #pragma once
  8. #endif // _MSC_VER > 1000
  9. #pragma warning(disable : 4786)
  10. #include <set>
  11. using namespace std;
  12. #define VIRUS_SKIPPED 1
  13. #define VIRUS_SCANNED 2
  14. #define VIRUS_INFECTED 4
  15. #define VIRUS_CLEANED 8
  16. #define VIRUS_DELETED 16
  17. #define VIRUS_NOTIMPLIMENTED 32
  18. #define VIRUS_ERR 128
  19. /* type definition for virus scanners & killers */
  20. class VirusKiller {
  21. public:
  22. /* result type of scan */
  23. typedef int SCANRESULT;
  24. /* collection of virus killers */
  25. typedef set<VirusKiller*> Set;
  26. /* constructors */
  27. VirusKiller(LPCTSTR name, LPCTSTR extensions=NULL, bool all_files=false);
  28. VirusKiller(const VirusKiller& copy);
  29. /* destructor */
  30. virtual ~VirusKiller() {}
  31. /* assignment */
  32. VirusKiller& operator=(const VirusKiller& copy);
  33. /* returns the name of the virus */
  34. inline const CString& Name() const { return m_name; }
  35. /* returns file extensions associated with this virus (seperated by semi-colons) */
  36. inline const CString& Extensions() const { return m_extensions; }
  37. /* returns whether all files with this extension will be cleaned */
  38. inline bool AllFiles() const { return m_allfiles; }
  39. void AllFiles(bool allfiles) { m_allfiles=allfiles; }
  40. /* returns the signature for this virus :
  41. You must set the m_signature in the child class so the scanning algorithm will
  42. know what to scan for in the files.
  43. */
  44. inline LPBYTE Signature() const { return m_signature; }
  45. /* cleans a file that contains a recognized signature 
  46. Called by the scanner when it has detected a file that must be cleaned. You must
  47. override this method in any child class.
  48. */
  49. virtual SCANRESULT Clean(LPCTSTR file) { return VIRUS_NOTIMPLIMENTED; }
  50. /* cleans a process that contains a recognized signature 
  51. Called by the scanner when it has detected a process that must be cleaned. You must
  52. override this method in any child class if you want to support cleaning (or terminating)
  53. of an infected process.
  54. */
  55. virtual SCANRESULT Clean(HANDLE hprocess, LPCTSTR module_name, ULONG base_address, ULONG length) { return VIRUS_NOTIMPLIMENTED; }
  56. /* comparison operator sorts collection of virus killers by name */
  57. inline bool operator<(const VirusKiller& rhs) const { return m_name<rhs.m_name; }
  58. protected:
  59. CString m_name, /* name of the virus */
  60. m_extensions; /* extensions associated with virus */
  61. LPBYTE m_signature; /* signature string of virus */
  62. bool m_allfiles; /* all files with this signature will be cleaned */
  63. };
  64. #endif // !defined(AFX_VIRUSKILLER_H__4D0A0DB8_8877_4A66_87A3_A8BB69BBB4E7__INCLUDED_)