使用主要方法模糊类名

时间:2015-04-04 14:15:43

标签: java proguard

我使用ProGuard来混淆可执行文件.jar。当我使用Procyon反编译代码时,带有main方法的类仍然具有其原始名称。这是由于

-keepclasseswithmembers public class * {
    public static void main(java.lang.String[]);
}

在默认配置中。

如果我删除它,ProGuard不会处理。有没有办法用主要方法来混淆类名,还是有充分理由反对它?

1 个答案:

答案 0 :(得分:2)

如果使用main方法对类名进行模糊处理,则无法再调用该类来运行jar。

理论上,你可以修改jar中的MANIFEST.MF来引用混淆的类名,但是我不确定它的好处,因为你很清楚你在那时调用的是什么。

此外,您永远不会模糊main(String[])方法名称本身,或者java根本找不到并运行您的应用程序。这是反对它的一个很好的理由:)

如果你想混淆类成员的 rest ,但保留classname和main方法本身,你可以用

来做
-keep public class mypackage.MyMain {
    public static void main(java.lang.String[]);
}

根据first example in proguard manual