With the advent of set top boxes, mobile software, and other factors, software authors are wanting to create applications that are resistant to reverse engineering, especially decompilation. This process, usually automatic, has various names, such as obfuscation, tamper resistant software, and even tamper-proof software.
The main ideas seem to revolve around control-flow and data-flow "encoding". The real code is padded with "decoy" code, and simple operations (like adding and subtracting) are hidden behind "transformed variables". For example, by subtracting two polynomials, you can effectively perform an addition. It is claimed that this sort of thing becomes very difficult even for the original author to reverse engineer, or the writers of the encoding programs.
It could turn out that this technology will render decompilation ineffective. My opinion (and it's not very well informed, I admit) is that present tamper resistance is largely ineffective. My guess is that it will stay that way, but only time will tell. To get a flavour of what it's about, search for "tamper resistant software", or start with these sites:
CategoryDecompilation