Chrome 远程调试允许你使用 PC Chrome 对 Android Chrome 的网页进行调试,文档如下:
https://developer.chrome.com/devtools/docs/remote-debugging
以下是我们喜闻乐见的调试界面:
远程调试的原理是一套名为 Chrome Debugging Protocol 的协议,只要遵守了这个协议,理论上任何实现都应该可以操纵 Chrome 中的网页。文档如下:
https://developer.chrome.com/devtools/docs/debugger-protocol
当你在 Android 上允许 USB 调试以后,打开 Android Chrome ;通过 USB 连接电脑,在 PC Chrome 中输入 chrome://inspect 进入远程调试界面,接着就可以选择你想要调试的网页了。
如果你电脑上有 adb ,执行如下命令,可以直接在 Android Chrome 中打开百度:
adb forward tcp:9222 localabstract:chrome_devtools_remote
curl -v http://127.0.0.1:9222/json/new?http://baidu.com
Android Chrome 在 Android 本地建立了一个 socket ,通过 adb 命令将这个名为 chrome_devtools_remote 的 socket 映射到 PC 对应的 port 上,接着就可以在 PC 中远程调试了。
那么问题来了,能不能实现一个遵守远程调试协议的 Android App ,访问 chrome_devtools_remote 这个 socket ,去操纵 Android Chrome 中的网页呢?
如果可以,那么就可以间接地在 Android Chrome 上实现网页插件。或者, App 在后台静默地进行 JS 注入,这样你的密码等信息可能就会被别人知道。
所以,如果这种方法是有效的,那 Chrome 远程调试是不是很不安全呢?
1
also24 2016-06-15 10:47:00 +08:00
Google 费尽心机设置了一定要点击 N 次才能进入的开发者选项页面,
在开启 adb 调试之前又再次提示你如果不懂这是什么功能就别瞎玩儿, 在没见过的电脑试图连接 adb 的时候又再次提醒你这是个陌生的电脑默认阻止了。 然后用户们都被各种手机管家诱导着打开了 adb 调试。 谷歌:怪我 adb 不安全喽? |
2
also24 2016-06-15 10:50:16 +08:00
额,抱歉我好像看错了,这个如果在 Android 上进行利用的话,好像可以不经过 adb 就直接使用的样子?
我要去试试。 |
5
mthli OP PC 上的 Chrome 可能也不安全, PC 上的 Chrome 需要添加启动参数才能进入调试模式。
但如果我偷偷替换掉 Chrome 启动图标,变成带参数的图标呢?也不是不可以。 |
6
mthli OP |
7
sodaless 2016-06-15 13:40:03 +08:00
在 Android 上创建一个名字以_devtools_remote 结尾的 LocalServerSocket , adbd 会主动 bind 这个 socket ,在 PC 上 adb forward 一下后面就可以建立连接想干啥干啥了, Stetho 就是这个思路
|
9
qgb 2021-07-31 15:17:39 +08:00
@sodaless https://github.com/facebook/stetho
我 adb forward tcp:9222 localabstract:chrome_devtools_remote 后,为什么 curl -vvvik http://127.0.0.1:9222/json/version * Trying 127.0.0.1... * TCP_NODELAY set * Connected to 127.0.0.1 (127.0.0.1) port 9222 (#0) > GET /json/version HTTP/1.1 > Host: 127.0.0.1:9222 > User-Agent: curl/7.55.1 > Accept: */* > * Recv failure: Connection was reset * Closing connection 0 curl: (56) Recv failure: Connection was reset 用 chrome://inspect 还是可以看到手机浏览器被调试页面的 |