2013-03-25 91 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"); 

然後混淆器也可以使用混淆一個替代類名。