ホームページ  >  記事  >  Java  >  難読化されたコード内の機密文字列を効果的に隠すにはどうすればよいですか?

難読化されたコード内の機密文字列を効果的に隠すにはどうすればよいですか?

DDD
DDDオリジナル
2024-10-31 22:28:28209ブラウズ

 How can I effectively hide sensitive strings in obfuscated code?

難読化されたコード内の隠された文字列を明らかにする

ProGuard などの難読化ツールは、表示されている文字列を難読化することでコードのセキュリティを強化できますが、機密情報には十分ではない可能性があります。 URL やライセンス データなど。

機密文字列の非表示

機密文字列を効果的に非表示にするには、次の手法を検討してください。

  • エンコーディング: Base64 などのメソッドを使用して文字列をエンコードし、スクランブルされたように表示します。
  • 暗号化: AES などのアルゴリズムを使用して文字列を暗号化し、暗号化キーなしでは理解できないようにします。

これらの手法を実装するには、次のことができます。

  1. 既知のキーを使用して文字列を手動で暗号化します。
  2. 文字列の復号化されたバージョンを使用するようにコードを調整します。例:
<code class="java">// Before encryption
public class Foo {
    private String mySecret = "http://example.com";
}

// After encryption
public class Foo {
    private String encrypted = "<encrypted string>";
    private String key = "<encryption key>";
    private String mySecret = MyDecryptUtil.decrypt(encrypted, key);
}</code>

R クラスの検索

逆コンパイル中、R クラスは難読化のため、必ずしも容易に表示できるわけではありません。ただし、ProGuard マッピング ファイルは、その場所に関する洞察を提供します。

  • マッピング ファイルで「classes」セクションを見つけます。
  • 「R.java」を検索して元のファイルを見つけます。 R クラスのパス。
  • 逆コンパイルされたコード ディレクトリ内のそのパスに移動して、R クラスにアクセスします。

R クラス番号について

逆コンパイルされたコード内の「2130903058」のような数字はリソース ID を表します。これらの番号は、レイアウト ファイルなど、プロジェクト内のリソースを参照します。

対応するリソースを見つけるには:

  • マッピング ファイルから R.java ファイルを逆コンパイルします。
  • 逆コンパイルされた R.java ファイルでリソース ID を検索します。
  • 対応するリソース (例: レイアウト ファイル) が検索結果で指定されます。

以上が難読化されたコード内の機密文字列を効果的に隠すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。