2013-03-25 69 views
1

我在交付之前对混淆了我的Java代码(目前正在使用ProGuard)。Java混淆:删除异常消息

当我“反编译”混淆的字节码时,显然所有的字符串都没有被混淆。对于例外消息也是如此。这些异常消息为读者提供了大量的信息来理解代码。像:

if(a == null){ 
    throw new IllegalArgumentException("SuperSecretObject cannot be null"); 
} 

是否有可能使用ProGuard或其他工具编译时删除所有异常消息字符串?

否则,你能推荐其他方法来隐藏功能上不必要的字符串吗?

+0

通过更改代码行为来删除异常消息。 – gontard 2013-03-25 08:43:06

+2

您可以将异常消息移动到代码之外的文件中,但即使如此,也可以始终引用这些消息。 – 2013-03-25 08:44:08

+0

@Sudhanshu好主意:我可以使用一个属性,当没有找到密钥时返回“”。这些属性只会在应该有异常消息的测试安装中填充。 – Philipp 2013-03-25 08:47:03

回答

1

例如,你可以使用

throw new IllegalArgumentException(SuperSecretObject.class.getName() + " cannot be null"); 

然后混淆器也可以使用混淆一个替代类名。