1. A method of determining whether software includes malicious code, comprising the steps of: providing an actual, physical computer system to function as a validation machine; instrumenting the validation machine with tools and monitors to log data associated with the static and dynamic behavior of software executed on the validation machine; using human guidance to train an algorithm to automatically detect and learn patterns in the logged data associated with unsafe, vulnerable or malicious code using machine learning techniques; executing the algorithm on the validation machine to find patterns in the data logged during the execution of the software to classify the behavior of the software as likely safe or likely unsafe vulnerable or malicious code; if the software is classified as unsafe, vulnerable or malicious, automatically performing one or more operations on the software to neutralize the unsafe, vulnerable or malicious code; and flagging for human inspection activities that cannot be neutralized automatically.