0

私は Android と iOS の開発を始めたばかりなので、関連するリソースへのリンクも歓迎します。

ケースの詳細: 作成され、ssl 暗号化接続を介して送信され、破棄される変数に重要な情報を保持するアプリを構築する必要があります。この変数は、デバイス上の他のプロセスによって読み取られるべきではありません。これまでのところ、発生する可能性のある 2 つのケースを知っています。

[1]サービスまたはプログラムがフォアグラウンドアプリ(ここでは私のアプリ)を監視し、コードを挿入できる場合(たとえば、フォアグラウンドを不正なサービスにバインドする)、問題の変数コンテンツを読み取ります。OS のセーフガードが存在することは知っていますが、コードを挿入するこの能力を実証する証拠は実際に出回っていますか?

[2] サービスまたはプログラムは、ネットワーク接続を監視し、ネットワーク経由で送信されるデータをログに記録します。アプリがこのようなネットワーク データを読み取る可能性はありますか? アプリごとに交換されたデータ量をログに記録できるアプリが存在することは知っていますが、それらがシステム ログ ファイルを読み取っているのか、実際に接続を監視しているのかについてはわかりません。両方のプラットフォームについて詳細を提供していただければ幸いです。

4

1 に答える 1

1

私はアンドロイドでのみ動作するため、これはアンドロイドでのみ有効です:

いいえ、(少なくとも) 2 つの理由により、サービスはフォアグラウンド アップでコードを挿入できません。

  • インストールされた各アプリケーションは、独自のユーザー ID と各プロセスを取得し、それらのデータはユーザー ID によって保護されます。したがって、あるプロセスは別のプロセスのメモリにアクセスできません。したがって、どのプロセスも (コードを挿入することによって) メモリを変更することはできません。
  • Java バイトコードは dalvik コードに変換され、システム プロセスだけが書き込める場所に格納されます。したがって、コンパイルされた dex ファイルを変更することによって、他のプロセスがコードを挿入することはできません。

それがシステムによって提供される保護です。もちろん、ハッカーは特定のライブラリでエクスプロイトを見つける可能性があり、バッファ オーバーフローを使用してコードのスニペットを実行できる可能性がありますが、それは別の話です。また、プロセスのデータ ファイルはデフォルトで非公開になっていますが (他のプロセスはそれを見ることができません)、プロセスはコードへの読み取りアクセス権を持つことができます。つまり、秘密鍵をコードに保存することはおそらく安全ではありません。

于 2011-10-21T11:28:45.240 に答える