Skip to content

Roadmap #3

Description

@andreblanke
  • 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?)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions