2

私はリバースエンジニアリングの経験があり、Androidで静かにデータベースにアクセスする人々がいます。作成時にデータベースのみを暗号化して(apk全体を難読化するのではなく)、実行時にデータベースを使用する方法があるかどうかを知りたいです。

私はデータベースに関する知識が少ないので、アセットフォルダー内のDBを保護するための提案は恩恵のようになります。

4

4 に答える 4

5

きっとあなたはそれをすることができます。SQL暗号を使用します。

使用中は、従来のを使用する代わりに、をandroid.database.sqlite.SQLiteDatabase使用してinfo.guardianproject.database.sqlcipher.SQLiteDatabaseください。詳細については、この質問を参照してください。

于 2012-03-05T08:09:49.890 に答える
1

アプリに含まれる情報を保護することはできません。それは不可能だ。

  1. 攻撃者はすべてのコードを元に戻すことができます。

  2. 攻撃者は、すべてのコードの難読化を解除できます。

  3. プリロードされ、暗号化されたDBファイルは、アプリに保存されているキーを使用して復号化できます。

特にこのようなコードでは:

String dbPath = this.getDatabasePath("Encrypted.db").getPath();

        SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(dbPath,
                **DATABASEKEY**, null);

SQLCipherは、攻撃者からユーザーデータを保護することを目的としたものではありませんが、他のアプリからユーザーデータを保護するために存在します。

あなたの努力は攻撃者をわずかに遅くします。

アプリで機密データを保存したい場合は、アプリやデータディレクトリに保存しないでください。サーバーと通信するようにアプリを設計しますが、それは考慮すべき他のすべての混乱をもたらします(Webアプリのセキュリティ)。

于 2015-03-10T12:56:58.433 に答える
0

テーブル全体ではなく、テーブルに格納している文字列を暗号化する方が現実的かもしれません。たとえば、パスワードを直接保存する代わりに、パスワードのハッシュを保存します。

于 2012-03-05T08:06:10.943 に答える
0

Proguardを見ましたか?

ProGuardツールは、未使用のコードを削除し、意味的にあいまいな名前のクラス、フィールド、およびメソッドの名前を変更することにより、コードを縮小、最適化、および難読化します。その結果、サイズの小さい.apkファイルが作成され、リバースエンジニアリングがより困難になります。ProGuardを使用すると、アプリケーションのリバースエンジニアリングが困難になるためです。

プロガードに関する詳細情報。

于 2012-03-05T08:09:22.613 に答える