当前位置:   article > 正文

局域网中用adb调试手机_快应用调试器的研究2

adb reverse 原理

65395ef7b4cd517c9a6f9f4268153f7e.png

接上文的前置知识。这一篇是上文的具体应用。

快应用调试器又包含调试器内核和调试器app容器。调试器内核先放到一边,我们从调试器的容器开始入手。

1、点击调试之后的过程

点击 开始调试 的时候,调试器会发送一个post请求到快应用项目启动的server。由于快应用server的端口是可以变化的,ip也会变化。

那么往哪个server发?在扫码的时候,调试器会记录当前项目的server的ip和端口号。点击调试就会向该ip:port发送调试的post请求。

如果上次记录的地址发生变化,那就需要重新扫码。

该调试请求(/postdbg)的请求头中会携带相关信息,用于server解析。(/postdbg 等同于之后的/poststdbg)

继续,该请求的body中会携带如下信息

322d951e7b38e7b8808e9b44ee0fc7c2.png

这些信息是什么呢?

包含:调试器容器启动了一个server,端口是38474(这个端口不是固定的,每期启动调试器就会随机产生,这个示例用38474举例),这个端口上又有多个路径。

其中/inspector就是之后跟chrome进行cdp协议通信的ws协议

2b802cb643769c08152e1b6f5621cde3.png

这个接口不是http协议的,所以通过http协议访问不到,需要ws协议访问。

/status记录该调试器的一些相关信息。

a87c152602ef7606ea149e0856398605.png

ok,这个接口返回的东西和上文提到的post请求的body体一致。

调试器的这个server地址是多少呢?ip:39517,39517是和android同学约定的。

调试器在39517端口起了一个server用于跟node server进行通信。

这个server除了在启动是发送/postdbg请求外,还会serve一些接口服务。

比如/update。这个接口非常重要,调试器server接收到这个请求后会向快应用项目server拉取最新的rpk包,然后重新执行rpk。对chrome重新发送cdp消息。

服务流程图大致是这样的。

9c08f1495751ff6b9ab4a9e36e2f7aff.png

2、WIFI环境。

初始版本的调试器只支持网络调试,就是只能通过wifi连接到调试器的server。

我们看下在wifi环境下/postdbg的请求

8cd3e128ba97bd8dbe5e0d6f3f0cdb19.png

header里的host就是快应用的项目server,这里是在8000端口启动的,如果8000端口被占用会向后搜索可用端口。

由于在局域网内可以访问到调试器的对外端口,所以可以直接访问该端口并发送请求。这个没有什么问题。

所以我在pc上直接访问手机的server的39517端口的/update接口就可以让手机获取最新rpk

90d538353f61bef44b64c2d3e4504b41.png

这样的话,只要其他人拿到我手机的ip,就可以任意请求,导致我的项目疯狂更新rpk。有点厉害!

3、不使用WIFI环境,使用USB调试。


如果使用usb调试,那么手机无法在局域网内。手机的调试器端口外部无法访问,这就需要我们的前置知识了。我们就需要使用adb的功能了。

我们看下点击调试后/postdbg的请求

e25c63f361c75b1e69e6b70f881ad7d8.png

header里的host就是快应用的项目server,现在这里不是8000端口了,而是12306端口。

这里我们和android同学约定好了,在调试模式下访问12306端口。

这是通过adb reverse 命令 将快应用的8000端口反向代理到手机的12306端口了。

140101a2b638e2766986eff31bec8add.png

看到没,现在我们在手机访问127.0.0.1:12306/就是调试页面了。

也就是手机需要访问快应用项目的接口只需要访问本地12306即可,所以发送/postdbg请求到127.0.0.1:12306 就可以了。

同理,调试器启动的端口(比如上面所说的39517端口 以及随机的ws端口)都使用adb forward转发到本机。

这样访问127.0.0.1:39517就相当于访问手机调试器端口,访问本机随机启动的端口也相当于访问对应的手机端口。

588cfe16b8e969ce87b2f039061f463b.png

这样我们启动的chrome页面连接的本地的ws端口就相当于链接手机调试器ws端口。

大体流程我再画一张图。

43f0cae59a2ac347215ac5085cf3bbb0.png

总结:

这就是快应用调试器在wifi环境和use调试环境下的基本原理。其他的业务逻辑具体看代码。

调试器的ws端口和chrome如何建立页面DOM将在下一篇分析。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/264736
推荐阅读
相关标签
  

闽ICP备14008679号