项目地址:https://github.com/sepyeight/HookWebViewRunCostomeJs
主要需求:一次面试公司需要抓取手机app内部web页面的数据,当时说python人家表示不行,需要xposed到手机,今天有时间,实现了demo,给需要的人
主要点:
被hook的app代码,简单写了几行
被hook的app代码,简单写了几行
1.如果执行自己的js
[Java] 纯文本查看 复制代码 private class MyWebViewClient extends WebViewClient{
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
XposedBridge.log(url);
return true;
}
@Override
public void onPageFinished(WebView view, String url) {
// Execute your javascript below
String jsLine = initJS();
XposedBridge.log("jsLine->>"+jsLine);
view.loadUrl("javascript:"+jsLine);
}
}
继承webViewClient重写onPageFinished加入你的js,然后添加WebViewClient进去
[Java] 纯文本查看 复制代码 @Override
protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
super.beforeHookedMethod(param);
XposedHelpers.findAndHookMethod("android.webkit.WebView", lpparam.classLoader, "setWebViewClient", WebViewClient.class, new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
super.afterHookedMethod(param);
param.args[0] = new MyWebViewClient();
}
});
}
2.回调方法到java层
[JavaScript] 纯文本查看 复制代码 window.android.startFunction(book_json);
基本就这样了,测试无法直接修改html添加jquery代码等,大佬会的可以告诉我。
|