1. A computer-implemented method for enforcing secure software execution, the method being performed by a computing device comprising at least one processor, the method comprising: providing a plurality of known benign inputs to an executable file that is susceptible to abnormal code execution; observing a plurality of series of function calls made by the executable file as the executable file processes each of the known benign inputs in the plurality of known benign inputs; storing the plurality of series of function calls as a plurality of control flow graphs that represents known safe function call pathways for the executable file, wherein each of the known safe function call pathways represents a safe order of function calls and each of the control flow graphs is associated with a file type description; and forcing a subsequent execution of the executable file to follow a series of function calls in a safe order of function calls represented by a known safe function call pathway stored in one of the control flow graphs to protect the executable file against the abnormal code execution.