当前位置: 首页 > article >正文

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

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-precise
 ifeq ($(strip $(BUILD_WITH_UMS)),true)
 PRODUCT_PROPERTY_OVERRIDES +=               \
     ro.factory.hasUMS=true                  \
-    persist.sys.usb.config=mass_storage,adb
+    persist.sys.usb.config=hid
 
 PRODUCT_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=1
 PRODUCT_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 rknn
 PRODUCT_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 AlertActivity
         String 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.kler.cn/a/504324.html

相关文章:

  • Java 0114学习总结
  • 1. npm 常用命令详解
  • Windows核心编程—匿名管道双向通信
  • 昵称 校验
  • AI浪潮下的IT变革之路:机遇、挑战与重塑未来
  • Spring——依赖注入之p命名空间和c命名空间
  • 集中式架构vs分布式架构
  • 【硕博研究生国际会议推荐(可线上)】方向涵盖电子信息、人工智能、能源利用、自动化、数据处理、信息化经济、管理、智慧城市、公共交通、计算机视觉...
  • 数据结构和算法-07平衡二叉树-01
  • 《拉依达的嵌入式\驱动面试宝典》—Linux篇(六)_Linux驱动编程
  • pytest-instafail:让测试失败信息即时反馈
  • 【PyQt】通过load ui来实现菜单栏
  • burpsiute的基础使用(2)
  • 如何通过高防服务隐藏服务器源IP
  • 【docker下载kaggle国外镜像超时】kaggle比赛中时遇到的问题
  • 《深度剖析算法优化:提升效率与精度的秘诀》
  • 在Alpine这小破车里塞进Nginx?
  • 【Spring Boot 应用开发】-04-01 自动配置-数据源-连接池
  • Vue语音播报功能
  • 模拟退火算法在Matlab中的两个应用案例及代码
  • MYSQL5.7 全文检索中文无返回数据
  • MySQL 日志:undo log、redo log、binlog 有什么用?
  • 软件工程和项目管理领域 - CMMI 极简理解
  • 【C#设计模式(23)——模板方法模式(Template Method Pattern)】
  • toJSON使用中遇到的问题
  • c语言 --- 字符串