The document proposes new methods for automatically generating malware invariants from binary code to detect and identify malware. Current signature-based malware detectors can be evaded through obfuscation, but malware invariants capture semantic properties that are more difficult to obfuscate. The method involves using formal methods and static analysis to extract invariants from binary code and represent them as semantic signatures, called malware invariants, that can be matched against suspicious code to detect malware families. Combining multiple static and dynamic analysis tools can help generate strong malware invariants that circumvent common obfuscation techniques used by malware writers.