1. A computer program product comprising: a computer-readable storage medium having executable computer program logic embodied therein for detecting computer viruses in files of a computer system, the computer program logic comprising: a file typing module for analyzing files of the computer system, generating information describing virus infection susceptibility characteristics of the files, and storing the generated information in a file information cache; a file modification module for detecting changes to the files and updating the stored information for changed files; a virus definition module for receiving from a remote server a plurality of virus definitions and holding the received virus definitions, each virus definition identifying a virus, describing one or more characteristics of files that are susceptible to the virus and describing how to detect the virus within a file; a filter generation module for receiving the characteristics of files that are susceptible to a virus as described by a virus definition and querying the file information cache using characteristics described by the virus definition to identify a subset of files having the characteristics; and a file scanning module for receiving the description of how to detect the virus within a file from the virus definition and examining the files within the subset to determine whether a file is infected by the virus.