Is the problem of deciding whether two programs have the same semantics decidable?
Concretely, we are always dealing with syntactical transformations, regardless whether there is a semantic theory that renders these transformations intelligible to us, or not. In the end, our ability to automatically demonstrate that two different programs are equivalent is restricted to properties that can be defined syntactically. Even then, there are limits to what we can do, if we allow the language in which these properties are defined to be rich enough, so the answer to your question, in the general case, would have to be negative.

More specifically though, behind every specific metamorphic process that can be automated there is also a specific strategy, so there are also limits to the efficacy of those malware pieces. Because of that, it may be possible, given some knowledge of this strategy, to target its syntactical features in a controlled way, and automatically crack the code behind it, preventing it from attacking.

Malware creators have the initiative though, which gives them an advantage. This advantage can be amplified with technical skill and mathematical sophistication, so it's not advisable to base your security strategy on the ability to detect and deactivate a piece of software that already entered your system.