关于ios webview的调试其它APP的JS疑问


#1

Android和iOS都可以通过浏览器调试APP WebView的JavaScript代码,目前在iOS中遇到一个调试别的APP WebView的问题。

首先说一下已知的:
1、Android在4.0以上的系统,可以通过Chrome(一定要)数据线连接手机,可以调试包括非自己APP的JavaScript
2、如果不能调试,需要用XPOSED HOOK一个函数WebView.setWebContentsDebuggingEnabled,并强制设置为True。大概就是这样:
![EXG(0]PM)DLACKNF38HXN$F|690x322](upload://dnf5voTfd0yfHwK8FPNVoTegchV.png)

iOS目前查询到的资料主要是:
1、通过MAC上的safari可以连接iOS手机里面的safari调试
2、编译安装自己的APP调试自己WebView的JS
3、暂时没查询到,调试别人APP的JS的说法。

反正也是用的越狱手机,猜测可能类似Android存在一个Webview的函数可以控制,如果hook修改设置一下参数可能就能调试了。

现在有点疑惑这种控制调试的函数叫什么。或者说如果有其它思路也一下?


#2

monkeydev重签下就可以通过safari连上调试了


#3

:joy:谢大神,这样正好就是“自己编译”的版本了。。。

不过以前有没有调研过,这种DEBUG编译和RELEASE的差了什么组建还是啥玩意,会导致无法被safari的检测到然后调试呢?


#4

不是debug release的问题。而是少了个权限。
com.apple.private.webinspector.allow-remote-inspection


#5

您好,能半路改这个权限吗?


#6

不能。应该


#7

我是不想重装应用,因为有时候刚好数据很难复现,如果重新签名在安装数据就没了


#8

我后来觉得可能是get-task-allow导致的,不过你说的这个也是ldid加的?


#9

半路改不了啊,应该是拿ldid改或者Monkey说的办法了


#10

试了一下在 webinspectord 里做 hook,一处函数搞定全局开启调试。整理文章稍后发


#11

正确的姿势不是改动这个 entitlement,而是想办法 patch 谁检查了这个 entitlement——这个检查逻辑是在用户态完成的


#12

不我个人的思路就是不去动系统的东西


#13

不动服务似乎做不到


#14

是啊所以稳妥起见就是静态改entitlement了,理智上来说patch用户态的系统服务并不是一个永远可行的方案


#15

你不是后面解决了吗? Tweak 全局开启任意 App 的 WebView 调试


#16

“不动服务”