×

Heuristic detection of polymorphic computer viruses based on redundancy in viral code

  • US 7,266,844 B2
  • Filed: 09/27/2001
  • Issued: 09/04/2007
  • Est. Priority Date: 09/27/2001
  • Status: Expired due to Fees
First Claim
Patent Images

1. A computer program product for controlling a computer to detect an executable computer program containing a computer virus, said computer program product comprising:

  • analysis logic for analyzing program instructions forming said executable computer program to identify suspect program instructions being at least one of;

    (i) a program instruction generating a result value not used by another portion of said executable computer program; and

    (ii) a program instruction dependent upon an uninitialised variable; and

    detecting logic for detecting said executable computer program as containing a computer virus if a number of suspect program instructions identified for said executable computer program exceeds a threshold level, wherein said analysis logic includes a dependence table indicating dependency between state variables within said computer and loaded variable values, and for each program instruction said analysis logic makes a determination as to which state variables are read and written by that program instruction and for each loaded variable value within said dependence table if any state variable read by that program instruction is marked as dependent upon said loaded variable value, then all state variables written by that program instruction are marked as dependent upon said loaded variable value with previous dependencies being cleared, and said analysis logic parses said executable computer program for suspect program instructions by following execution flow and upon occurrence of a branch first following a first branch path having saved pending analysis results and subsequently returning to follow a second branch path having restored said pending analysis results;

    wherein a state variable is marked as initialised upon occurrence of one of;

    (i) a write to said state variable of a determined initialised value; and

    (ii) use of said state variable as a memory address value by a program instruction;

    wherein a branch path stops being followed when one of the following occurs;

    (i) there are no further suitable program instruction for execution within that branch path; and

    (ii) said branch path rejoins a previously parsed execution path;

    wherein said analysis logic includes an initialisation table indicating which state variables have been initialised;

    wherein said dependence table includes a column for each register within a processor, an external write, and a write to a flag value; and

    a plurality of rows with each row corresponding to a value loaded into said computer that influences a state of said computer;

    wherein said initialisation table includes a column for each register within said processor indicating whether each register is initialised.

View all claims
  • 2 Assignments
Timeline View
Assignment View
    ×
    ×