2012-11-06 30 views
17

DexGuardの動作を確認したいのですが、無料試用版がないようです。DexGuardはどのようにクラスを暗号化しますか?

DexGuardはAndroidアプリケーションを暗号化できますか?それとも単にコードを難読化するのですか? DexGuardの暗号化はどのように機能しますか?デコンパイルの前後でDexGuardで実行されるサンプルアプリケーションからコードを提供することができれば、それは素晴らしいことでしょう。

答えて

50

ProGuardは、名前の難読化を提供します。クラス、メソッド、およびフィールドの元の名前を短い無意味な名前で置き換えることができます。 DexGuardは、さらに文字列の暗号化とクラス暗号化を提供します。基本的に攻撃的な難読化タイプであるため、この文脈では暗号化という用語が混乱する可能性があります。指定された文字列とクラスは、意図的に複雑な暗号化された形式で格納され、実行時にアプリケーションで必ず利用可能なキーとアルゴリズムで復号化されます。同様に、Google Playマーケットでは、Android 4.1用のアプリケーション全体を暗号化できます。次に、実行時環境は、アプリケーションが実行される前に、制御された方法でアプリケーションを復号化します。

(私はProGuardのとDexGuardのデベロッパー - もし興味があれば連絡を取ること自由に感じ)

+0

こんにちは!お返事をありがとうございます!はい、私はDexGuardの暗号化の定義と混同しています。基本的には、私の理解では、暗号化は秘密鍵を使用してデータを変換するというものです。ただし、Androidアプリケーションが暗号化されている場合、Dalvikは暗号化されたアプリケーションを理解することができません.Dalvikにはアプリケーションの暗号解除ツールが含まれていないからです。当然のことながら、デクリプタがアプリケーション内にキーとともに添付されていない限り。このようにして、クラスはDalvikによって実行される前にアプリケーション自体によって解読されます。それはDexGuardの仕組みですか? – Arci

+0

DexGuardをGoogle PlayのAndroid 4.1用のencyptionとともに使用できますか?また、DexGuardとProguardを併用することをお勧めしますか?私はProguardのページでDexGuardがクラスを事前に検証していないことに気付きました。 DexGuardを使用する場合、どのようにクラスを強化することができますか?ありがとうございました! :D – Arci

+2

正しい。はい、外部から処理されたアプリケーションは、他のアプリケーションと同じように見えます。 Google Playでも暗号化できます。 DexGuardはProGuardの機能をすでに提供しているので、ProGuardとDexGuardを組み合わせる必要はありません。事前確認はJava Micro EditionとJava 6でのみ必要で、Androidでは必要ありません。 –

1

彼らは長期的な暗号化を使用していますが、それは本当に難読化されているようです。私はこれを単に言いますが、特定の文字列や値を暗号化することは可能ですが...暗号鍵もアプリケーションに格納しなければならないということは、コードに「ロック」を与えていると同時に、 " それと。

+3

エリックは、上記の答えで正確に述べています... – Dori

2

"DES" Algを使用して指定されたクラスを暗号化する古いバージョンのDexGuard。その後、 "AES" algを変更します。 暗号化後指定されたクラスでは、暗号化データを解読メソッドでデータ配列形式で別のクラスに格納します。 Dexの静的ブロックである解読方法は、制御フロー難読化とAPI隠蔽を使用して難読化されたクリチットフォーマット方式です。ですから、解読方法のデオフファウス処理は少しです。他のクラスでは、指定されたクラス変更をリフレクションオペコードに参照します。 APKが実行されるたびに、暗号化されたクラスは静的メソッドで最初に復号化されます。また、解読されたクラスはリフレクションAPIを使用してdvmメモリにロードされます。他のクラスは指定されたクラスを適切に参照できます。それでおしまい。私の意見では、DexGuardは非常に強力な難読化ツールです。各機能の難読化をAPKに適用すると、実際のプログラム全体を逆にするのに多くの時間がかかります。

関連する問題