1. A computer-implemented method for malware detection, the method comprising: loading at least a portion of a software code into a system memory; converting the loaded software code into a low-level programming language; simplifying complex instructions in the converted code into basic instructions; constructing a data flow model of the simplified software code; analyzing dependencies and interrelations of code elements of the data flow model to identify obfuscated software codes therein; optimizing one or more identified obfuscated codes in the data flow model; and determining based on results of optimization whether the software code is malicious.