web-dev-qa-db-ja.com

proguardは静的な文字列定数を難読化するように機能しますか?

静的文字列定数を難読化する作業を保護しますか?

39
Code Droid

ProGuardは [〜#〜] faq [〜#〜] で説明されているように、文字列定数を難読化しません。 Android向けの最新のクローズドソースの兄弟である DexGuard は、文字列暗号化やクラス暗号化などの追加のアプリケーション保護技術を提供します。

(私はProGuardとDexGuardの開発者です)

66
Eric Lafortune

いいえ、ProGuardは文字列定数を暗号化しません( Proguard FAQ Link

しかし、それを支援する商用製品がいくつかあります。 Stringer Java Obfuscator をお勧めします。これは呼び出しコンテキストと整合性制御機能をチェックするを備えているため、リバースエンジニアリングが可能な限り困難になります。私見ストリンガーは、今日の市場でJavaおよびAndroid.

Allatori Java Obfuscator も参照してください。

N.B.私はLicel LLCのCEOです。 Stringerの開発者Java Obfuscator。

11
Ivan Kinash

ProGuard does(正しく構成されている場合)は、インライン文字列定数です。それらを難読化しても意味がありません。考えてみましょう。文字列定数を使用してユーザーへのメッセージを表すことができます。

8
Óscar López

マニュアルの難読化オプションの私の読書に基づいて、答えはいいえです。

文字列リテラルの難読化は理論的には可能ですが、クラスファイルから読み取られるときに文字列リテラルを難読化解除する特別なクラスローダーを使用する必要があります。これには注意が必要です。それに加えて、Javaデバッガーをアタッチしてアプリケーションを実行することで、元の文字列を簡単に復元できるため、それほど多くは実現しません。

3
Stephen C