Three new obfuscation techniques. Data field obfuscation replaces
references to data fields that use an object name and a field name with
references that use an object name but do not use a field name.
Obfuscation using the reflection mechanism for the executable code works
by replacing a construct in the executable code with one or more
equivalent constructs made using the reflection mechanism. Obfuscation of
externally-defined constructs is done by relating the externally-defined
construct to an obfuscation for the construct that is used within the
executable code. The relationship is defined in a portion of the
executable code, and at least the externally-fined construct is encrypted
in the portion. The various obfuscation techniques may be used with each
other or with other previously-known obfuscation techniques. The
disclosed obfuscation techniques are particularly well-adapted for use
with the byte codes produced by Java language compilers from Java
language programs.