简书链接:一段惊险刺激的真实体验手机屏幕被我摔坏了,手机adb暂时能连接但是手机root了,怎么搞。
文章字数:985,阅读全文大约需要3分钟
能连接自然能用屏幕控制软件vysor,但是这个软件需要安装一个app,还是需要手机端确认,后面选择了另外一个成功解决了这个问题,接下来需要一个root版本的adb wifi软件,这样可以wifi启动,虽然软件下载了,但是貌似开机并不能自动启动,而我没有在一这个细节,那么今天我访问存储目录发现访问不了,我就用电脑控制手机切换成传递文件image.png
结果adb断了,而且开发者模式允许调试功能关闭也没了,
好在qq是属于手机白名单,而我的手机也root了,也安装了qq机器人,哪怕重启也会启动qq,而qq插件会自动运行机器人软件,但是当时的情况是忘记给机器人授权root指令了,通过命令是无法运行adb wifi这样的软件了。

但是我竟然以为我的机器人应该没写支持shell的命令,毕竟很久没搞机器人了,,现在干着急半天,而且我还看了机器人源代码,发现支持shell执行,但是我没给root权限授权,执行完成之后一直提示
Unallowed user

image.png

并没有其他写启动应用(免root)的指令,最后灵光一现,现在手机连接上usb,虽然无法启动开发者模式,但是还可以通过电脑访问存储目录呀,好在我的机器人支持加载java插件,js插件,而且存储目录都是外部存储, 对我来说肯定选择java插件了,

js我感觉还是吃力,于是我编写了一个插件,然后执行了配置 重载 以及插件信息发现成功加载机器人插件了,然后成功启动了应用,然后通过路由器查看到了手机的ip地址,然后就通过adb connect ip地址 成功连上了,妈的!
最后我赶紧给我的机器人授权root。
下面是kingroot授权界面
image.png

下面是我写插件放到存储目录,让手机端启动应用adb wifi应用,然后电脑端连接adb connect ip 的插件代码。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
package cn.qssq666.robot.plugin.sdk.control;

import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import java.io.File;
import java.util.List;

import cn.qssq666.plugindemo.SimplePluginInterfaceWrapper;
import cn.qssq666.robot.plugin.sdk.interfaces.AtBeanModelI;
import cn.qssq666.robot.plugin.sdk.interfaces.IMsgModel;


/**
* Created by qssq on 2018/7/19 [email protected]
*/
//cn.qssq666.robot.plugin.sdk.control.PluginMainImpl
public class PluginMainImpl extends SimplePluginInterfaceWrapper {
private static final String TAG = "PluginMainImpl";

public File getPicRootdir() {
return new File("/sdcard/qssq666/pic");
}

String mLastMsg = "";

@Override
public String getAuthorName() {
return "情随事迁";
}

@Override
public int getVersionCode() {
return 2;
}

@Override
public String getBuildTime() {
return "2021-8-14 01:15:07";
}

@Override
public String getVersionName() {
return "1.1";
}

@Override
public String getPackageName() {
return "cn.qssq666.applauncher";
}

@Override
public String getDescript() {
return "";
}

@Override
public String getPluginName() {
return "应用启动";
}

@Override
public boolean isDisable() {
return false;
}

@Override
public void setDisable(boolean disable) {

}

@Override
public boolean onReceiveMsgIsNeedIntercept(IMsgModel item) {
mLastMsg = item.getMessage();

String message = item.getMessage();
if(message.startsWith("启动")){

if(!getConfigApi().isManager(item.getSenderuin())){
getControlApi().sendMsg(item.setMessage("你不是管理员"));
return true;
}
String packageName = message.substring(2);
if(TextUtils.isEmpty(packageName)){
getControlApi().sendMsg(item.setMessage("请输入包名"));
}
try{

Context context = getContext();
PackageManager packageManager = context.getPackageManager();
Intent intent =null;
intent = packageManager.getLaunchIntentForPackage(packageName);
context.startActivity(intent);
getControlApi().sendMsg(item.setMessage("已启动"+ packageName));
}catch (Throwable e){
getControlApi().sendMsg(item.setMessage("启动失败"+ Log.getStackTraceString(e)));

}
return true;
}

return false;
}



@Override
public boolean onReceiveOtherIntercept(IMsgModel item, int type) {
return false;
}


@Override
public void onDestory() {

}


@Override
public View onConfigUi(ViewGroup viewGroup) {
TextView textView = new TextView(viewGroup.getContext());
textView.setText("应用启动" + mLastMsg);


return textView;
}

@Override
public int getMinRobotSdk() {
return 0;
}

@Override
public boolean onReceiveRobotFinalCallMsgIsNeedIntercept(IMsgModel iMsgModel, List<AtBeanModelI> list, boolean b, boolean b1) {
return false;
}
}

image.png

image.png

为了防止更多意外,还需要搞不用机器人也能开机启动之类的更好了,这个可能需要借助xposed插件勾住launcher应该可以,写一个自启动没生效,还需要研究是哪个应用把自启动给禁用了,我目前没有发现被禁用,但是没找到原因。