web-dev-qa-db-ja.com

DexGuardはどのようにクラスを暗号化しますか?

DexGuardの動作を確認したいのですが、無料の試用版がないようです。

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

22
Arci

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

(私はProGuardとDexGuardの開発者です。興味があれば遠慮なくご連絡ください)

59
Eric Lafortune

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

3
QianBin Piao

彼らは暗号化という用語を使用していますが、それは本当に難読化しているようです。特定の文字列/値を暗号化する可能性がありますが、暗号化キーもアプリに保存する必要があるという事実は、コードに「ロック」を提供すると同時に「キー」をパッケージ化することを意味します" それと。

1
bleuf1shi