1. A method for determining a computer program signature, the method comprising: identifying functions within a suspect computer program; generating at least one control flow graph based on the identified functions; reducing the control flow graph in order to produce at least one reduced control flow graph; generating function flow grammar based on identified functions associated with static address information included in the reduced control flow graph; and determining a signature by ordering the identified functions included in the function flow grammar based on at least one characteristic associated with each function.