V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
galaxy
V2EX  ›  Android

如何修改 boot.img 来加入 su ?

  •  
  •   galaxy · 2018-08-17 18:24:00 +08:00 · 10317 次点击
    这是一个创建于 2071 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我想通过 sideload 的 bootloader 来 root 手机,现在的问题是 system.img 里面没有 su,toybox 也是去掉 su 的版本。

    我现在已经通过修改 ramdisk 来加入文件,但由于 SELinux 设置,加进去的文件即使是 755,还是不能执行。

    今天尝试了mount -o loop xxx.img /system/bin,发现始终没法挂在,无论是 rc 里面加mount ext4 /bin.img /system/bin ro loop还是fstab.qcom里面加/bin.img /system/bin loop,ro wait都不行。 [可能是 rc 那加错位置了]

    有熟悉 SELinux 或者 init 的人么?麻烦帮忙看看怎么加。

    控制了 bootloader 还搞不定就太郁闷了呀……

    文件在 https://github.com/galaxy001/SugarY9

    第 1 条附言  ·  2018-08-17 19:30:41 +08:00
    现在的状态是,能修改`default.prop`加入`ro.secure=0`,加载后`adb root`正常。

    进一步获得 Root 的 shell 要怎么做?
    第 2 条附言  ·  2018-08-17 19:35:23 +08:00
    话说,system.img 是不带驱动的吧?

    是不是说,我编译一份官方 aarch64 的 Android 6.0.1,然后只刷 system.img ,拿到的就是可用的原版系统?
    第 3 条附言  ·  2018-08-19 19:50:48 +08:00

    关于boot.img,mkbootimg的源码短,改多几个755的目录很容易。

    但SELinux那边,光改文本的配置文件没用,内核启动参数添加selinux=0没用。

    mount -o loop xxx.ext4 /system/bin结果死活mount不上。

    然后我就不知道怎么办了。

    15 条回复    2018-08-21 10:31:38 +08:00
    iwtbauh
        1
    iwtbauh  
       2018-08-17 18:35:54 +08:00
    不能的,从 Android 4 的某个版本开始,zygote 使用 PR_CAPBSET_DROP drop 掉了 setuid,因此你放 su 进去是没有用的。你要么自己编译一个修补后的 aosp 用,要么用守护进程通信的方式( su 只是一个前端)。
    ysc3839
        2
    ysc3839  
       2018-08-17 18:43:37 +08:00 via Android
    直接用 Magisk 不就好了吗?
    galaxy
        3
    galaxy  
    OP
       2018-08-17 19:32:26 +08:00
    @ysc3839 Magisk 需要用 Recovery 安装,我目前的 Recovery.img 有证书验证,不知道怎么修改才能去掉。
    rrfeng
        4
    rrfeng  
       2018-08-17 19:35:07 +08:00   ❤️ 1
    @galaxy magisk 不需要 recovery

    安装 magisk app
    下载对应系统 ROM 的 boot.img ,adb push 到手机里
    magisk 里选择 install -> patch boot.img -> 选刚才 push 的 boot.img
    patch 好了之后 adb 拖下来,flashboot flash boot
    galaxy
        5
    galaxy  
    OP
       2018-08-17 19:42:06 +08:00
    @rrfenghttps://github.com/topjohnwu/Magisk/releases,只有 manager 的 apk,安装后会提示未安装 Magisk,没有其他功能。
    Tyanboot
        6
    Tyanboot  
       2018-08-17 20:54:06 +08:00 via Android
    @galaxy 所以你需要用 manager patch 一个 boot.img 然后刷。不过话说回来既然有签名验证,你是怎么刷进修改后的 boot.img
    ReVanTis
        7
    ReVanTis  
       2018-08-17 21:48:34 +08:00 via Android
    @Tyanboot 一般这种是适用于没有人 port twrp,也没有 boot 签名的机器,和 lz 的情况类似,可以自己修改 kernel 但没有 recovery
    我的疑问是为什么 recovery 有签名认证而 boot 没有…
    Tyanboot
        8
    Tyanboot  
       2018-08-17 21:57:56 +08:00 via Android
    @ReVanTis 大概是厂商忘了吧。不过我记得 rec 的结构和 boot 是一样的,都是一个内核+一个 RamDisk
    ysc3839
        9
    ysc3839  
       2018-08-17 22:32:31 +08:00
    gam2046
        10
    gam2046  
       2018-08-18 10:02:36 +08:00   ❤️ 2
    recovery 有签名验证,随便找一个第三方可用的 recovery,然后设备进入 bootloader。输入命令:

    fastboot boot recovery.img

    以 ramdisk 形式直接运行这个第三方的 recovery 即可。你原来官方的 recovery 还在。
    liuyanjun0826
        11
    liuyanjun0826  
       2018-08-19 16:58:37 +08:00 via Android
    绝对是 Recovery 的问题,我也有类似的情况
    galaxy
        12
    galaxy  
    OP
       2018-08-19 19:41:37 +08:00
    bootloader 可用用命令解锁,然后手机会提示需要 reset,然后就解锁了,可以 fastboot boot xx.img 。

    manager 的 patch 功能是不是必须联网呀?我之前担心出问题,一直没插卡也没配 wifi。
    skylancer
        13
    skylancer  
       2018-08-21 09:55:15 +08:00
    @ysc3839 不行,我试过了,单独安装 apk 根本无法使用,我都是拿另一台手机手动打打 patch
    skylancer
        15
    skylancer  
       2018-08-21 10:31:38 +08:00
    @ysc3839 就是那台机器不行
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5246 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 05:59 · PVG 13:59 · LAX 22:59 · JFK 01:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.