记录黑客技术中优秀的内容,传播黑客文化,分享黑客技术精华

使用adb协议,无需forward也可以访问手机tcp端口

2020-10-18 19:20

本文简单讲一下adb协议(非 adb 命令),发现一个很少有人用的功能,支持访问手机的 tcp 端口,无需 forward。

一、背景

以前用 frida 时,老是有人强调要 adb forward,而且还有 forward 27042 和27043两个端口,至今不知道为什么。

【经过简单调研,forward 27043 的就是傻逼,写文不负责任的nmsl!也不知道是哪个傻逼带的这股歪风邪气】

后来发现有 frida -U 这个功能,不需要 forward也可以访问安卓的 tcp 端口,于是有了本文。

第二部分,第三部分主要参考官方的这四个文件,和网上其他人的文章

https://android.googlesource.com/platform/system/core/+/master/adb/README.md

https://android.googlesource.com/platform/system/core/+/master/adb/protocol.txt

https://android.googlesource.com/platform/system/core/+/master/adb/SERVICES.TXT

https://android.googlesource.com/platform/system/core/+/master/adb/OVERVIEW.TXT

如果只想知道结果,请直接看第四部分。

二、adb结构简介

server 端(PC)

运行在PC 端,常驻后台的进程,运行在127.0.0.1:5037,通常使用 adb kill-server 去杀死它。 本身的功能是接收并处理 client 端发来的请求,接收并处理 usb 端口的安卓设备,相当于一个桥梁功能。一台电脑仅可有一个。

client端(PC)

运行在 PC 端,与127.0.0.1:5037交互,平时 adb 命令用到的大部分功能就是 client 了。通过对5037抓包,可以获得协议和流量。一台电脑可以有无数个。

adbd(Android)

运行在手机端,ps 可以看到这个 adbd,与此类似的还有远古时期华为手机的 hdbd。通过 usb 和 pc 通信,具体协议没有研究过。一个手机仅可有一个。

adb可执行文件

上面提到的 server 端和 client 端来自同一个 adb 可执行文件,这个可执行文件本身是个 wrapper,通过传参来确认使用 server 功能还是使用 client 功能,包装了大部分常用的 adb 命令,非常强大。

三、adb协议简介

这部分特指 PC 上的 server 和 PC 商的 client 如何通信。

这个协议挺简单的,自己手写一个 client 也很简单。

request 消息,前4字节是消息长度,使用使用字符串类型的十六进制数来表示,后面是消息。

response 消息,前4字节是 OKAY 或者 FAIL,后面是4字节字符串类型的十六进制数,长度加数据内容,但变数较大。

要想和安卓手机交互,需要先发送 host:transport 等指令,然后再发送其他指令进行交互。

四、使用 adb 协议访问手机的 tcp 端口

需要仔细阅读并理解 https://android.googlesource.com/platform/system/core/+/master/adb/SERVICES.TXT,虽然这个挺难看懂的,看多了就懂了。adb 命令实现了一部分这里面的功能,没有全部实现,所以 SERVICES.TXT 是更全更完整的。

首先通过 transport 进入和 adbd 通信的状态,这四个是什么意思就不用我多说了吧

然后使用 tcp 访问手机的本地端口

成功后,将直接与该手机上的 socket 进行通信。

五、简单 demo

手机上开启一个简单的 tcp 服务(我懒得写http服务了),监听本地的1234端口,例如

执行以下的 py 脚本

 

输入 pong回车,会看到正确的io

好,不需要 adb forward,完美!


=============================================================
随着访客的增多,LeadroyaL在本站流量的开支越来越多了,曾经1元能用1个月,现在1元只能用3天。如果觉得本文帮到了你,希望能够为服务器的流量稍微打赏一点,谢谢!

知识来源: https://www.leadroyal.cn/?p=1199

阅读:10490 | 评论:0 | 标签:无

想收藏或者和大家分享这篇好文章→复制链接地址

“使用adb协议,无需forward也可以访问手机tcp端口”共有0条留言

发表评论

姓名:

邮箱:

网址:

验证码:

ADS

标签云