CodeMorph Code Obfuscation Principle
Code Obfuscation Principle
Programs written in programming languages such as C++ or Pascal are compiled into the machine language of a
given computer before they become a program. Programmers write "source code", computers run "machine code" so
this conversion is necessary. There is (generally) a one way transformation from source code to machine code.
Machine code is not encrypted and is easy for anyone to see, but the format is so tedious for humans that
reverse-engineering efforts are slow and painful.
So disassembler appears. Disassembler can translate machine language back into assembly language, performing the
inverse operation to that of an assembler, and no matter in which language the application was originally written.
The common disassemblers, such as IDA Pro Disassembler,
OllyDbg and WinDasm are the great menace for technical protection and intellectual property protection.
CodeMorph code obfuscator can help you face these disassemblers. It is an excellent solution to protect
software applications from reverse engineering, analysis, tracing and modifications. CodeMorph
turns binary code into an undecipherable mess that is not similar to normal compiled code, and completely
hides execution logic of the protected code.
CodeMorph's code morphing technology protects the code on the CPU command level. It breaks up the
protected code into several processor commands or small command snippets and replace them by others, while
maintaining the same end result.
There is no concept of code decryption with this approach of CodeMorph. Protected code are always in the
executable state, and they are executed as a transformed code. The original code is completely lost and
code restoration is an impossible task.
Source Code Obfuscation Example
writeln('CodeMorph'); // Object Pascal (Delphi) testing code
mov eax, [$ 004092ec]
mov edx, $00408db4
After the junk code inserting and compilation, the code becomes undecipherable mess:
add al, $30
or al, $4a
rol eax, $14
mov edi, [ebx]
mov ebx, eax
shr ebx, $03
adc dh, ah
adc [eax], al
les eax, [ecx+$0118bfc0]
The weak point of junk code generator is that it significantly increases the size and affects the speed of a
program. But protecting an application author usually doesn't need to transform its entire code. It is enough to
protect only critical parts of your code, responsible for serial number verification, trial expiration date, and
other evaluation restrictions. The rest of application code remains intact and software execution speed remains
CodeMorph C/C++ Code Obfuscator »
CodeMorph Delphi Code Obfuscator »