首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
V2EX  ›  问与答

Chrome 远程调试是否安全?

  •  
  •   mthli · 2016-06-15 10:37:05 +08:00 · 2303 次点击
    这是一个创建于 1269 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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 远程调试是不是很不安全呢?

    8 回复  |  直到 2018-09-04 16:12:52 +08:00
        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 就直接使用的样子?
    我要去试试。
        3
    mthli   2016-06-15 10:52:40 +08:00
    @also24 主要是端口映射的问题,解决这个问题,你就可以按照协议创建一个 WebSocket ,然后发请求就可以。
        4
    also24   2016-06-15 10:53:29 +08:00
    @mthli 对,我发现了,正在尝试,抱歉之前鲁莽了
        5
    mthli   2016-06-15 11:07:09 +08:00
    PC 上的 Chrome 可能也不安全, PC 上的 Chrome 需要添加启动参数才能进入调试模式。

    但如果我偷偷替换掉 Chrome 启动图标,变成带参数的图标呢?也不是不可以。
        6
    mthli   2016-06-15 11:51:16 +08:00 via Android   ♥ 1
        7
    sodaless   2016-06-15 13:40:03 +08:00
    在 Android 上创建一个名字以_devtools_remote 结尾的 LocalServerSocket , adbd 会主动 bind 这个 socket ,在 PC 上 adb forward 一下后面就可以建立连接想干啥干啥了, Stetho 就是这个思路
        8
    chen6459   2018-09-04 16:12:52 +08:00
    @mthli root 过的手机有权限连接吗?没看懂这代码需要的权限是怎么样的
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4092 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 31ms · UTC 07:53 · PVG 15:53 · LAX 23:53 · JFK 02:53
    ♥ Do have faith in what you're doing.