2013-07-30 60 views
0

有時我們需要在代碼中存儲一些我們想要保護的字符串,例如Google Play中的App ID,第三方API密鑰,用於創建散列表的祕密種子等。在優化代碼時,Proguard能否消除混淆字符串?

要保護此字符串有時候開發者用XOR操作或其他技術來混淆它們(即:XOR operation with two strings in java)。

如果我們在發佈代碼之前運行Proguard,因爲它執行了相當複雜的代碼優化,我猜它可以解析最終的String,最後在發佈的apk中發送String un-obfuscated。這是真的?

這將是有趣的,而不是混淆代碼Proguard的將取消手動模糊混淆的數據...

你怎麼人的目標呢?你在proguard.cfg中排除了帶有模糊字符串的類嗎?

+0

無論你對代碼中的字符串做什麼,它最終都不會在內存中被轉換爲純文本併發送給明文中任何需要它的函數?檢查應用程序內存的任何人都可以查看此內容。只是一個想法。 – Gray

回答

1

我已經嘗試過使用諸如Base64或XOR之類的簡單技術進行字符串混淆處理。根據我的經驗,即使啓用了優化,Proguard也無法對手動模糊處理的數據進行反混淆處理。

您可以嘗試在使用諸如APKtool,Dex2jar等工具啓用Proguard導出項目之後反編譯自己的源代碼。然後,您應該看看該字符串是否已解除混淆。