在混淆的Android 程式碼中隱藏秘密
使用ProGuard 等工具混淆Android 程式碼時,經常會發現敏感字串在反反後仍然可見。為了解決這個問題,這裡有一些隱藏字串不被窺探的策略:
編碼和加密
ProGuard 不提供隱藏字串的機制。相反,請考慮實施您自己的編碼或加密方法。對於基本的模糊性,使用 Base64 等方法進行編碼就足夠了。為了獲得更嚴格的保護,請透過 javax.crypto.Cipher 等類別使用 AES 等對稱密碼來加密字串。
請記住,加密字串需要將加密金鑰儲存在應用程式中,這可能會損害安全性。
範例:
之前:
<code class="java">public class Foo { private String mySecret = "http://example.com"; }</code>
之後:
<code class="java">public class Foo { private String encrypted = "<manually created encrypted string>"; private String key = "<key used for encryption"; private String mySecret = MyDecryptUtil.decrypt(encrypted, key); }</code>
之後:
R 類字串您提到的R 類字串(例如2130903058)是對資源ID 的引用。它們不是隨機數,而是指向佈局文件等資源。在混淆過程中,對資源的引用將替換為這些 ID,以減少程式碼大小。 反編譯程式碼時,R 類別可能不存在,因為其內部結構已被混淆器破壞。但是,ID 仍然代表原始資源參考。
第三方 DRM考慮使用專用的數位版權管理 (DRM) 解決方案,而不是實施自己的保護措施。 Google 為 Android 提供了比自訂解決方案更安全的授權服務。以上是反編譯後如何有效隱藏混淆後的Android程式碼中的敏感字串?的詳細內容。更多資訊請關注PHP中文網其他相關文章!