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
在这里插入图片描述

3.修改vendor/aw/public/prebuild/bin/tools/tools.mk
在这里插入图片描述
*将ckp.sh脚本编译到系统镜像文件,最终会在/system/bin/下生成ckp.sh

4.给ckp.sh添加权限,修改system/core/rootdir/init.rc
在这里插入图片描述
里是开机流程,会自动给ckp.sh文件添加777权限

5.添加配置参数,修改device/softwinner/a40-p1/a40_p1.mk
在这里插入图片描述
persist.zonecare.adb.ckp为0时,adb shell校验密码,反之则直接进入终端
persist.zonecare.adb.pwd鉴权密码:默认admin,可修改。

6.修改system/core/adb/shell_service.cpp
在这里插入图片描述

效果:

在这里插入图片描述
其他平台思路也应该差不多,在/system/bin目录下生成可执行脚本,在shell进终端前执行脚本,校验成功后当前子进程执行/system/bin/sh

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值