Android N(全志平台A40i)添加adb登录密码

需求:

在adb shell登录终端时加入鉴权密码,鉴权开关可配置且密码可修改
问题分析:
见下文Android N:adb及adbd源码分析
解决方案:

思路:pc上终端输入adb shell命令后,实际上是adbd守护进程fork出的子进程来执行/bin/sh,adbd监听usb/tcp输入执行命令,并通过socket将结果回显到pc。
那么我们解决该问题的方法就是在执行/bin/sh之前加入我们的校验脚本。

1.在/vendor/aw/public/prebuild/bin/tools下新建ckp.sh:

#!/system/bin/sh
sys_pwd=$(getprop persist.zonecare.adb.pwd)
if [ -z "$sys_pwd" ];then
  sys_pwd="admin"
fi
echo "Enter your pwd:"
while :
do
  read -r PASSWORD
  if [[ $PASSWORD == $sys_pwd ]];then
    break
  else
    echo "please try again:"
  fi
done
echo "success!!"
exec /system/bin/sh

2.修改vendor/aw/public/prebuild/bin/tools/Android.mk
Android N(全志平台A40i)添加adb登录密码_第1张图片

3.修改vendor/aw/public/prebuild/bin/tools/tools.mk
Android N(全志平台A40i)添加adb登录密码_第2张图片
*将ckp.sh脚本编译到系统镜像文件,最终会在/system/bin/下生成ckp.sh

4.给ckp.sh添加权限,修改system/core/rootdir/init.rc
Android N(全志平台A40i)添加adb登录密码_第3张图片
里是开机流程,会自动给ckp.sh文件添加777权限

5.添加配置参数,修改device/softwinner/a40-p1/a40_p1.mk
Android N(全志平台A40i)添加adb登录密码_第4张图片
persist.zonecare.adb.ckp为0时,adb shell校验密码,反之则直接进入终端
persist.zonecare.adb.pwd鉴权密码:默认admin,可修改。

6.修改system/core/adb/shell_service.cpp
Android N(全志平台A40i)添加adb登录密码_第5张图片

效果:

Android N(全志平台A40i)添加adb登录密码_第6张图片
其他平台思路也应该差不多,在/system/bin目录下生成可执行脚本,在shell进终端前执行脚本,校验成功后当前子进程执行/system/bin/sh

你可能感兴趣的:(android,adb)