【问题标题】:Why do .classes files have weird-looking names in .jar file?为什么 .classes 文件在 .jar 文件中的名称看起来很奇怪?
【发布时间】:2015-10-23 17:03:49
【问题描述】:

我使用 JD-GUI 反编译了一个 .jar 文件,以及许多名称奇怪的包,例如 abcd 等等。类也是如此,因此某些.class 文件也被命名为a.classb.class 等。

我不相信开发人员以这样一种方式命名包或 Java 文件,以至于他们以后无法识别每个文件的作用。我相信这是因为其他一些技术问题。有人能说清楚这个问题吗?

【问题讨论】:

    标签: java jar decompiling jd-gui


    【解决方案1】:

    您反编译的 Jar 可能使用 ProGuard 保护:

    默认情况下,编译后的字节码仍然包含很多调试信息:源文件名、行号、字段名、方法名、参数名、变量名等。这些信息可以直接反编译字节码和逆向工程整个程序。有时,这是不可取的。 ProGuard 等混淆器可以删除调试信息并用无意义的字符序列替换所有名称,从而使代码逆向工程变得更加困难。它进一步压缩代码作为奖励。除了异常堆栈跟踪中给出的类名、方法名和行号之外,程序在功能上保持相同。

    仍然可以对程序进行逆向工程,但这样做通常是非法的,然后重用代码(至少在美国,这是我唯一有经验的国家),因为这违反了许可。使用此类工具的人几乎总是不会编写开源软件。

    【讨论】:

    • 逆向工程通常并不违法,而且针对它的 EULA 条款是否可以在不同国家强制执行存在争议。
    • @chrylis 已编辑响应
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多