アンドロイドのインジェクションとフックの違いは?

Androidのスタビングとフックは、Androidアプリケーションでコードの実行を変更またはインターセプトするために使用される2つの異なる技術です。

インストゥルメンテーション(Instrumentation)は、コンパイル時または実行時に既存のコードに変更を加える技術です。コード内に追加の命令やコードの断片を挿入することで、対象のコードの変更を実現します。インストゥルメンテーションの技術は通常、コード挿入、パフォーマンス分析、コードカバレッジ検出などの機能の実現に使用されます。Android では、インストゥルメンテーションの技術を使用してアプリケーションのバイトコードを変更することで、アプリケーションの実行時にその動作を変更するという目的を達成することができます。

フックとは、実行時にコードの実行を改変またはインターセプトするテクニックです。メソッドの呼び出し関係の変更や関数ポインタの書き換えによって、対象コードを制御します。フック手法は一般的に、コードパッチ、関数リダイレクト、動作追跡などの機能の実現に使用されます。Android ではフック手法を使用して、アプリのランタイム動作を改変できます。例えば、メソッドパラメータを変更したり、メソッドの戻り値を変更したり、メソッドの実行をインターセプトしたりします。

つまり、スタブはコンパイル時または実行時にコードを修正する技術であるのに対し、フックは実行時にコードの実行を修正する技術です。スタブはコードの変更と強化に重点を置き、フックはコード実行プロセスの制御と干渉に重点を置いています。

bannerAds