You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Add command line options to include or exclude certain packages
Obfuscation of library bytecode is unnecessary if the library is itself open source
Correct MethodType for emulations of invokevirtual, invokeinterface, and invokespecial on the native side
The implicit this is added as part of the transformation to invokedynamic but must be dropped again on the
native side if we are dealing with any of the three instruction types
MethodType.dropParameterTypes(1, 0) should be usable to achieve this
No longer ignore invokespecial when obfuscating
The instruction is also used to invoke private members and is not limited to the invocation of constructors
Obfuscate field accesses by generating synthetic getters and setters which are also obfuscated
Run field obfuscation before adding a bootstrap method for both InputType.CLASS and InputType.JAR
No longer assume that all non-virtual fields belong to the current class: add another parameter to pass instance if field belongs to a different class
Change FieldAccessorIdentifier.getName to compute return value only once; otherwise native code and bytecode will have a method name mismatch due to the randomness
Improve FieldAccessorIdentifier overall. The current implementation is confusing
Exclude putfield/putstatic field instruction obfuscation of final fields within <init>/static final fields within <clinit>
Figure out why a duplicate <clinit> is generated when obfuscating InDyObfuscator.class
Check if Files.copy(arguments.getInput(), arguments.getOutput(), StandardCopyOptions.REPLACE_EXISTING) can be used as-is without additional checks (what if input and output are the same files?)
MethodTypefor emulations ofinvokevirtual,invokeinterface, andinvokespecialon the native sidethisis added as part of the transformation toinvokedynamicbut must be dropped again on thenative side if we are dealing with any of the three instruction types
MethodType.dropParameterTypes(1, 0)should be usable to achieve thisinvokespecialwhen obfuscatingInputType.CLASSandInputType.JARFieldAccessorIdentifier.getNameto compute return value only once; otherwise native code and bytecode will have a method name mismatch due to the randomnessFieldAccessorIdentifieroverall. The current implementation is confusingputfield/putstaticfield instruction obfuscation offinalfields within<init>/static finalfields within<clinit><clinit>is generated when obfuscatingInDyObfuscator.classFiles.copy(arguments.getInput(), arguments.getOutput(), StandardCopyOptions.REPLACE_EXISTING)can be used as-is without additional checks (what if input and output are the same files?)