これは少し奇妙な質問のように思えるかもしれません。用語が正しいことを願っています...
.Net アプリの MSIL を調べて、どのアセンブリまたは他の外部 .DLL が呼び出されているかを判断する方法はありますか? その場合、それらの外部アセンブリまたは DLL に対してどのような関数呼び出しが行われたかを確認できますか?
私が尋ねる理由はそうです:
私がこれまで行ってきた .Net モバイル開発のほんの少しの経験からすると、プログラマーはアプリケーションが必要とする機能を明示的に記述しなければならないことがよくあるようです。たとえば、ある人が、加速度計へのアクセスを必要とする Windows Phone プラットフォーム用の .Net アプリを作成しているとします。その人は、アプリが加速度計を使用する必要があることを明示的に述べる必要があります。元のソース コードのインクルード ステートメントを分析することで、このプロセス全体を自動化できる可能性があるようです。たとえば、ソース コードに "using Microsoft.Devices.Sensors" という行がある場合、そのアプリでは加速度計、コンパス、または光センサーを使用する必要がある可能性が高くなります。アプリの要件のリストは、プログラマーの指定に依存するのではなく、ソース コードの include ステートメントに基づいて生成できます。そう、アプリの説明では、「このアプリはこのデバイスのセンサーにアクセスする必要があります」と言うことができます。これを行う際の問題は、明らかにソース コードがアプリ ストアに送信されないことです。
私が行った Windows 8 開発のごく一部から、Windows 8 (または Windows Marketplace) 用のメトロ スタイル アプリは、外部 DLL や他の特定のシステム コールの呼び出しが禁止されていることに気付きました。これは、アプリが生成されるコンパイル/ビルド時に適用されます。追加のセキュリティ対策として、MSIL を調べてどの外部アセンブリ/DLL が呼び出されているかを判断するという同じ種類の手法を追加のセキュリティ対策として使用して、サンドボックス化されていない可能性のあるアプリが最終的にアプリ ストアに出ないようにすることができます。
これはまだ行われていないので、おそらく不可能だと思いますが、聞いてみて損はないと思います。実際にはそれらを使用しない特定のアプリにすべての機能を要求することを決定したずさんなプログラマーに頼るのではなく、アプリが実際にアクセスする必要があるものを決定するための非常に巧妙な方法のように思えます.