混淆的代码不起作用

时间:2012-03-17 23:34:41

标签: java sockets networking obfuscation proguard

我遇到了混淆程序的问题。我有2个文件:

  • client.jar中
  • 的server.jar

当我使用Proguard缩小它们时,它工作正常。但是,如果我检查“优化”,我有NullPointerExceptions,如果我也检查“obfuscate”,当我必须将对象发送到服务器时,我的 client.jar 中有一个InternalError使用writeObject()方法。

请您帮我配置Proguard(我真的不知道这个工具)或者告诉我为什么会出现这些错误。谢谢你的进步。

PS:我是法国人,所以如果我在解释中犯了错误,我很抱歉。

我尝试使用.bat启动我的client.jar以查看是否可以看到正在发生的事情,这是我在客户端必须将对象发送到服务器时得到的错误: enter image description here

1 个答案:

答案 0 :(得分:3)

这个问题没有什么细节,所以我的答案非常笼统,但我希望它能让你朝着正确的方向前进。

如果您对调用方法进行任何反射,则需要在配置文件中添加keep个选项。您需要keep通过反射调用的所有方法(请参阅手册中的Keep Options)。

对于序列化,有recipe in the manual应该有所帮助:

-keepclassmembers,allowobfuscation class * implements java.io.Serializable {
    static final long serialVersionUID;
    private static final java.io.ObjectStreamField[] serialPersistentFields;
    !static !transient <fields>;
    private void writeObject(java.io.ObjectOutputStream);
    private void readObject(java.io.ObjectInputStream);
    java.lang.Object writeReplace();
    java.lang.Object readResolve();
}

增量混淆选项将使客户端和服务器之间的混淆保持一致; Proguard手册see this section

希望有所帮助。