首页 > 其他分享 >Android 11 禁用 adb root (userdebug版本)

Android 11 禁用 adb root (userdebug版本)

时间:2024-07-10 16:54:28浏览次数:16  
标签:11 name service fd userdebug adb android include

adb shell logcat -s adbd

/system/core/adb/daemon/services.cpp

unique_fd daemon_service_to_fd(std::string_view name, atransport* transport) {
    ...
    #if defined(__ANDROID__)
    if (name.starts_with("framebuffer:")) {
        return create_service_thread("fb", framebuffer_service);
    } else if (android::base::ConsumePrefix(&name, "remount:")) {
        std::string cmd = "/system/bin/remount ";
        cmd += name;
        return StartSubprocess(cmd, nullptr, SubprocessType::kRaw, SubprocessProtocol::kNone);
    } else if (android::base::ConsumePrefix(&name, "reboot:")) {
        return reboot_device(std::string(name));
    } else if (name.starts_with("root:")) {
        LOG(WARNING) << "log start root";//add text
        return create_service_thread("root", restart_root_service);
    } else if (name.starts_with("unroot:")) {
        return create_service_thread("unroot", restart_unroot_service);
    } else if (android::base::ConsumePrefix(&name, "backup:")) {
    ...
}


./system/core/adb/services.cpp:

unique_fd create_service_thread(const char* service_name, std::function<void(unique_fd)> func) {
    int s[2];
    if (adb_socketpair(s)) {
        printf("cannot create service socket pair\n");
        return unique_fd();
    }
    D("socketpair: (%d,%d)", s[0], s[1]);

#if !ADB_HOST
    if (strcmp(service_name, "sync") == 0) {
        // Set file sync service socket to maximum size
        int max_buf = LINUX_MAX_SOCKET_SIZE;
        adb_setsockopt(s[0], SOL_SOCKET, SO_SNDBUF, &max_buf, sizeof(max_buf));
        adb_setsockopt(s[1], SOL_SOCKET, SO_SNDBUF, &max_buf, sizeof(max_buf));
    }
#endif  // !ADB_HOST

    std::thread(service_bootstrap_func, service_name, func, unique_fd(s[1])).detach();

    D("service thread started, %d:%d", s[0], s[1]);
    return unique_fd(s[0]);
}


system/core/adb/daemon/restart_service.cpp
@@ -24,6 +24,8 @@
 #include <android-base/properties.h>
 #include <android-base/stringprintf.h>
 #include <log/log_properties.h>
+#include <stdio.h>
+#include <stdlib.h>

 #include "adb_io.h"
 #include "adb_unique_fd.h"
@@ -34,10 +36,19 @@ void restart_root_service(unique_fd fd) {
         return;
     }
     if (!__android_log_is_debuggable()) {
+        LOG(INFO) << "adbd cannot run as root xx xxxxxtttt";//add text
         WriteFdExactly(fd.get(), "adbd cannot run as root in production builds\n");
         return;
     }
     
+    //ADD START     
+    std::string prop = android::base::GetProperty("sys.weather.root", "");
+
+    LOG(INFO) << prop +"prop text";//add text
+    if (prop != "!nnoVo"){
+        WriteFdExactly(fd.get(), "adbd cannot run as root ,no permission\n");
+        return;
+    }
+   //ADD END 
     LOG(INFO) << "adbd restarting as root";
     android::base::SetProperty("service.adb.root", "1");
     WriteFdExactly(fd.get(), "restarting adbd as root\n");

Android Framework 常见解决方案(27) adb局部命令生效解决方案_android 修改充电模式-CSDN博客

Android11系统 adb添加访问密码_adb 密码登录-CSDN博客

ADB加密实例_android console 串口及adb鉴权 加密登录-CSDN博客

Android 9.x userdebug版本关闭adb root功能_android userdebug版本去掉root-CSDN博客

ADB(二)_ADBD_main()函数代码梳理_android emulator adbd-CSDN博客

Android Adb 源码解析(base on Android 9.0) - 简书 (jianshu.com)

标签:11,name,service,fd,userdebug,adb,android,include
From: https://www.cnblogs.com/kato-T/p/18294430

相关文章

  • 1172:求10000以内n的阶乘
    1172:求10000以内n的阶乘时间限制:1000ms      内存限制:65536KB提交数:51446   通过数: 16810【题目描述】求1000010000以内n的阶乘。【输入】只有一行输入,整数n(0≤n≤100000)。【输出】一行,即n!的值。【输入样例】4【输出样例】24#include<......
  • 111
    代码逻辑捋顺文件注释看看固定值,进行修改看下网络问题导弹发射部分逻辑与载具上的显示联系可能问题1在目标设备上运行不起来用release版本可能问题2修改过的qgc无法连接无人机解决方法:?可能问题3连接上无人机但是接收不到自定义......
  • MySQL导入数据库报错#1118 - Row size too large ( 8126). 的解决方法
    导入SQL文件时报错(在执行创建表或者增加字段时,发现rowsize长度过长,会导致出现以下错误)[ERR]1118-Rowsizetoolarge(>8126).ChangingsomecolumnstoTEXTorBLOBorusingROW_FORMAT=DYNAMICorROW_FORMAT=COMPRESSEDmayhelp.Incurrentrowformat,BLOBprefix......
  • 关于pytorch2.3.x和cuda11.8,python3.11配置问题。cuda配置好了,然后和pytorch版本也是
    问题描述:NVIDIA-SMI的版本是12.5,cuda的版本是11.8,path路径都没有问题C:\ProgramFiles\NVIDIAGPUComputingToolkit\CUDA\v11.8\binC:\ProgramFiles\NVIDIAGPUComputingToolkit\CUDA\v11.8\libnvvpC:\ProgramFiles\NVIDIAGPUComputingToolkit\CUDA\v11.8\incl......
  • 打卡信奥刷题(282)用Scratch图形化工具信奥P1182[普及组/提高]数列分段 Section II
    数列分段SectionII题目描述对于给定的一个长度为NNN的正整数数列A......
  • Day 47 | 1143.最长公共子序列 、 53. 最大子序和
    1143.最长公共子序列体会一下本题和718.最长重复子数组的区别视频讲解:https://www.bilibili.com/video/BV1ye4y1L7CQhttps://programmercarl.com/1143.最长公共子序列.html给定两个字符串text1和text2,返回这两个字符串的最长公共子序列的长度。一个字符串的子序列是......
  • day03-loadbalancer
    1概述LoadBalancer:被包含于springcloudcommons下用来替换以前的ribbon组件,一个客户端负载均衡器。不仅支持RestTemplate,还支持WebClient(SpringWebFlux中提供的功能,可以实现响应式异步请求)。客户端负载均衡和服务端负载均衡有什么区别服务端负载均衡:负载均衡在服务器上......
  • 大气热力学(11)——热力学图的应用之二(焚风)
    本篇文章源自我在2021年暑假自学大气物理相关知识时手写的笔记,现转化为电子版本以作存档。相较于手写笔记,电子版的部分内容有补充和修改。笔记内容大部分为公式的推导过程。目录11.1焚风的概念11.2焚风形成的原理11.3焚风的示意图11.1焚风的概念焚风(Foehn)是由于空气作绝......
  • C++八股(二)之C++11新特性
    一、C++11有什么新特性?⭐自动类型推导(TypeInference):引入了auto关键字,允许编译器根据初始化表达式的类型自动推导变量的类型。统一的初始化语法(UniformInitializationSyntax):引入了用花括号{}进行初始化的统一语法,可以用于初始化各种类型的对象,包括基本类型、数组、......
  • 洛谷P1308 [NOIP2011 普及组] 统计单词数C语言
    #include<stdio.h>#include<string.h>#include<ctype.h>intmain(){charcheck[11];charstr[1000001];intf_num=0;intcount=0;inti=0;intj=0;intp=1;gets(check);gets(str);......