Fady,
Obfuscators do not always reduce efficiency. The obfuscator in our
product actually often improves efficiency in many cases by recognizing
higher level code constructs that can be more effiently compiled.
Obfuscators sufficiently rename types and members to make decompiler
code sufficiently unreadable and unmaintainable. They are not intended
to hide secrets. Sensitive data and algorithms should be kept server
side. All programs contain instruction sequences that processors
understand for execution. Decompilers work by recognizing these
sequences and replacing them with higher level constructs. The code that
they generate is not identical to the original code, but is high level
and readable. Programs compiled for virtual machines like .NET and Java
also contain metadata necessary for execution that includes type
information and calling conventions among other things. Obfuscators
rename this metadata so that the code is not directly understandable or
maintainable. This renaming does not impact performance. You may want to
read about Next Generation Secure Computing Base
(
http://www.microsoft.com/resources/ngscb/default.mspx) which will
improve client side security by restricting programs so they can be
loaded into a protected memory space for execution that is not readable
by external processes or devices. The code can exist in encrypted form
on disk and in memory until it is loaded into the secure hardware
environment.
You may want to review our Decompiler.NET product which contains both
advanced obfuscation and high level decompilation capabilities. It also
improves code readability and efficiency through it's code analysis,
optimization, and automatic refactoring features. Many customers also
use it as a .NET source language translator that produces code that
always compiles and runs correctly. You can download a free trial
version from our web site at
http://www.junglecreatures.com/
Jonathan Pierce
President
Jungle Creatures, Inc.
http://www.junglecreatures.com/
Email: (e-mail address removed)