如何使用proguard混淆除公共方法名称和属性以外的所有内容?

保罗·K

我正在构建一个android框架,我需要混淆并缩小jar才能将其发送给用户。

我正在使用android SDK中包含的proguard工具,对输出jar的要求如下:

  • 保留输入jar中包含的所有类,但对其进行混淆。
  • 不要混淆`AndroidManifest.xml中调用的类的类名
  • 不要混淆所使用的类的类名称和公共方法名称/属性,该类具有用户接口,但是请为其内容使用。

为此,我使用以下配置:

-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose

-keep, allowobfuscation class com.company.*
-keepclassmembers, allowobfuscation class * {
    *;
}


-keepnames class com.company.MyClass { *; }
-keepclassmembernames class com.company.MyClass {
    public <methods>;
    public <fields>;
    #!private *; also tried this but it didn't work
}

但是,即使内容被混淆,我的私有类名称和属性仍然具有相同的名称。我是否遗漏了通配符中的某些内容?

奥利维尔·格雷戈尔(OlivierGrégoire)

玩了一段时间后,我发现以下内容有效

-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose

-keep, allowobfuscation class com.company.*
-keepclassmembers, allowobfuscation class * {
    *;
}

-keepnames class com.company.MyClass
-keepclassmembernames class com.company.MyClass {
    public <methods>;
    public <fields>;
    #!private *; also tried this but it didn't work
}

配置中的错误是{ *; }-keepnames选项末尾存在

我使用了以下课程:

package com.company;

public class MyClass {
  public static void main(String[] args) {
    int longVariableName = publicStaticMethod();
    String abcxyz = privateStaticMethod("abc", "xyz");
    System.out.println("longVariableName: " + longVariableName);
    System.out.println("abcxyz: " + abcxyz);
  }

  public static int publicStaticMethod() {
    return 9000;
  }

  private static String privateStaticMethod(String first, String second) {
    return first + second;
  }
}

反编译的结果类是这样的:

package com.company;

import java.io.PrintStream;

public class MyClass {
  public static void main(String[] paramArrayOfString) {
    paramArrayOfString = publicStaticMethod();
    String str = a("abc", "xyz");
    System.out.println("longVariableName: " + paramArrayOfString);
    System.out.println("abcxyz: " + str);
  }

  public static int publicStaticMethod() {
    return 9000;
  }

  private static String a(String paramString1, String paramString2) {
    return paramString1 + paramString2;
  }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何获取脚本中使用的所有变量和方法名称

来自分类Dev

带有proguard的Kotlin AAR库:如何仅保留类和方法名称?

来自分类Dev

如何使用Groovy获取没有继承方法的类的所有方法名称?

来自分类Dev

如何使用Groovy获取没有继承方法的类的所有方法名称?

来自分类Dev

RegEx获取除字母,空格,'和-以外的所有内容

来自分类Dev

如何保护包私有和/或公共类免受 ProGuard 的混淆?

来自分类Dev

尽管“保留名称”,proguard仍不会停止混淆方法名称

来自分类Dev

EXISTS如何返回除所有行或无行以外的内容?

来自分类Dev

我如何匹配除匹配值以外的所有内容?

来自分类Dev

正则表达式可以匹配除图像名称和扩展名以外的所有内容

来自分类Dev

如何使用Regex选择除捕获组以外的所有内容?

来自分类Dev

如何使用-e's ///'除特定模式以外的所有内容?

来自分类Dev

从python目录中获取所有模块名称,类名称和方法名称

来自分类Dev

如何使用RegEx删除[[和]]中内容以外的所有内容?

来自分类Dev

如何使用lftp删除除cgi-bin和.ftpquota以外的所有文件

来自分类Dev

如何使用RegExp从文本中删除除ä,ö和ü以外的所有非单词字符

来自分类Dev

如何使用范围选择口才ORM中除(A和B)以外的所有行?

来自分类Dev

如何对除索引页面以外的所有页面使用Ember

来自分类Dev

如何使用for循环更改方法名称

来自分类Dev

使用preg_replace删除除引号之间的内容以外的所有内容

来自分类Dev

选择除单个div内容以外的所有内容

来自分类Dev

替换字符串中除字母和空格以外的所有内容

来自分类Dev

GIT:忽略除子子目录和某些文件以外的所有内容

来自分类Dev

替换令牌中除字母字符和句号以外的所有内容

来自分类Dev

.htaccess重写除图像,脚本和样式表以外的所有内容

来自分类Dev

有没有一种方法可以从字符串中删除除字符,数字和“-”以外的所有内容

来自分类Dev

获取所有服务合同方法名称

来自分类Dev

获取所有服务合同方法名称

来自分类Dev

将方法的可见性限制为除相应布局以外的所有内容

Related 相关文章

  1. 1

    如何获取脚本中使用的所有变量和方法名称

  2. 2

    带有proguard的Kotlin AAR库:如何仅保留类和方法名称?

  3. 3

    如何使用Groovy获取没有继承方法的类的所有方法名称?

  4. 4

    如何使用Groovy获取没有继承方法的类的所有方法名称?

  5. 5

    RegEx获取除字母,空格,'和-以外的所有内容

  6. 6

    如何保护包私有和/或公共类免受 ProGuard 的混淆?

  7. 7

    尽管“保留名称”,proguard仍不会停止混淆方法名称

  8. 8

    EXISTS如何返回除所有行或无行以外的内容?

  9. 9

    我如何匹配除匹配值以外的所有内容?

  10. 10

    正则表达式可以匹配除图像名称和扩展名以外的所有内容

  11. 11

    如何使用Regex选择除捕获组以外的所有内容?

  12. 12

    如何使用-e's ///'除特定模式以外的所有内容?

  13. 13

    从python目录中获取所有模块名称,类名称和方法名称

  14. 14

    如何使用RegEx删除[[和]]中内容以外的所有内容?

  15. 15

    如何使用lftp删除除cgi-bin和.ftpquota以外的所有文件

  16. 16

    如何使用RegExp从文本中删除除ä,ö和ü以外的所有非单词字符

  17. 17

    如何使用范围选择口才ORM中除(A和B)以外的所有行?

  18. 18

    如何对除索引页面以外的所有页面使用Ember

  19. 19

    如何使用for循环更改方法名称

  20. 20

    使用preg_replace删除除引号之间的内容以外的所有内容

  21. 21

    选择除单个div内容以外的所有内容

  22. 22

    替换字符串中除字母和空格以外的所有内容

  23. 23

    GIT:忽略除子子目录和某些文件以外的所有内容

  24. 24

    替换令牌中除字母字符和句号以外的所有内容

  25. 25

    .htaccess重写除图像,脚本和样式表以外的所有内容

  26. 26

    有没有一种方法可以从字符串中删除除字符,数字和“-”以外的所有内容

  27. 27

    获取所有服务合同方法名称

  28. 28

    获取所有服务合同方法名称

  29. 29

    将方法的可见性限制为除相应布局以外的所有内容

热门标签

归档