Android 让adb以root的身份来运行

1. 首先安装自己手机对应的root的image, 如twrp.img

    //上传supersu 到
   adb push SuperSU-v2.79-20161211114519.zip  /mnt/sdcard/supersu.zip

   adb reboot fastboot
   //等重启好
   fastboot  flash recovery twrp-3.3.1-0-shamu.img
   

  fastboot  flash recovery twrp-3.3.1-0-shamu.img

   进入twrp的菜单,安装SuperSU-v2.79-20161211114519.zip

2. 这样可以通过su命令来取得root权限 , 但是不能adb root这样,

以下命令会提示出错,

adb root
adbd cannot run as root in production builds
adb remount
Not running as root. Try "adb root" first.

需要再替换一下adbd, 安装个termux

  找个修改版的adbd,如adbd.21.png , 下载 https://download.csdn.net/download/aerror/14122036

adb push adbd.21.png /mnt/sdcard/

 


su

stop adbd
mount -o rw,remount / /
cat /sbin/adbd > /sbin/adbd.original
chown 0.0 /sbin/adbd.original
chmod 644 /sbin/adbd.original
rm /sbin/adbd
cat /sdcard/adbd.21.png >  /sbin/adbd
chown 0.0  /sbin/adbd
chmod 0750 /sbin/adbd

cat /system/bin/sh > /sbin/adbsh
chown 0.0 /sbin/adbdsh
chmod 0750 /sbin/adbdsh

supolicy --live "permissive init_shell" \
"allow adbd adbd process setcurrent" \
"allow adbd init process dyntransition" \
"allow servicemanager { init_shell zygote } dir search" \
"allow servicemanager { init_shell zygote } file { read open }" \
"allow servicemanager { init_shell zygote } process getattr" \
"allow system_server init_shell binder { transfer call }" \
"allow zygote { servicemanager system_server } binder call" 


start adbd

成功之后:

shamu:/ # whoami                                                               
root
shamu:/ # ps  | grep adbd
root      9296  1     8628   224   poll_sched 000204f4 S /sbin/adbd

$ adb root
adbd is already running as root
$ adb remount
remount succeeded

发现重启之后不行,于是写了一个脚本adbroot放到/system/bin下面,每次重启之后在termux里执行一下:



shamu:/ # cat /system/bin/adbroot                                              
stop adbd
mount -o rw,remount /
rm /sbin/adbd
ln -s /data/local/adbd.21.png /sbin/adbd
supolicy --live "permissive init_shell" \
"allow adbd adbd process setcurrent" \
"allow adbd init process dyntransition" \
"allow servicemanager { init_shell zygote } dir search" \
"allow servicemanager { init_shell zygote } file { read open }" \
"allow servicemanager { init_shell zygote } process getattr" \
"allow system_server init_shell binder { transfer call }" \
"allow zygote { servicemanager system_server } binder call" 
start adbd

在termux每次重启后执行:

su 

adbroot

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值