|
yGuard Changelog
yGuard 2.4 - Changes since 2.3.0.1
- Added basic Java 7 class file support (see the note on Java 7 compatibility).
- Fixed a bug that caused yGuard to introduce invalid signatures for typed classes with inner classes.
- Fixed a bug that caused yGuard to erroneously exclude all classes from obfuscation when an
implements attribute
was used for a <class> element without an additional name or expose
attribute.
- Fixed a bug that caused the shrinker to ignore the
attribute element if the default
shrinking settings were used (i.e. if no keep element was defined).
yGuard 2.3.0.1 - Changes since 2.3.0
-
Fixed a bug that caused the shrinker to remove the static initializer of a non-static
inner class when only fields of the inner class were referenced (e.g. compiler-generated
switch map tables for enums).
yGuard 2.3.0 - Changes since 2.2.0
- yGuard won't try to initialize external classes needed for resolving anymore.
- The default behavior of the shrinker was changed to keep any referenced runtime visible annotation and parameter annotation attributes.
- The shrinker will now correctly adhere to the "lineNumberTable", "runtimeVisibleParameterAnnotations" etc.
attributes of the <keep> element.
- Fixed a bug that caused the shrinker to remove the enclosing method of anonymous inner classes
declared as entry points.
- Fixed a bug that caused the shrinker to remove referenced Annotation elements from Annotation interfaces.
- yGuard now won't rename or remove the package-info class.
- Fixed possible "Illegal group reference" Exception in yGuard's parse tool.
- The shrinker will now keep classes that are used as field types of
referenced fields.
- The shrinker will now correctly keep method attributes of methods that are kept as stubs.
yGuard 2.2.0 - Changes since 2.1.0
- yGuard is now fully JDK-1.6 compatible.
- The
yGuard task now supports a way of specifying a set of Jar files that should be obfuscated at the same time
using simple patternset syntax.
- yGuard now uses the same technique for all elements in the MANIFEST file to adjust fully qualified class name strings.
- It is now possible to tell yGuard not to obfuscate specific package names.
- yGuard can now be given a list of digest algorithms that will be used to create the digests in the manifest.
- yGuard now issues a warning if the package or class or method name of a native method is obfuscated.
yGuard 2.1.0 - Changes since 2.0.3
-
Fixed a bug that caused yGuard to throw a NullPointerException if an
attribute
element contained no nested patternset.
-
Fixed a bug that caused yGuard to use multiple logging instances if a yGuard task
was executed multiple times.
- Fixed LineNumberTable and SourceFile elements.
- Added overloadEnabled property.
yGuard 2.0.3 - Changes since 2.0.2
-
Fixed a bug that broke the nested
map element of the rename
element.
yGuard 2.0.2 - Changes since 2.0.1
-
Fixed a bug that caused yGuard to fail during class file parsing if a method signature
contained an inner class of a parameterized class.
-
yGuard will not complain about the Java 1.5 attributes
Bridge, Enum,
and Varargs as 'unknown attributes' anymore.
-
Fixed a bug that caused all class names to be kept from renaming if the
extends
attribute was used in combination with the classes attribute.
yGuard 2.0.1 - Changes since 2.0
-
Fixed an inconsistency between the interpretation of the Ant syntax in the
rename
and shrink elements.
Now, both elements apply patternset elements in nested method
and field elements to class names, just as stated in the yGuard documentation.
-
If the
classes attribute of the class element is not
set or set to "none", the shrinking engine will now include the classes
that match based on the given name attribute or nested patternset,
effectively ignoring the classes attribute.
yGuard 2.0 - Changes since 1.5.0_03
- New elaborate code shrinking functionality.
-
More powerful Ant syntax:
extends/implements attributes
for the class element.
-
General Ant syntax changes due to the introduction of the new
yguard,
shrink, and rename elements.
- yGuard now needs Java 2 SDK 1.4.x or greater to function properly.
yGuard 1.5.0_03 - Changes since 1.5.0_02
-
Fixed bad treatment of the new enclosing method feature in Tiger which sometimes led to AbstractMethodErrors at runtime.
yGuard 1.5.0_02 - Changes since 1.5.0_01
-
Improved obfuscation logic for enumerations. Now the two static methods valueOf(String) and values() don't have to be exposed manually anymore.
-
Fixed bad annotation handling for non-trivial annotations. Annotations had not been parsed and handled correctly, which could lead to either
errors during obfuscation or Errors at runtime.
yGuard 1.5.0_01 - Changes since 1.5
-
Fixed a bug that made yGuard ignore some of the attributes in the expose section ("sourcefile" and "linenumbertable").
-
Fixed a rare but severe bug that accidentally removed method attributes and sometimes led to ArrayIndexOutOfBoundsExceptions
during the obfuscation.
yGuard 1.5 - Changes since 1.3.2
-
Added JDK 1.5 (a.k.a Java 5.0 code-named Tiger) compatibility. yGuard can now deal correctly with the
new JDK and Java features: generics, var-args, enumerations, annotations, new "
.class" bytecode construct,
signatures, local variable type table, enclosing method information.
-
Implemented the ability to obfuscate/scramble/shrink line number information. This makes it possible to more easily debug
stacktraces without exposing line number information in the obfuscated version of the application.
-
Implemented the ability to obfuscate the source file information. This is necessary in order to view line number information
in stack traces. It is now possible to reassign the source file attribute inside class files so that the original source file
name is not exposed in the obfuscated application.
-
Added the ability to determine on a per-class basis what attributes to expose or obfuscate. This includes line number
information (with optional scrambling/compression or removal), source file attributes, deprecation attributes, etc.
This makes it easy to obfuscate parts of your application while keeping the public API untouched and debug information
for third party jars intact.
-
Improved the stacktrace deobfuscation tool. It can now unscramble line number information from stacktraces, features a
more polished view of the mapping rules and deobfuscates stacktraces more reliably if the stacktraces are ambiguous.
|