Xaps挂钩到Android资源上

时间:2014-03-24 08:56:05

标签: android webview hook

我正在尝试在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

是否可以使用xposed挂接到Android资源?

2 个答案:

答案 0 :(得分:1)

你可以简单地使用“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!");
        }

答案 1 :(得分:0)

由于未指定方法参数,因此找不到该方法。 Xposed助手函数试图找到一个没有参数的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”吗?

祝你好运