アプリのコンテンツが安全であることを確認したいと思います。アプリ内に暗号化されたデータベースのパスワードがあり、リバースエンジニアリングではアクセスできないプロジェクト内の安全な場所があるかどうかを確認したいだけです。
そして、リバースエンジニアリングがどのように機能するかを簡単に説明できれば素晴らしいと思います。ThanQ。
そして、plzはProGuardへのリンクを投稿しません!
アプリのコンテンツが安全であることを確認したいと思います。アプリ内に暗号化されたデータベースのパスワードがあり、リバースエンジニアリングではアクセスできないプロジェクト内の安全な場所があるかどうかを確認したいだけです。
そして、リバースエンジニアリングがどのように機能するかを簡単に説明できれば素晴らしいと思います。ThanQ。
そして、plzはProGuardへのリンクを投稿しません!
ハードコードされた値は、アプリをリバースエンジニアリングすることで表示できます。
これには、パスワード、URLなどが含まれます。
Androidアプリをリバースエンジニアリングするには、次の手順に進みます。
1-アプリのAPKファイルの名前をZIPに変更します(例:myapp.apk-> myapp.zip)
2- zipファイルを開き、classes.dexファイルを取得します。
3- dex2jarを使用して、classes.dexからjarファイルを取得します
4- jd-guiを使用してjarファイルを開き、元のコードを表示します。
はあわ、
パスワードを静的な文字列としてアプリに保存している場合、それは安全ではありません。ProGuardを使用している場合でも、簡単にアクセスできます。それを保護するための最良の方法は、それをまったく保管しないことです。代わりに、可能であれば、アプリにユーザーを検証するサーバーに何らかの一意の識別子を送信させ(おそらくLVLを使用)、サーバーはDBパスワードまたは実際のDBデータ自体(サーバーに保存されている)を返します。
これが不可能な場合、または独自のサーバーにアクセスできない場合は、少なくとも文字列をXOR化された文字列として保存するか、それ以上の方法で文字列を難読化するか、文字列を難読化する独自の関数を考え出します。 。Javaコードに次のような行を入れないでくださいpassword = "mypass";
リバースエンジニアリングの場合:.apkファイルの名前を.apkから.zipファイルに変更し、次にzipファイルを抽象化してフォルダーを見つけます。
しかし、プロジェクトの.classファイルを見つけることができません
リバースエンジニアリングとは、アプリケーションの動作の側面を注意深く分析することにより、知的財産を再現することです。セキュリティの問題に関しては、ソーシャルエンジニアリングはあなたにとってもっと心配すべきだと思います
他の人がリバースエンジニアリングについて説明しているので、データベースを暗号化する方法を説明します。
ユーザーの資格情報(ユーザー名とパスワードまたはPIN)をキーとして使用してデータベースを暗号化する必要があります。ユーザーがアプリケーションを起動すると、資格情報の入力を求められます。キーはハードコーディングしないでください。
これにより、攻撃者が資格情報を持たずにユーザーのデータにアクセスするのを防ぐことができます。
ユーザーを含むすべてのユーザーからデータを非表示にしようとしているが、アプリケーションがデータにアクセスできるようにしている場合は、データをサーバーに保存し、ユーザーに表示するデータのみを要求する必要があります。