Rk3568 Andorid 11 新增adb检测,只有使用客户私钥的设备才能链接adb

devtools/2025/1/17 3:29:02/

adbadb_3">Rk3568 Andorid 11 新增adb检测,只有使用客户私钥的设备才能链接adb

问题描述

在进行Rk3568 Android 11 的定制中 遇到一个安全类的问题,客户需要管理用户使用adb,只有使用指定公私钥的设备才能链接adb,防止设备被私自修改文件或滥用。

最终修改的文件是在

device/rockchip/common/device.mk
frameworks/base/packages/SystemUI/src/com/android/systemui/usb/UsbDebuggingActivity.java

新增文件

//为客户提供的公钥
device/rockchip/common/adbkey.pub

解决思路

首先让客户将其电脑下的公私钥提供给我们,然后再mk文件中将ro.adb.secure=1 把adb校验机制打开,然后将客户提供的adbkey.pub复制到根目录下名字改为adb_keys,但是这样会有一个问题,打开校验之后会有一个弹窗,如果点击了是的话 会将电脑的adbkey保存到设备中,会更新我们复制进去的key,导致每个电脑只要点击了确定之后都会可以连接,所以我们要将这个弹窗给去掉,并且默认不给予同意。

修改方案如下

diff --git a/device/rockchip/common/device.mk b/device/rockchip/common/device.mk
index b89552c4d2..7930b7add2 100644
--- a/device/rockchip/common/device.mk
+++ b/device/rockchip/common/device.mk
@@ -764,7 +764,7 @@ PRODUCT_TAGS += dalvik.gc.type-preciseifeq ($(strip $(BUILD_WITH_UMS)),true)PRODUCT_PROPERTY_OVERRIDES +=               \ro.factory.hasUMS=true                  \
-    persist.sys.usb.config=mass_storage,adb
+    persist.sys.usb.config=hidPRODUCT_COPY_FILES += \$(LOCAL_PATH)/init.rockchip.hasUMS.true.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/hw/init.$(TARGET_BOARD_HARDWARE).environment.rc
@@ -773,7 +773,7 @@ ifeq ($(strip $(BUILD_WITH_CDROM)),true)PRODUCT_PROPERTY_OVERRIDES +=                 \ro.factory.hasUMS=cdrom                   \ro.factory.cdrom=$(BUILD_WITH_CDROM_PATH) \
-    persist.sys.usb.config=hid,mass_storage,adb 
+    persist.sys.usb.config=hid PRODUCT_COPY_FILES += \$(LOCAL_PATH)/init.rockchip.hasCDROM.true.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/hw/init.$(TARGET_BOARD_HARDWARE).environment.rc
@@ -1483,9 +1483,10 @@ PRODUCT_PROPERTY_OVERRIDES += sys.mouse.presentation=1-
+PRODUCT_PROPERTY_OVERRIDES += ro.adb.secure=1PRODUCT_COPY_FILES += \
-     $(LOCAL_PATH)/display_settings.xml:$(TARGET_COPY_OUT_VENDOR)/etc/display_settings.xml
+     $(LOCAL_PATH)/display_settings.xml:$(TARGET_COPY_OUT_VENDOR)/etc/display_settings.xml \
//将客户提供的公钥copy到设备根目录
+      $(LOCAL_PATH)/adbkey.pub:root/adb_keys# build libmpimmz for rknnPRODUCT_PACKAGES += \
diff --git a/frameworks/base/packages/SystemUI/src/com/android/systemui/usb/UsbDebuggingActivity.java b/frameworks/base/packages/SystemUI/src/com/android/systemui/usb/UsbDebuggingActivity.java
index b1241b160d..30ae85f32c 100644
--- a/frameworks/base/packages/SystemUI/src/com/android/systemui/usb/UsbDebuggingActivity.java
+++ b/frameworks/base/packages/SystemUI/src/com/android/systemui/usb/UsbDebuggingActivity.java
@@ -78,7 +78,7 @@ public class UsbDebuggingActivity extends AlertActivityString fingerprints = intent.getStringExtra("fingerprints");mKey = intent.getStringExtra("key");-        if (fingerprints == null || mKey == null) {
//将弹窗默认直接关闭
+        if (fingerprints == null || mKey == null || true) {finish();return;}

最终效果

修改完之后,使用adb shell 连接设备会有以下报错,将不能连接
在这里插入图片描述

将客户提供的公私钥内置到我的电脑上之后的效果,公私钥保存在一般是保存在C:\Users\用户名.android下,我们将其替换之后
在这里插入图片描述
将客户的key替换到上述目录之后的效果
在这里插入图片描述

总结

在这个问题的处理阶段中,我是先去了解adb验证机制,然后在原生的验证机制内修改部分,然后达到自己想要的效果。

每日赠言

马上就要过年了,祝大家蛇年大吉,新的一年工作顺利,身体健康。


http://www.ppmy.cn/devtools/151158.html

相关文章

深入学习 Python 量化编程

深入学习 Python 量化编程 第一章:Python 基础与量化编程环境搭建 1.1 安装必要的库 首先,你需要安装一些在量化编程中常用的 Python 库。可以通过以下命令安装这些库: pip install numpy pandas matplotlib yfinance backtrader scikit-…

【大数据】机器学习------决策树

一、基本流程 决策树是一种基于树结构的分类和回归方法,它通过对特征空间进行划分,每个内部节点表示一个特征测试,每个分支代表一个测试输出,每个叶节点代表一个类别或回归值。 特征选择:根据某种准则(如信…

利用开源AI智能名片2+1链动模式S2B2C商城小程序拓展社交电商的深度实践探索

摘要:在数字化浪潮席卷全球的今天,社交电商作为一种新兴的商业模式,正以前所未有的速度改变着消费者的购物习惯与商家的营销策略。本文深入探讨了开源AI智能名片21链动模式S2B2C商城小程序在社交电商领域的应用,通过分析其核心机制…

PHP 字符串

PHP 字符串 引言 在 PHP 中,字符串是一种非常基础且重要的数据类型。字符串可以包含字母、数字、标点符号以及特殊字符。PHP 提供了丰富的字符串函数,使得字符串操作变得简单而高效。本文将详细介绍 PHP 中字符串的常用操作,包括字符串的创…

Java在云计算中的应用:Java的秘密云基地

Java在云计算领域的应用非常广泛,它以其跨平台性、强大的生态系统和安全性成为了构建云服务的重要工具。以下是Java在云计算中的一些关键应用和优势: 1. 微服务架构 Java特别是Spring Boot框架,为开发微服务提供了强大支持。通过微服务架构&…

基于当前最前沿的前端(Vue3 + Vite + Antdv)和后台(Spring boot)实现的低代码开发平台

项目是一个基于当前最前沿的前端技术栈(Vue3 Vite Ant Design Vue,简称Antdv)和后台技术栈(Spring Boot)实现的低代码开发平台。以下是对该项目的详细介绍: 一、项目概述 项目名称:lowcode-s…

uniapp 预加载分包,减少loading

在 uniapp 中,可以通过配置 pages.json 文件中的 preloadRule 属性来实现页面预加载功能。以下是具体操作步骤: 1. 在 pages.json 中配置 preloadRule preloadRule 用于指定哪些页面需要预加载,以及预加载时机。下面是一个示例配置&#xf…

type 属性的用途和实现方式(图标,表单,数据可视化,自定义组件)

1.图标类型 <uni-icon>组件中&#xff0c;type可以用来指定图标的不同样式。 <uni-icons type"circle" size"30" color"#007aff"></uni-icons> //表示圆形 <uni-icons type"square" size"30" co…