A method of code obfuscation includes receiving a block of code. One or
more obfuscation algorithms are then iteratively applied to the received
code. The obfuscation algorithms are repeatedly applied, such that the
output of the previous obfuscation algorithm provides the input to the
next obfuscation algorithm. Each obfuscation algorithm may be a
relatively simple code transform technique. The same obfuscation
algorithm may be applied repeatedly or any combination of a plurality of
obfuscation algorithms may be applied in any sequence. The cascading
effects of applying rounds of obfuscation algorithms achieve obfuscated
code exhibiting a significantly increased level of security that cannot
be normally derived from the security of each individual algorithm.