難読化された 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 中国語 Web サイトの他の関連記事を参照してください。