3

我正在使用 Xposed 做一些方法挂钩(现在,只是为了学习)。我已经设法挂钩方法 SendTextMessage (android.telephony.SmsManager),我可以在调用之前和调用方法之后做一些事情,所以我的问题是,我可以在之前做一些事情会导致原始方法不被调用?

谢谢,

4

3 回答 3

8

在“之前”钩子中的某处使用它来防止调用原始方法

param.setResult(null);

(在“之后”挂钩中,它只会更改原始方法的结果,因为它尚未执行)

于 2014-11-25T05:42:43.547 回答
2

您可以使用XC_MethodReplacement而不是XC_MethodHook替换呼叫。

于 2014-12-02T06:45:01.953 回答
-1

源码中有注释说阻止方法调用的方法是调用 MethodHookParam#setThrowable(Throwable) 来阻止函数被调用。所以将参数传递给 beforeHookedMethod 并调用 param.setThrowable(Throwable t)

请注意,Throwable 只是 Java 中所有错误和异常的超类,因此您应该能够使用 Exception 或 Error 作为 Throwable。

https://github.com/rovo89/XposedBridge/blob/13c9918eb449a4b851740c5e380057d6f0d23bd5/src/de/robv/android/xposed/XC_MethodHook.java

于 2014-08-17T12:11:08.810 回答