Xposed hook到Android资源上



我试图在Android上使用Xposed来挂钩Android资源,特别是Webview的loadUrl。下面的代码与loadUrl挂钩,如果成功,则在日志中打印一条消息。

findAndHookMethod("com.example.webview.MainActivity", lpparam.classLoader, "android.webkit.WebView.loadUrl", new XC_MethodHook() {
        @Override
        protected void afterHookedMethod(MethodHookParam param) throws Throwable {
            XposedBridge.log("we are in loadurl!");
        }

但是,这样做会抛出错误:

java.lang.NoSuchMethodError: android.webkit.WebView#android.webkit.WebView.loadUrl()#exact

它甚至可能挂钩到Android资源与暴露?

你可以直接使用"hookAllMethods"

XposedBridge.hookAllMethods("com.example.webview.MainActivity", "loadUrl", new XC_MethodHook() {
        @Override
        protected void afterHookedMethod(MethodHookParam param) throws Throwable {
            XposedBridge.log("we are in loadurl!");
        }

它找不到方法,因为您没有指定方法参数。Xposed helper函数试图找到一个不存在的没有参数的loadUrl方法。

查看webView,有以下签名:

  • loadUrl(String url)
  • loadUrl(String url, Map additionalHttpHeaders).

我还没有测试,但这应该可以工作:

try {
    Method loadUrl1 = android.webkit.WebView.class.getDeclaredMethod("loadUrl", String.class);
    Method loadUrl2 = android.webkit.WebView.class.getDeclaredMethod("loadUrl", String.class, Map.class);
    XposedBridge.hookMethod(loadUrl1, new XC_MethodHook() { /* your code here*/});
    XposedBridge.hookMethod(loadUrl2, new XC_MethodHook() { /* your code here*/});
} catch (NoSuchMethodException e) { ... }

或者使用相同的API:

findAndHookMethod(classname, classloader, methodName, **ARGUMENTS[]**, xc_hook)

还有,你的意思是类名"android.webkit。"WebView"和方法"loadUrl"?

好运

相关内容

  • 没有找到相关文章

最新更新