Encryption vs. Obfuscation
Definitions
According to searchCIO.com the definition of obfuscation is:
Obfuscation
Obfuscation, in general, describes a practice that is used to intentionally make something more difficult to understand. In a programming context, it means to make code harder to understand or read, generally for privacy or security purposes. A tool called an obfuscator is sometimes used to convert a straight-forward program into one that works the same way but is much harder to understand.
According to dictionary.com encryption is defined as:
Encryption
The manipulation of data to prevent accurate interpretation by all but those for whom the data is intended. Financial institutions use encryption to increase the security of data transmitted via the Internet.
How scrambled are they?
An obfuscator attempts to secure your code by scrambling your code enough to make it unreadable by another human being. A programmer looking at obfuscated code has a hard time understanding what it does. The pro and a con to this is that it does nothing to stop a computer from reading the code. This is good because you want your code to still execute. It is bad because obfuscated code can be de-obfuscated. This does add an extra layer to overcome for a hacker, however once a de-obfuscator is built for a certain type of obfuscator all bets are off.
Encryption is different. Neither human nor any computer can read encrypted code. This means that by default your code cannot execute. This completely blocks out any attempt to unscramble your code. With the help of AssemblyLockbox your encrypted code can be decrypted and then executed on the fly at runtime.
Modification of your code
Obfuscation works by going through all your code and changing it so that it is hard to understand. There are side effects however. These tools are not perfect and can often make changes that break your code. With enough tweaking you can get them to successfully scramble all your code without creating bugs...eventually.
AssemblyLockbox does not mess with your code at all. It encrypts the entire dll file before shipment and after being compiled.