Code morphing
From Wikipedia, the free encyclopedia
It has been suggested that this article or section be merged into Obfuscated code. (Discuss) |
This article may contain improper references to self-published sources. The source in dispute is: article. Please help improve this article by removing unreliable sources. A self-published source may only be cited as a primary source in an article about the author or source itself and not as an authority. (October 2007) |
Code morphing is one of the approaches to protect software applications from reverse engineering, analysis, modifications, and cracking used in obfuscating software. This technology protects intermediate level code such as compiled from Java and .NET languages (C#, Visual Basic, etc) rather than binary object code. Code morphing breaks up the protected code into several processor commands or small command snippets and replaces them by others, while maintaining the same end result. Thus the protector obfuscates the code at the intermediate level.
Code morphing is a multilevel technology containing hundreds of unique code transformation patterns. In addition this technology transforms some intermediate layer commands into Virtual Machine commands (like P-Code). Code Morphing may also turn binary code into an undecipherable mess that is not similar to normal compiled code, and completely hides execution logic of the protected code.
Unlike other code protectors, there is no concept of code decryption with this method. Protected code blocks are always in the executable state, and they are executed (interpreted) as transformed obfuscated code. The original intermediate code is completely absent.
"Code Morphing" is also used to refer to the Just-in-time compilation technology used in Transmeta processors such as the Crusoe and Efficeon to implement the X86 instruction set architecture.