AndroidプロジェクトでサードパーティのAPI(パケット依存性インジェクション、生成されたライブラリ、ソースコードなど)をインポートすると、広告されたとおりに動作するとみなされます。 timesコードのほとんどはオープンソースではなく、難読化されているか、コンパイルされているだけです。Androidシステムリソースへの第三者APIのアクセスを制御しますか?
このAPIのネットワーク、連絡先、ビデオ、オーディオ、場所などの重要なシステムリソースへのアクセスを制御する方法はありますか?
システムリソースとしてproxy
を提供することをお勧めします。これは、次のような利点があります:
- テストは、プロキシで模擬データを提供することによって行うことができ
- あなたのアプリケーションは、彼らが必要でない場合はAPIが必要とするすべての権限を提供する必要はないとプロキシが可能になりますAPIは、広告や悪意に使用
- フィルター可能なデータは、ユーザーに関するローカルに収集され、APIのホームレポに送信された付与された権限をエミュレートすることであるため許可を壊さないために
私はどのようにそのようなを見つけることができませんでしたソルティユーザーの定義されたアクティビティーとサービスがサードパーティーAPIのサービスを制御できないため、またはAndroidパブリック・インターフェースへの直接呼び出しを防ぐことさえできないため、実装することができます。
このコントロールを自分のアプリの境界の外に置いておきたくないので、ソリューションにはルートアクセスは必要ありません。
この質問の内容はこの広範な質問(log data of content providers、network requests - それのための答えを研究しながら、私はこの問題を考えるようになった)のいくつかの質問アドレス特殊性にリンクされている
注: (例えば、ネイティブレベルのハックがこの問題を解決する可能性があります - idk)
権限を持たない別のサンドボックスプロセスでこのコードを実行できます。しかし、通常、そのコードは特定のアクセス権を持つことが予想されるため、そのコードはおそらくクラッシュします。ライブラリが依存性注入をサポートしていれば、おそらくテスト用のモックに目を向けると、保護されたAPIへの管理されたアクセスのために、サンドボックスプロセスのIPCを使用する「モック」を自分のものに戻す手段を組み立てることができるかもしれません。しかし、それをサポートするライブラリはほとんどありません。 – CommonsWare
@CommonsWareはこれをテストする良い方法ですが、悪意のある意図があってもテスト中であることを検出できるマルウェアもあります。しかし、新しいフレームワークを構築していなくてもAPIを使用する予定がない場合は、まだ問題は残っています –