利用ADB 协议建立PC与手机端本地unix套接字的连接
设置环境变量 但是adb 内部限制了输出的字数,导致最重要的writex输出(即最总发送给adb server的数据)长度只有16字节。为此,必须修改代码: std::string dump_hex(const void* data,size_t byte_count) {
- byte_count = std::min(byte_count,size_t(16));
+ //byte_count = std::min(byte_count,size_t(16));
重新编译adb adb发送的协议是 4字节16进制数+命令。 adb shell 命令: adb forward tcp:7843 localabstract:unix_name 如何在不指定本地端口号的情况下,直接连接远程的unix socket呢? 用python实现的模拟发送 import socket
import time
unix_name='you_name'
def query(s,msgs):
for msg in msgs:
pro_msg = "%04x%s"%(len(msg),msg)
print("send:",pro_msg)
s.send(pro_msg)
time.sleep(0.2)
reply = s.recv(1024*1024)
print('recv:',reply)
def adb_query(*msgs):
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM);
s.connect((socket.gethostbyname('localhost'),5037))
query(s,msgs)
s.close()
def forward(unixname,func):
s = socket.socket(socket.AF_INET,5037))
msg = "localabstract:%s" % unixname
query(s,('host:transport-any',msg))
func(s)
s.close()
def http_request(s):
s.send('GET / HTTP/1.1rnrn')
res = s.recv(1024)
print(res)
adb_query('host:devices')
adb_query('host:transport-any','shell:lsncat /proc/net/unix')
forward(unix_name,http_request) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |