求教安卓高手 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
makendk

求教安卓高手

  •  
  •   makendk Dec 28, 2016 13466 views
    This topic created in 3406 days ago, the information mentioned may be changed or developed.
    我想制作一个 root 的 ROM 包
    是不是直接把 SU 二进制文件和 SU.APK 放入相应目录就行了, boot 中是不是还有别的的限制? Android 6.0 的系统,没有解锁 BootLoader
    24 replies    2016-12-30 11:53:32 +08:00
    29EtwXn6t5wgM3fD
        1
    29EtwXn6t5wgM3fD  
       Dec 28, 2016 via iPhone
    root 不是都要刷 bootloader 吗
    zhihaofans
        2
    zhihaofans  
       Dec 29, 2016 via Android
    没解锁怎么刷
    jyf007
        3
    jyf007  
       Dec 29, 2016 via Android
    没解锁不要动 boot 分区就行了。
    RobertYang
        4
    RobertYang  
       Dec 29, 2016 via Android
    su 的二进制文件不放到 bin 里面真的没问题?
    RobertYang
        5
    RobertYang  
       Dec 29, 2016 via Android
    我理解错了,你没解锁的话是刷不进去的,除非你能用官方签名给你的 ROM 签一下
    ybjaychou
        6
    ybjaychou  
       Dec 29, 2016 via Android
    一般还得在 init.rc 里面把启动 su 服务加上
    rumengzhenxing
        7
    rumengzhenxing  
       Dec 29, 2016 via Android
    解锁。
    tempdban
        8
    tempdban  
       Dec 29, 2016 via Android
    不,你还需要绕过 selinux,和启动 su 守护进程
    makendk
        9
    makendk  
    OP
       Dec 29, 2016 via Android
    @shengyu @zhihaofans @jyf007 @RobertYang @ybjaychou @rumengzhenxing @tempdban 我是把官方的底包解压之后重新打包的,官方底包有校验,现在只能编辑 system.img ,其它的 boot.img recovery.img 之类的暂时还不能修改
    解压出来的 system.img 是 ext4 格式的,我直接挂载分区修改的
    请问各位大神,自己把 system.img 挂载以后修改一下文件夹权限 777 这样刷进手机还是不是 777 权限
    还有 su 守护进程是添加一个自启动脚本和文件吗 能否说的具体些
    SELinux 是在 bootloader 中对权限进行了限制吗,直接修改 system 分区下的文件或者文件夹权限可否完全控制文件夹 /文件?
    8rB61FLBPVSxW2C8
        10
    8rB61FLBPVSxW2C8  
       Dec 29, 2016
    参见 SuperSU 中 update-binary 刷机脚本中 system-mod 模式对 system 分区的处理,就明白了,改改就直接用了
    makendk
        11
    makendk  
    OP
       Dec 29, 2016 via Android
    @tempdban 我想请教一下 记得之前看过说是需要把 SELinux=0 修改一下(大概是这样,记不清了)如果可能的话,这个是需要反编译 bootaloder 修改吗,还是在 system 分区下就能直接修改?
    besto
        12
    besto  
       Dec 29, 2016
    @makendk
    你确定能改 system.img ? 如果有 dm-verity , system.img 是要靠 boot.img 里的东西去验证的,改了就对不上了。
    其实这是一个信任链的关系, bootloader 保证 boot.img 的正确性, boot.img 保证 system.img 的正确性。

    system.img 改 777 是能保存的。

    有 SU 不代表 ROOT 了这个系统,用 AOSP 的 code 非 user 模式下编译出来的镜像都是带有 su 工具的,只是能通过 adb shell 或是串口敲个 su 进 root 罢了,系统本身并不是 root 状态。

    SELinux 解释起来比较复杂,简单说关闭 SELinux 必须需要改到 bootloader (有 cmdline 给 android 的),或是 boot.img(SELinux 的 enable 在 init 里)。 SELinux 本身就是为了限制 root 而生的,这是一种 MAC 的机制,改成 777 只能过 DAC 检查。另外 SELinux 可不是拒绝读写文件这么简单了。
    makendk
        13
    makendk  
    OP
       Dec 29, 2016 via Android
    @besto V 站卧虎藏龙,大神威武! 我真是可以修改 system.img 并重新打包成官方包,还没有刷机测试

    我的机器官方解锁流程是, fastboot 模式下获得设备 ID (一串 32 个字符的 16 进制数据),然后在官网提交设备 ID 和 IMEI ,官方验证后会把生成的解锁 KEY (一个 1KB 的.BIN 文件)发过来,然后 fastboot 模式下刷入 bin 就成功解锁 bootloader 了
    如果我能修改官方固件中的话,反编译 bootlaoder 修改一下,再刷机,是不是也就解锁 bootaloder 了
    skylancer
        14
    skylancer  
       Dec 29, 2016
    我看了半天 13 楼我怎么觉得这是 HTC 的机器
    besto
        15
    besto  
       Dec 29, 2016
    @makendk 不知道你在说啥, bootloader 不是很懂,但是反编译 bootloader 是什么鬼?
    我的理解是:
    默认状态下是 OEM lock 的状态+原始镜像。进入 fastboot 状态( adb shell+reboot bootloader),做 oem unlock ,然后可以烧录兼容镜像(用 Key 签名的镜像),后面就好办了。
    makendk
        16
    makendk  
    OP
       Dec 29, 2016 via Android
    @skylancer LG G5
    很多安卓都是这样解锁吧 也有些是一条命令搞定的
    ChangeTheWorld
        17
    ChangeTheWorld  
       Dec 29, 2016
    skylancer
        18
    skylancer  
       Dec 29, 2016
    @makendk 因为你这个解锁方式几乎只有在 HTC 上出现.. LG 我也没印象有这样的解锁方式(看来 G5 才开始),所以我才觉得奇怪。另外我一般不建议动 system ,几个原因。一能 OTA ,二在有锁的情况下如果别的分区可写那还有别的方式可以 root 。比如可以直接改 boot(kernel),直接映射 /su(预先制作好 img)同时把 selinux policy 给肛了。这也是所谓 systemless root 的工作方式
    makendk
        19
    makendk  
    OP
       Dec 29, 2016 via Android
    @besto 这个机器是进入 fastboot 模式刷入官方解锁文件 然后就解锁 bootlaoder 了 这样才可以刷入第三方 recovery 再在 recovery 下刷 su 解锁包或者自制的.zip 卡刷包
    我意思是 直接把官方底包里面的 OEM lock 改成 OEM unlock 状态
    再刷入手机,这样手机是不是就是解锁状态了,可以无限制的刷第三方 recovery
    besto
        20
    besto  
       Dec 29, 2016
    @makendk
    做完 fastboot oem unlock 之后可以直接烧录所有分区(当然还会有一些检查),为何要进入 recovery 。
    oem lock/unlock 的状态是在手机里,并不是原始镜像上( dm-verity 的检查倒是在 boot.img 里)。
    参考这个 boot flow :
    https://source.android.com/security/verifiedboot/verified-boot.html

    不同厂商实现不一样,很少有完全符合标准的。
    makendk
        21
    makendk  
    OP
       Dec 29, 2016 via Android
    @besto 那您看我现在的条件下有什么方法 root 或者说可以获得对 system 分区的写入权限
    makendk
        22
    makendk  
    OP
       Dec 29, 2016 via Android
    @skylancer G5 的 fastboot 模式下只有重启,刷入解锁文件,读取设备 ID 三个选项,而且应该不能刷入 boot.img 吧

    但是你提到的这个方法能具体点吗,我还是想研究一下
    makendk
        23
    makendk  
    OP
       Dec 29, 2016 via Android
    @ChangeTheWorld 那都是在官方解锁 bootloader 的,只有 830 850 等版本可以解锁,大多数版本到目前为止官方不给解锁
    tempdban
        24
    tempdban  
       Dec 30, 2016 via Android
    besto 已经和你解释过其中的原理了但是我并不是要你关闭 selinux
    我的做法是启动时在 init.rc 里把 su 的守护进程启动,并给 selinux 规则打补丁。
    具体可以研下 supersu
    About     Help     Advertise     Blog     API     FAQ     Solana     5783 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 68ms UTC 07:35 PVG 15:35 LAX 00:35 JFK 03:35
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86