-
2021-05-20 19:25:35
adb root
结果:
C:\signapp>adb root
restarting adbd as root # 说明有root权限 ,若是adbd cannot run as root in production builds 则说明没有root权限更多相关内容 -
adb_root:Magisk模块,可让您运行“ adb root”
2021-05-07 19:53:54adb root允许您“ adb push / pull”到系统目录并运行诸如“ adb remount”或“ adb disable-verify”之类的命令。 这是一个高度不安全的magisk模块。 完成所有需要的操作后,不要忘记禁用它。 不要经常使用它。 ... -
android10.0(Q) root MTK 6765 user版本打开root权限(adb root权限和 apk root权限)
2021-01-03 16:03:19相比较 Android8.1、9.0 而言,Q 版本 的 root变得相当麻烦,10.0 中引入了动态分区机制,可看这篇Android10 动态分区介绍,同样的要想完全 adb root,需要 fastboot 解锁,然后关闭 verity 才能 adb remount 成功。... -
ADB Root 不卡住
2018-01-25 15:21:09有時候你下ADB Root會卡在那,這個tool可以幫你做掉,讓你使用pipe時,比較方便 -
Android 实现永久性开启adb 的root权限
2021-01-03 12:06:05adb 的root 权限是在system/core/adb/adb.c 中控制。主要根据ro.secure 以及 ro.debuggable 等system property 来控制。 默认即档ro.secure 为0 时,即开启root 权限,为1时再根据ro.debuggable 等选项来确认是否... -
adb root之后adb remount,总是提示Not running as root. Try “adb root“ first.
2021-08-10 16:39:38错误如上图所示 一、打开开发者选项 一般是狂点图中位置会出来(settings->system->...四、然后adb root、adbdisable-verity,然后adb reboot重启,然后再adb root、adb remount就可以了 ...错误如上图所示
一、打开开发者选项
一般是狂点图中位置会出来(settings->system->about tablet)
二、进入developer options,找到Root access,选择对应配置,我这里
三、然后在输入adb root、adb remount提示
四、然后adb root、adb disable-verity,然后adb reboot重启,然后再adb root、adb remount就可以了
-
Android系统开启adb root方案
2021-04-15 17:36:14将adb root模式默认开启 解决方案 system/core/adb/daemon/main.cpp static bool should_drop_privileges() { #if defined(ALLOW_ADBD_ROOT) char value[PROPERTY_VALUE_MAX]; // The properties that affect `...需求描述
将adb root模式默认开启解决方案
system/core/adb/daemon/main.cppstatic bool should_drop_privileges() {
#if defined(ALLOW_ADBD_ROOT)
char value[PROPERTY_VALUE_MAX];// The properties that affect `adb root` and `adb unroot` are ro.secure and
// ro.debuggable. In this context the names don't make the expected behavior
// particularly obvious.
//
// ro.debuggable:
// Allowed to become root, but not necessarily the default. Set to 1 on
// eng and userdebug builds.
//
// ro.secure:
// Drop privileges by default. Set to 1 on userdebug and user builds.
property_get("ro.secure", value, "1");
bool ro_secure = (strcmp(value, "1") == 0);property_get("ro.debuggable", value, "");
bool ro_debuggable = (strcmp(value, "1") == 0);// Drop privileges if ro.secure is set...
bool drop = ro_secure;property_get("service.adb.root", value, "");
bool adb_root = (strcmp(value, "1") == 0);
bool adb_unroot = (strcmp(value, "0") == 0);// ... except "adb root" lets you keep privileges in a debuggable build.
if (ro_debuggable && adb_root) {
drop = false;
}// ... and "adb unroot" lets you explicitly drop privileges.
if (adb_unroot) {
drop = true;
}return drop;
#else
return true; // "adb root" not allowed, always drop privileges.
#endif // ALLOW_ADBD_ROOT
}
修改system/core/adb/daemon/main.cpp的should_drop_privileges()方法返回为false
修改build/core/main.mk,使ADDITIONAL_DEFAULT_PROPERTIES += ro.secure=0
添加属性device/qcom/msm8953_64/system.prop,该属性会编译到root/default.prop
ro.secure=0
ro.adb.secure=0
ro.duebuggbale=1
————————————————
版权声明:本文为CSDN博主「Just_Paranoid」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_44008788/article/details/113091256 -
Android 9.x userdebug版本关闭adb root功能
2021-04-14 14:18:25公司某行招标软件版本是userdebug,需要关闭adb root功能,保留安装应用等功能 刚开始修改系统属性值ro.secure=1,没有效果,只得去撸源码,最后修改成功,特此记录源码分析过程 “解决方案” 这个需求,不是很简单...引言
公司某行招标软件版本是userdebug,需要关闭adb root功能,保留安装应用等功能
刚开始修改系统属性值ro.secure=1,没有效果,只得去撸源码,最后修改成功,特此记录源码分析过程“解决方案”
这个需求,不是很简单嘛,就是一个系统属性值的问题
diff --git a/build/make/core/main.mk b/build/make/core/main.mk index fedddff3df..c2e0a82f04 100755 --- a/build/make/core/main.mk +++ b/build/make/core/main.mk @@ -294,7 +294,7 @@ else # !user_variant # Turn on checkjni for non-user builds. ADDITIONAL_BUILD_PROPERTIES += ro.kernel.android.checkjni=1 # Set device insecure for non-user builds. - ADDITIONAL_DEFAULT_PROPERTIES += ro.secure=0 + ADDITIONAL_DEFAULT_PROPERTIES += ro.secure=1 # Allow mock locations by default for non user builds ADDITIONAL_DEFAULT_PROPERTIES += ro.allow.mock.location=1 endif # !user_variant
编译,烧机,adb connect,adb root,adb remount
C:\Users\lc\Desktop $ adb remount remount succeeded
纳尼!!居然root成功了
分析源码过程
没办法,撸adb源码吧,源码见真章
/system/core/adb/daemon/main.cppint main(int argc, char** argv) { 240 while (true) { 241 static struct option opts[] = { 242 {"root_seclabel", required_argument, nullptr, 's'}, 243 {"device_banner", required_argument, nullptr, 'b'}, 244 {"version", no_argument, nullptr, 'v'}, 245 }; 246 247 int option_index = 0; //解析命令行参数 248 int c = getopt_long(argc, argv, "", opts, &option_index); 249 if (c == -1) { 250 break; 251 } 253 switch (c) { 254 case 's': //安全标签,adbd的权限说明 255 root_seclabel = optarg; 256 break; 257 case 'b': //设备类型:android设备,主机 258 adb_device_banner = optarg; 259 break; 260 case 'v': 261 printf("Android Debug Bridge Daemon version %d.%d.%d\n", ADB_VERSION_MAJOR, 262 ADB_VERSION_MINOR, ADB_SERVER_VERSION); 263 return 0; 264 default: 265 // getopt already prints "adbd: invalid option -- %c" for us. 266 return 1; 267 } 268 } 269 //关闭标准输入 //指向标准输出文件描述结构体的STDIN_FILENO指向标准输出文件"/dev/null" 270 close_stdin(); 271 //程序异常退出诊断 272 debuggerd_init(nullptr); //获取系统属性persist.adb.trace_mask,调用setup_trace_mask()设置为trace掩码 273 adb_trace_init(argv); 274 275 D("Handling main()"); //adbd默认通信端口:5037 276 return adbd_main(DEFAULT_ADB_PORT); 277}
着重看下adbd_main()方法
int adbd_main(int server_port) { //设置新建文件的默认值 //这个与chmod相反,这里相当于新建文件后的权限为666 176 umask(0); 177 //SIG_IGN,表示忽略SIGPIPE信号 178 signal(SIGPIPE, SIG_IGN); 179 //初始化adbd的传输连接 180 init_transport_registration(); 182 //保证文件操作安全 184 adbd_cloexec_auth_socket(); 185 186 if (ALLOW_ADBD_NO_AUTH && !android::base::GetBoolProperty("ro.adb.secure", false)) { 187 auth_required = false; 188 } 189 //adbd授权初始化 190 adbd_auth_init(); 191 192 // Our external storage path may be different than apps, since 193 // we aren't able to bind mount after dropping root. 194 const char* adb_external_storage = getenv("ADB_EXTERNAL_STORAGE"); 195 if (adb_external_storage != nullptr) { 196 setenv("EXTERNAL_STORAGE", adb_external_storage, 1); 197 } else { 198 D("Warning: ADB_EXTERNAL_STORAGE is not set. Leaving EXTERNAL_STORAGE" 199 " unchanged.\n"); 200 } 201 //降低特权 202 drop_privileges(server_port); 203 204 bool is_usb = false; 205 if (access(USB_FFS_ADB_EP0, F_OK) == 0) { 206 // Listen on USB. 207 usb_init(); 208 is_usb = true; 209 } 210 211 // If one of these properties is set, also listen on that port. 212 // If one of the properties isn't set and we couldn't listen on usb, listen 213 // on the default port. 214 std::string prop_port = android::base::GetProperty("service.adb.tcp.port", ""); 215 if (prop_port.empty()) { 216 prop_port = android::base::GetProperty("persist.adb.tcp.port", ""); 217 } 218 219 int port; 220 if (sscanf(prop_port.c_str(), "%d", &port) == 1 && port > 0) { 221 D("using port=%d", port); 222 // Listen on TCP port specified by service.adb.tcp.port property. 223 setup_port(port); 224 } else if (!is_usb) { 225 // Listen on default port. 226 setup_port(DEFAULT_ADB_LOCAL_TRANSPORT_PORT); 227 } 228 229 D("adbd_main(): pre init_jdwp()"); 230 init_jdwp(); 231 D("adbd_main(): post init_jdwp()"); 232 233 D("Event loop starting"); 234 fdevent_loop(); 235 236 return 0; 237}
ro.adb.secure
主要来看下这段代码,分析一下ro.adb.secure属性值的作用
186 if (ALLOW_ADBD_NO_AUTH && !android::base::GetBoolProperty("ro.adb.secure", false)) { 187 auth_required = false; 188 }
用grep命令查一下ALLOW_ADBD_NO_AUTH 在哪里初始化
****@****:~/work/mt8788_9$ grep -inr "ALLOW_ADBD_NO_AUTH" system/core/adb/ system/core/adb/Android.mk:347:LOCAL_CFLAGS += -DALLOW_ADBD_NO_AUTH=$(if $(filter userdebug eng,$(TARGET_BUILD_VARIANT)),1,0)
获取当前编译环境中的编译版本属性TARGET_BUILD_VARIANT,
如果是userdebug或eng的话,ALLOW_ADBD_NO_AUTH为1,否者为0。继续查一下auth_required初始化之后在哪里用到
/system/core/adb/adb.cppstatic void handle_new_connection(atransport* t, apacket* p) { 320 if (t->GetConnectionState() != kCsOffline) { 321 t->SetConnectionState(kCsOffline); 322 handle_offline(t); 323 } 324 325 t->update_version(p->msg.arg0, p->msg.arg1); 326 parse_banner(p->payload, t); 327 328#if ADB_HOST 329 handle_online(t); 330#else 331 if (!auth_required) { 332 handle_online(t); 333 send_connect(t); 334 } else { 335 send_auth_request(t); 336 } 337#endif 338 339 update_transports(); 340}
当auth_required=true时,设置online标志位为1,调用send_connect()去连接,往下走流程
当auth_required=false时,输出需要认证的消息到终端在这里做个测试,设置ro.adb.secure=false,然后执行adb命令
C:\Users\lc\Desktop $ adb root adb: unable to connect for root: device unauthorized. This adb server's $ADB_VENDOR_KEYS is not set Try 'adb kill-server' if that seems wrong. Otherwise check for a confirmation dialog on your device. C:\Users\lc\Desktop $ adb devices List of devices attached 10.12.200.186:5555 unauthorized
此时设备处入未认证的状态,adb install失效,不符合我们的需求。
drop_privileges()
看drop_privileges函数名,知道它是用来降低权限的,对调用者权限从root到shell的控制
static void drop_privileges(int server_port) { 99 ScopedMinijail jail(minijail_new()); 100 101 // Add extra groups: 102 // AID_ADB to access the USB driver 103 // AID_LOG to read system logs (adb logcat) 104 // AID_INPUT to diagnose input issues (getevent) 105 // AID_INET to diagnose network issues (ping) 106 // AID_NET_BT and AID_NET_BT_ADMIN to diagnose bluetooth (hcidump) 107 // AID_SDCARD_R to allow reading from the SD card 108 // AID_SDCARD_RW to allow writing to the SD card 109 // AID_NET_BW_STATS to read out qtaguid statistics 110 // AID_READPROC for reading /proc entries across UID boundaries 111 // AID_UHID for using 'hid' command to read/write to /dev/uhid 112 gid_t groups[] = {AID_ADB, AID_LOG, AID_INPUT, AID_INET, 113 AID_NET_BT, AID_NET_BT_ADMIN, AID_SDCARD_R, AID_SDCARD_RW, 114 AID_NET_BW_STATS, AID_READPROC, AID_UHID}; 115 minijail_set_supplementary_gids(jail.get(), arraysize(groups), groups); 116 117 //安全模式下,不监听端口(默认为5037),以非root用户身份运行 119 if (should_drop_privileges()) { 120 const bool should_drop_caps = should_drop_capabilities_bounding_set(); 121 122 if (should_drop_caps) { 123 minijail_use_caps(jail.get(), CAP_TO_MASK(CAP_SETUID) | CAP_TO_MASK(CAP_SETGID)); 124 } 125 //更改群组为AID_SHELL 126 minijail_change_gid(jail.get(), AID_SHELL); //更改用户为AID_SHELL 127 minijail_change_uid(jail.get(), AID_SHELL); 128 // minijail_enter() will abort if any priv-dropping step fails. 129 minijail_enter(jail.get()); 130 131 //清除clearing the inheritable, effective, and permitted sets. 135 using ScopedCaps = 136 std::unique_ptr<std::remove_pointer<cap_t>::type, std::function<void(cap_t)>>; 137 ScopedCaps caps(cap_get_proc(), &cap_free); 138 if (cap_clear_flag(caps.get(), CAP_INHERITABLE) == -1) { 139 PLOG(FATAL) << "cap_clear_flag(INHERITABLE) failed"; 140 } 141 if (cap_clear_flag(caps.get(), CAP_EFFECTIVE) == -1) { 142 PLOG(FATAL) << "cap_clear_flag(PEMITTED) failed"; 143 } 144 if (cap_clear_flag(caps.get(), CAP_PERMITTED) == -1) { 145 PLOG(FATAL) << "cap_clear_flag(PEMITTED) failed"; 146 } 147 if (cap_set_proc(caps.get()) != 0) { 148 PLOG(FATAL) << "cap_set_proc() failed"; 149 } 150 151 D("Local port disabled"); 152 } else { 153 // minijail_enter() will abort if any priv-dropping step fails. 154 minijail_enter(jail.get()); 155 156 if (root_seclabel != nullptr) { 157 if (selinux_android_setcon(root_seclabel) < 0) { 158 LOG(FATAL) << "Could not set SELinux context"; 159 } 160 } 161 std::string error; 162 std::string local_name = 163 android::base::StringPrintf("tcp:%d", server_port); 164 if (install_listener(local_name, "*smartsocket*", nullptr, 0, nullptr, &error)) { 165 LOG(FATAL) << "Could not install *smartsocket* listener: " << error; 166 } 167 } 168}
通过should_drop_privileges()函数来判断是否需要降低权限
static bool should_drop_privileges() { 63#if defined(ALLOW_ADBD_ROOT) 64 // The properties that affect `adb root` and `adb unroot` are ro.secure and 65 // ro.debuggable. In this context the names don't make the expected behavior 66 // particularly obvious. 67 // 68 // ro.debuggable: 69 // Allowed to become root, but not necessarily the default. Set to 1 on 70 // eng and userdebug builds. 71 // 72 // ro.secure: 73 // Drop privileges by default. Set to 1 on userdebug and user builds. 74 bool ro_secure = android::base::GetBoolProperty("ro.secure", true); 75 bool ro_debuggable = __android_log_is_debuggable(); 76 77 // Drop privileges if ro.secure is set... 78 bool drop = ro_secure; 79 80 // ... except "adb root" lets you keep privileges in a debuggable build. 81 std::string prop = android::base::GetProperty("service.adb.root", ""); 82 bool adb_root = (prop == "1"); 83 bool adb_unroot = (prop == "0"); 84 if (ro_debuggable && adb_root) { 85 drop = false; 86 } 87 // ... and "adb unroot" lets you explicitly drop privileges. 88 if (adb_unroot) { 89 drop = true; 90 } 91 92 return drop; 93#else 94 return true; // "adb root" not allowed, always drop privileges. 95#endif // ALLOW_ADBD_ROOT 96}
看了这里的逻辑才恍然大悟,难怪只是设置ro.secure的值没用,真的需要判断的条件是__android_log_is_debuggable()和service.adb.root属性值。
真丶解决方案
/system/core/liblog/properties.c
280LIBLOG_ABI_PUBLIC int __android_log_is_debuggable() { 281 static uint32_t serial; 282 static struct cache_char tag_cache; 283 static const char key[] = "ro.debuggable"; 284 int ret; 285 286 if (tag_cache.c) { /* ro property does not change after set */ 287 ret = tag_cache.c == '1'; 288 } else if (lock()) { 289 struct cache_char temp_cache = { { NULL, -1 }, '\0' }; 290 refresh_cache(&temp_cache, key); 291 ret = temp_cache.c == '1'; 292 } else { 293 int change_detected = check_cache(&tag_cache.cache); 294 uint32_t current_serial = __system_property_area_serial(); 295 if (current_serial != serial) { 296 change_detected = 1; 297 } 298 if (change_detected) { 299 refresh_cache(&tag_cache, key); 300 serial = current_serial; 301 } 302 ret = tag_cache.c == '1'; 303 304 unlock(); 305 } 306 307 return ret; 308}
然后查一下service.adb.root属性值的初始化
****@****:~/work/mt8788_9$ grep -inr "service.adb.root" system/core/adb/ system/core/adb/daemon/main.cpp:81: std::string prop = android::base::GetProperty("service.adb.root", ""); system/core/adb/services.cpp:87: android::base::SetProperty("service.adb.root", "1"); system/core/adb/services.cpp:98: android::base::SetProperty("service.adb.root", "0");
/system/core/adb/services.cpp
void restart_root_service(int fd, void *cookie) { if (getuid() == 0) { WriteFdExactly(fd, "adbd is already running as root\n"); adb_close(fd); } else { if (!__android_log_is_debuggable()) { WriteFdExactly(fd, "adbd cannot run as root in production builds\n"); adb_close(fd); return; } android::base::SetProperty("service.adb.root", "1"); WriteFdExactly(fd, "restarting adbd as root\n"); adb_close(fd); } } void restart_unroot_service(int fd, void *cookie) { if (getuid() != 0) { WriteFdExactly(fd, "adbd not running as root\n"); adb_close(fd); } else { android::base::SetProperty("service.adb.root", "0"); WriteFdExactly(fd, "restarting adbd as non root\n"); adb_close(fd); } }
可以看到service.adb.root的属性值是动态设置的,判断条件也是__android_log_is_debuggable()方法
修改ro.debuggable的值diff --git a/build/make/core/main.mk b/build/make/core/main.mk index c2e0a82f04..14ca69b4a4 100755 --- a/build/make/core/main.mk +++ b/build/make/core/main.mk @@ -301,7 +301,7 @@ endif # !user_variant ifeq (true,$(strip $(enable_target_debugging))) # Target is more debuggable and adbd is on by default - ADDITIONAL_DEFAULT_PROPERTIES += ro.debuggable=1 + ADDITIONAL_DEFAULT_PROPERTIES += ro.debuggable=0 # Enable Dalvik lock contention logging. ADDITIONAL_BUILD_PROPERTIES += dalvik.vm.lockprof.threshold=500 # Include the debugging/testing OTA keys in this build.
编译,烧机之后,验证功能
C:\Users\lc\Desktop $ adb disconnect & adb connect 10.12.200.27:5555 & adb root & adb remount disconnected everything connected to 10.12.200.27:5555 Not running as root. Try "adb root" first. C:\Users\lc\Desktop $ adb install -r antutu_v8.4.8.apk Performing Streamed Install adb: failed to install antutu_v8.4.8.apk: Failure [-9999: **** signature error for com.antutu.ABenchMark]
注:-9999是增加的第三方验签功能,这里无关紧要。
root功能失效,应用安装功能等保留,问题解决。总结
遇事多看看源码,看源码之前,看看大佬的博客,有助于我们阅读源码
ADB(二)_ADBD_main()函数代码梳理
ADB(三)_ADBD_adbd_main()函数代码梳理
ADB(四)_host端的启动流程代码梳理 -
Android系统默认开启adb root模式
2021-01-24 15:43:49将adb root模式默认开启 解决方案 system/core/adb/daemon/main.cpp static bool should_drop_privileges() { #if defined(ALLOW_ADBD_ROOT) char value[PROPERTY_VALUE_MAX]; // The properties that affect `... -
手机adb调试出现Not running as root. Try“adb root“ first.
2021-12-08 15:24:05在连接了adb调试手机后,我是要把重新安装,删除手机上的app 当时执行,重新安装命令 adb remount 如图: 就报了这个Not running as root. Try"adb root" first. ...adb root 然后再执行其他命令 ... -
android11.0(R) root MTK 6771 user版本打开root权限(adb root权限和 apk root权限)
2021-03-04 09:54:12老弟们,还是我,将 root 进行到底!android11.0 root 安排!!! 大体沿用之前 10.0 的修改方法,adb 想要 remount 成功,必须进行 fastboot 解锁,解锁后无需在进行 adb disable-verity 操作,直接 adb remount 就... -
解决 ‘adb root‘ 时提示 ‘adbd cannot run as root in production builds
2022-03-20 16:55:32解决 'adb root' 时提示 'adbd cannot run as root in production builds' -
adb root 失败 ps等命令执行无效果
2020-11-29 00:37:07adb shell "su -c '命令1; 命令2'" #分行执行多条命令 adb shell "su -c ' 命令1; 命令2 '" #例子 adb shell "su -c ' cd data; cd data; ls '" 转自https://www.cnblogs.com/jeason1997/p/12410537.html -
获取adb root权限
2018-06-18 12:40:41在开发中,难免在debug release版本时碰倒adb shell权限的问题, 比如QA突然急冲冲的拿着一台出问题的机器跑过来,当你要使用adb shell做一些测试时竟然发现没有 -
adb Not running as root. Try "adb root" first.
2019-08-08 16:32:29前几天遇到这个问题,明明已经敲入了adb root,仍旧不能remount。 D:\Android\SDK\platform-tools>adb root D:\Android\SDK\platform-tools>adb remount D:\Android\SDK\platform-tools>adb Not ... -
Android P userdebug模式获取adb root adb remount 无权限 remount失败
2020-04-14 10:25:201.Android P 无法直接 adb remount 原因 Android P之后的版本,google 弃用了 avb 2.0,默认打开了 security boot。DM-Verity 启动策略有一些改变:由原先的 vboot 1.0模式变成使用了avb2.0模式。这就导致了在 user... -
adb root 出现错误
2018-05-15 14:48:32执行adb root发现错误:adb: unable to connect for root: insufficient permissions for device: verify udev rules.See [http://developer.android.com/tools/device.html] for more information.解决方法:sudo ... -
免root打开adb软件.zip
2020-04-05 21:53:19此软件能永久开启adb,内有说明,当然有例外的机顶盒。比如17年的天邑机顶盒ty1208z CPUS905M就不行 18年19年都行就它17年的不行。 -
MTK 6735/6739/6755/6763 android8.1 user版本打开root权限(adb root权限和 apk root权限)
2019-12-02 17:55:36一直对 root 这块比较感兴趣,正好最近客户有这么个需求,都说兴趣是最好的老师,但也抵不住任务来的快啊。临危受命,只能开搞了。 从 Android M 后 Google 对权限控制的越来越严,包括 root 也是,网上很多文章都是... -
adb常见问题解决(手机需要root权限).docx
2019-08-10 11:54:36一、adb logcat 命令的时候,cmd总是提示adb server did't AC -
user版本打开adb root权限
2019-04-16 10:48:52首先修改根目录下的/system/core/adb/Android.mk 将上图中的代码注释,添加如下代码,使其不管在哪种版本下都有...LOCAL_CFLAGS += -DALLOW_ADBD_ROOT=1 修改/system/core/adb/services.cpp 注释掉此段,我们将... -
【adb 命令】 华为手机 adb remount 提示提示 not running as root try "adb root" first
2019-04-09 23:15:05目的:是为了访问 、data/data/ 路径 出现无权限。 机器可能要root . -
adb_ROOT_adb刷机工具_555_adb_adb刷机工具箱_
2021-10-01 08:41:14这是一个ADB工具可以用于手机刷机 获取root之类 -
部分设备 命令行窗口执行adb root 报错error:device not found
2017-09-19 05:40:46今天遇到一个很郁闷的问题 有的手机连接电脑 通过cmd进入命令行窗口执行adb root 可以连接成功 但有一台手机连接usb 在命令行输入adb root 却报错device not found 网上的方法都用了,还是没有解决问题,请大神们说... -
android8.x/android9.x/android10.x user版本打开adb root和调试功能
2021-02-03 14:57:54修改ro.adb.secure和ro.secure属性 2、关闭selinux system/core/init/Android.mk system/core/init/selinux.cpp 3、修改adb模块的android.mk文件,在user模式下允许adb功能 system/core/adb/Android.mk 4、设置... -
adb root 权限
2020-08-04 18:56:17``` adb connect 10.0.0.38 adb shell ``` 执行ls /data时报了没权限 ``` su ls /data ``` 搞定 -
MTK 6765/6739/6755/6761/6763 android9.0 user版本打开root权限(adb root权限和 apk root权限)
2019-12-23 11:42:17相比较 Android8.1 而言,9.0 的 root变得更麻烦了,因为 9.0 开始 google 启用 avb(Android Verified Boot)2.0,安全等级又提高了,可看这篇Android P(9.0) userdebug 版本执行adb remount失败,就连直接编译 user... -
Android8.0 user版本使用adb root(且不用授权adb key)
2018-09-06 09:42:11在之前的几篇adb文章中,我们清楚了adb root和adb key授权的流程。这篇文章我们我们主要分析下android8.0 上如何在user版本上adb root以及不用adb key的授权。 首先我们在adbd_main函数中将auth_required置为false...