【iOS安全】开启任意app的WebView远程调试

参考:https://mp.weixin.qq.com/s/bNKxQaVrPaXsZ5BPbsXy7w
(来自周智老师的公众号)

概述

Safari 有一个内置的前端调试器,
在iPhone通过局域网或者USB连接MacBook 并启用Safari 远程调试之后,前端调试器默认情况下对 MobileSafari 和 Xcode 编译运行的 App 有效。

系统内置的 App 或者 AppStore 下载的 App 是不被JS控制台所观测到的。

在越狱过的手机上,通过一个动态补丁可以开启 WebView 调试功能。
https://github.com/ChiChou/GlobalWebInspect
(由周智老师开发)

安装教程

下载地址:
https://github.com/ChiChou/GlobalWebInspect/releases

iPhone下载deb文件
【iOS安全】开启任意app的WebView远程调试_第1张图片

发送给Filza,使用Filza进行安装

【iOS安全】开启任意app的WebView远程调试_第2张图片

开启调试

参考:https://cloud.tencent.com/developer/article/1680133

打开Mac的 Safari 浏览器的“开发”菜单
运行 Safari 浏览器,然后依次选取“Safari 浏览器”>“偏好设置”,点按“高级”面板,然后勾选“在菜单栏中显示开发菜单”。

开启iPhone的Safari调试模式
打开 iPhone 依次进入 设置 > Safari浏览器 > 高级 > 网页检查器 > 启用。
【iOS安全】开启任意app的WebView远程调试_第3张图片
此后在MacBook上就能看到含wkwebivew的应用中的网页情况:
【iOS安全】开启任意app的WebView远程调试_第4张图片

原理

WebView 相关的组件会和 webinspectord 服务进程通信。

当应用程序的数字签名当中有如下 entitlement 之一时,便会开启远程调试:

  • com.apple.security.get-task-allow
  • com.apple.private.webinspector.allow-remote-inspection
  • com.apple.private.webinspector.allow-carrier-remote-inspection
  • com.apple.webinspector.allow

比如系统自带的 Safari 浏览器就有 com.apple.private.webinspector.allow-remote-inspection,而所有通过 Xcode 运行的真机调试应用都会有 com.apple.security.get-task-allow。

为了检测相应的 entitlement,webinspectord 会调用到 SecTaskCopyValueForEntitlement 函数。

通过hook这个函数并篡改,可以实现对任意app的远程调试。可以通过插件实现这个功能。

调试技巧

保存JS等网页文件
浏览文件时按下Command+S
【iOS安全】开启任意app的WebView远程调试_第5张图片
【iOS安全】开启任意app的WebView远程调试_第6张图片

你可能感兴趣的:(iOS安全,ios,安全)