私はAndroidのアーキテクチャを見ていて、複数のアプリケーション(サードパーティ)がローカルAndroidサービスを呼び出すことを可能にするサービスを考え出しますこれをパーティション化されたDropboxサービスと考えてください。各アプリがファイルを保存し、ユーザーがアプリ間でデータを共有するように設定した場合(例:app1とapp2の間の写真)、それは許可されます。
呼び出し元のアプリケーションを安全に検証して、ストアにアクセスできる唯一のAPIになるAPIを知っていますか?
呼び出し元のEXEを特定し、そのハッシュを確認することを考えていますが、アプリが更新されている場合は機能しません。
各アプリは同じ鍵で署名されている可能性があるため、これを一意のアプリ識別定数として使用できます。
私の主な懸念は、アプリ#1へのバイナリアクセスを取得し、キーまたは識別子を抽出し、それを使用して私のAndroid Service。
代替ソリューションは大歓迎です
したがって、これは本当に難しい問題であり、私はあなたが望むものを達成するためのAPIがそこにあるとは信じていません。
良い考えのように思えますが、カスタム権限はAndroidManifest.xmlで定義されています。これをチェックアウト SO回答 それらを定義/使用する方法についてですが、次のようになります。
<permission
Android:name="com.testpackage.mypermission"
Android:label="my_permission"
Android:protectionLevel="dangerous">
</permission>
権限を使用するには、他のすべてのアプリケーションが行う必要があることは、独自のAndroidManifest.xmlに以下を配置することです:
<uses-permission Android:name="com.testpackage.mypermission"/>
Android APKs are trivial to reverse engineer to get the most basic information for an application; this will take your your恐れの誰かがAPKへのアクセスを取得します。ルート権限を取得したスマートフォンは、自分のスマートフォンからAPKをプルできます。
XMLの行だけでなく、カスタムのアクセス許可を使用することの方が多いと思います。しかし、誰かがそもそもトラブルを経験しているのなら、彼らはそれを理解することができます。
これは難しい問題です。ある時点で、core appで使用されるアプリケーションを信頼するかどうかをユーザーに確認する必要があるためです。ユーザーがアプリを信頼していることを確認した場合は、おそらくアプリケーションの署名を記録します。 実行時に見つかります とすることができます。署名が記録した内容と異なる場合、それはユーザーが信頼したアプリケーションではありません。
これがおそらく最も簡単な解決策です。署名自体の検証は META-INF/CERT.RSA
には署名と公開鍵が含まれています 署名を検証します。私は SOに関するこの投稿 がこれをどのように行うことができるかを示していると思います。
繰り返しますが、コアアプリケーションを通じてアプリケーションの信頼を確認することは、依然としてユーザーに依存しています。これがあなたに受け入れられるかどうかはわかりません。