2017-03-22 3 views

答えて

0

短い答え

だろう

フックメソッドを呼び出す必要があります 長文回答

コードの他の部分から引っ掛けたメソッドを呼び出す(呼び出す)と仮定します。

まず、関数を呼び出すMemberObjectにアクセスする必要があります。あなたのbeforeHookedMethod()またはafterHookedMethod()

  1. あなたがタイプXC_MethodHook.MethodHookParam
  2. のオブジェクトを受け取り、このオブジェクトは、タイプObjectのフィールドタイプMembermethodthisObjectを持っています。これらの変数は後で保存します。
  3. 後でインターフェイスで、関数を呼び出す場合は、単に上記のメンバーをMethodとしてキャストし、thisObjectをパラメータとしてMethod.invoke()を呼び出します。

コード例 -

//To save the returned Member and Object 
public static Method myMember; 
public static Object myObject; 
. 
. 
. 
//In your hook 
protected Object beforeHookedMethod(MethodHookParam methodHookParam){ 
//Cast to method and save for later 
    myMember = (Method) methodHookParam.method; 
    myObject = methodHookParam.thisObject; 
} 
. 
. 
. 
//Later, in your interface, to call the function 
myMember.invoke(myObject) 

- あなたが関数呼び出しに引数を渡す必要がある場合、あなたは1で得たMethodHookParamオブジェクトもargs分野のものがあります。

簡単 - 関数が静的である場合は、呼び出したい関数が

静的である場合、あなたはコールバックを待つ必要はありません。 (例えばfindAndHookMethod()など)あなたがフックすると呼ばれる

  1. 機能は、パラメータとしてタイプXC_MethodHook.Unhookのオブジェクトを返す 。戻ってMember
  2. タイプの オブジェクトだけMethodとして、このメンバーをキャストし、関数が静的であるため、 Method.invoke(null)が(オブジェクトがnullの場合も呼ぶ、そのオブジェクトにgetHookedMethod()を呼び出す
  3. 。)

- あなたはまだその方法にフックされている場合は、この関数を呼び出すときにも、あなたのbeforeHookedMethod()afterHookedMethod()はまだ呼び出されます。これらを呼びたくない場合は、上記のMethod.invoke()の代わりにXposedBridge.invokeOriginalMethod()を使用してください。

関連する問題