java - 混淆代码不起作用

标签 java sockets networking obfuscation proguard

我有一个混淆程序的问题。我有 2 个文件:

  • 客户端.jar
  • 服务器.jar

当我使用 Proguard 缩小它们时,效果很好。但是,如果我选中“优化”,则会出现 NullPointerExceptions,如果我还选中“obfuscate”,则在必须发送对象时,我的 client.jar 中会出现 InternalError使用 writeObject() 方法发送到服务器。

请你帮我配置混淆器(我真的不知道这个工具)或者告诉我为什么会出现这些错误。提前致谢。

PS:我是法国人,如果我的解释有误,我深表歉意。

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

最佳答案

这个问题的细节很少,所以我的回答会很笼统,但我希望它能让你朝着正确的方向前进。

如果您对调用方法进行任何反射,则需要将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();
}

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

希望对您有所帮助。

关于java - 混淆代码不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9754738/

相关文章:

python - 如何知道 urllib.urlretrieve 是否成功?

sockets - 先发送 UDP 消息再发送 TCP 消息有什么好处吗?

node.js - 使用Node.js套接字代码提交的FTP命令未处理

java - 将 jpeg 从 c++ 传输到 android (java)

java - Spring oAuth2 与用户权限

postgresql - 查询以在 PostgreSQL 上使用 IP 获取子网

MySQL访问被拒绝1045错误

java - 构建和运行时初始化中的 Quarkus 原生构建类

java - 如何在.property文件中保存参数值?

java - Android > 谷歌地图 > 叠加层 : Tap different things to make different things happen