2016-09-23 5 views
1

FrameworkレイヤのSystemServerにシステムサービスを追加しました。システムサービス間のAndroid IPCセキュリティ

interface IAService { 

    void valueChange(int value) 
} 

public class XXXService extends IAService.Stub { 

} 

私は、このサービスを他のシステムサービスだけで以下のように呼び出すことができます。

IAService service = IAService.Stub.asInterface(ServiceManager.getService("A")); 
serivce.valueChange("0"); 

しかし、誰かがServiceManagerをリフレクション方法として使用してこのサービスインスタンスを取得した場合、

IPCを試すことができます。

他のシステムサービスでのみ許可できますか?

ありがとうございました:)

答えて

1

私は、人々があらゆる種類の隠れたサービスをリフレクションで使用しているとは思わないのです。あなたの最善の策は、システムレベルのパーミッションでそれを保護することです。そのパーミッションを持たない人はあなたのメソッドを呼び出そうとすると例外がスローされます。

+0

誰かがこのIPCを試してみると違法な利益を得ることができると知っている場合、彼らは試してみます。とにかく.. :)どのように私たちは呼び出し側が呼び出し側でシステムレベルのアクセス許可を持って知っていますか? – Jin

+0

https://developer.android.com/reference/android/content/Context.html#checkCallingPermission%28java.lang.String%29 –

+0

コンテキストはParcelableオブジェクトではないため、呼び出し側は呼び出し元のコンテキストを取得できません。 – Jin

関連する問題