特定のメソッドが呼び出されたオブジェクトへの参照を知りたい/取得したい状況に遭遇しました。
基本的に、xposed モジュールを作成しようとしています。このモジュールの機能の 1 つは、HTTP 経由でアプリがヒットしたすべての URL を見つけることです。これを達成するために、私のアプローチは次のとおりです。
私は、任意のアプリ (または少なくとも問題のアプリ) が openConnection() を呼び出して HTTP 接続を確立すると想定しています。そのため、アプリの実行時に openConnection() メソッドをフックし、メソッドが呼び出されたオブジェクトを特定してみてください。オブジェクトが取得されたら、オブジェクトのインスタンス化で渡された文字列を見つけます。この文字列オブジェクトは、アプリが HTTP 接続を確立したい URL になります。
今、Java リフレクションが上記を達成するのに役立つ方法があるかどうかを期待していました-オブジェクト参照と、後でオブジェクトがインスタンス化されたときに渡された文字列を見つけます。
例 - Android の世界から:
URL url = new URL(myurl);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
ここで、「url」が openConnection() が呼び出されたオブジェクトであることを知る方法があるかどうかを知りたいです。最終的な目標は、オブジェクトの作成中に URL に渡された文字列 'myurl' を取得できるようにすることです。
これを行う方法はありますか?
私はすでにこれを経験しました: スタックトレースまたはリフレクションを使用してメソッドの呼び出し元を見つけるにはどうすればよいですか?
しかし、私の場合、上記はあまり役に立ちませんでした。さらに、上記には、StackTraceElement を使用したとしても、オブジェクトの名前/参照を取得できないというコメントがあります。代わりに、呼び出し元のタイプを取得するだけです。そして、呼び出されただけでは、「url」文字列を見つけるという最終目標を達成できるとは思いません。私は?