Exploiting code mobility for dynamic binary obfuscation