A security module detects attempted exploitations of vulnerabilities of applications executing on a computer. The security module hooks an application on the computer. The hook transfers 
control flow to the security module if execution reaches a hooked location. When a hook is followed, the security module saves the state of the computer and activates an analysis environment. A 
virtual machine within the analysis environment executes signatures that programmatically analyze the state of the computer to determine whether a 
vulnerability in the application is being exploited. If a signature detects an 
exploit, the security module blocks the 
exploit by skipping over the one or more instructions that constitute the 
exploit, terminating the application, or performing a different action. The security module reports the detected exploit attempt to the user of the 
client. The security module returns 
control flow back to the application if it does not detect an exploit.