liwugang / liwugang.github.io

blog
https://liwugang.github.io/
MIT License
1 stars 2 forks source link

Magisk 环境下增加 adb root 功能 - liwugang #37

Open liwugang opened 3 years ago

liwugang commented 3 years ago

https://liwugang.github.io/2021/07/11/magisk_enable_adbr_root.html

目前市面上的 Android 手机,要想获取 root 权限,主要有两种方式: 通过官方提供的途径,如小米的开发版,会提供官方 root 能力,但是相对比较麻烦。首先需要解锁,然后需要申请开发者权限,最后在手机上进行 root 升级; 通过解锁手机的 BL(bootloader) 锁,然后使用 magisk ...

liwugang commented 1 year ago

有些机型需要修改 BootLoader 为已解锁状态,增加下面命令:

resetprop ro.boot.verifiedbootstate orange

即完整脚本为:

#!/system/bin/sh
su -c "resetprop ro.debuggable 1"
su -c "resetprop ro.boot.verifiedbootstate orange" # 修改解锁状态
su -c "resetprop service.adb.root 1" # 减少调用 adb root
su -c "magiskpolicy --live 'allow adbd adbd process setcurrent'" # 配置缺少的权限
su -c "magiskpolicy --live 'allow adbd su process dyntransition'" # 配置缺少的权限
su -c "magiskpolicy --live 'permissive { su }'" # 将 su 配置为 permissive,防止后续命令执行缺少权限
su -c "pkill -9 adbd" # 杀掉 adbd
ruthless2012 commented 1 year ago

大佬,想问一下有没有遇到过adb remount后报错的问题呢/system/bin/sh: remount: inaccessible or not found 整个过程是这样的:

  1. 我在装系统证书抓包,然后遇到第一个报错
    mount -o rw,remount /system
    mount: '/system' not in /proc/mounts
  2. 执行
    mount -o rw,remount /

    遇到第二个报错

    '/dev/block/dm-0' is read-only
  3. 后来我就按照您的方法root成功了,再之后执行
    ~/Desktop » adb root
    adbd is already running as root
    ~/Desktop » adb disable-verity
    verity is already disabled

    接着remount就报错了

    ~/Desktop » adb remount
    /system/bin/sh: remount: inaccessible or not found

    想问下这是什么原因呢,非常感谢🙏

liwugang commented 1 year ago

~/Desktop » adb remount /system/bin/sh: remount: inaccessible or not found

那这个可能是系统中没有remount可执行文件,我这边没有遇到过。 如果只是放置证书,其实可以使用magisk 模块 https://github.com/NVISOsecurity/MagiskTrustUserCerts, 若是修改其他文件,可以写个类似magisk模块进行修改

ys1231 commented 1 year ago

大佬 关于权限处理这一段,有点没有搞明白的地方, 查看是缺少 SELinux 权限 这里: 这两条错误信息是在哪里看见的呢 ?

[ 5252.630174] type=1400 audit(1626010790.323:6145): avc: denied { setcurrent } for comm="adbd" scontext=u:r:adbd:s0 tcontext=u:r:adbd:s0 tclass=process permissive=1
[ 5252.630353] type=1400 audit(1626010790.323:6146): avc: denied { dyntransition } for comm="adbd" scontext=u:r:adbd:s0 tcontext=u:r:su:s0 tclass=process permissive=1

我通过 adb logcat 和 dmesg 都没有看见 或者是怎么触发的呢 我尝试 adb root 并没有看见错误信息 还有 缺少下面权限: allow adbd self:process setcurrent; allow adbd su:process dyntransition; 这里也没有看懂 想搞懂这些需要具备哪些知识呢? 期待回复

linuxxx commented 1 week ago

执行一下命令报错: adb shell am start -n com.android.chrome/com.google.android.apps.chrome.Main cmd: Failure calling service activity: Failed transaction (2147483646)