A computerized method for performing runtime de-obfuscation of obfuscated malicious software code in a virtual machine, the method comprising:
- providing a virtual address space and a virtual-to-physical address mapping for use in execution of a first piece of software code, the virtual address space being a portion of a virtual address space associated with the virtual machine;
- during runtime of the virtual machine, updating the virtual address space and the virtual-to-physical address mapping in response to at least (i) a process change, (ii) a change of software code being analyzed, or (iii) a change in at least one page table associated with the virtual-to-physical address mapping, and
- performing, via virtual machine introspection, runtime de-obfuscation of the first piece of software code being analyzed including
- (i) detecting when a first virtual location in the first virtual address space was written to and, subsequently, software code at the first virtual location was executed, wherein the first virtual location corresponds to a first physical location in the first physical page having a permission of non-writable, and
- (ii) determining that the software code at the first virtual location corresponds to obfuscated software code.