Not necessarily, but in practice no one has any use for the technique except to obfuscate viruses, with the exception of academic research.
The nonvirus equivalent is JITs which are present in all major browsers and tons of other runtimes, but they have no use for polymorphism except at a theoretical level (they all use it extensively, but at the type level).
I fought with polymorphic code quite a bit back when I was removing copy protection (many decades ago). There may be other cases where making debugging hard is desirable.