1
29EtwXn6t5wgM3fD 2016-12-28 23:32:57 +08:00 via iPhone
root 不是都要刷 bootloader 吗
|
2
zhihaofans 2016-12-29 02:15:03 +08:00 via Android
没解锁怎么刷
|
3
jyf007 2016-12-29 08:08:53 +08:00 via Android
没解锁不要动 boot 分区就行了。
|
4
RobertYang 2016-12-29 08:14:12 +08:00 via Android
su 的二进制文件不放到 bin 里面真的没问题?
|
5
RobertYang 2016-12-29 08:15:28 +08:00 via Android
我理解错了,你没解锁的话是刷不进去的,除非你能用官方签名给你的 ROM 签一下
|
6
ybjaychou 2016-12-29 08:50:58 +08:00 via Android
一般还得在 init.rc 里面把启动 su 服务加上
|
7
rumengzhenxing 2016-12-29 09:17:55 +08:00 via Android
解锁。🙈
|
8
tempdban 2016-12-29 09:21:24 +08:00 via Android
不,你还需要绕过 selinux,和启动 su 守护进程
|
9
makendk OP @shengyu @zhihaofans @jyf007 @RobertYang @ybjaychou @rumengzhenxing @tempdban 我是把官方的底包解压之后重新打包的,官方底包有校验,现在只能编辑 system.img ,其它的 boot.img recovery.img 之类的暂时还不能修改
解压出来的 system.img 是 ext4 格式的,我直接挂载分区修改的 请问各位大神,自己把 system.img 挂载以后修改一下文件夹权限 777 这样刷进手机还是不是 777 权限 还有 su 守护进程是添加一个自启动脚本和文件吗 能否说的具体些 SELinux 是在 bootloader 中对权限进行了限制吗,直接修改 system 分区下的文件或者文件夹权限可否完全控制文件夹 /文件? |
10
HackerOO7 2016-12-29 10:22:14 +08:00
参见 SuperSU 中 update-binary 刷机脚本中 system-mod 模式对 system 分区的处理,就明白了,改改就直接用了
|
11
makendk OP @tempdban 我想请教一下 记得之前看过说是需要把 SELinux=0 修改一下(大概是这样,记不清了)如果可能的话,这个是需要反编译 bootaloder 修改吗,还是在 system 分区下就能直接修改?
|
12
besto 2016-12-29 10:25:28 +08:00
@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 可不是拒绝读写文件这么简单了。 |
13
makendk OP @besto V 站卧虎藏龙,大神威武! 我真是可以修改 system.img 并重新打包成官方包,还没有刷机测试
我的机器官方解锁流程是, fastboot 模式下获得设备 ID (一串 32 个字符的 16 进制数据),然后在官网提交设备 ID 和 IMEI ,官方验证后会把生成的解锁 KEY (一个 1KB 的.BIN 文件)发过来,然后 fastboot 模式下刷入 bin 就成功解锁 bootloader 了 如果我能修改官方固件中的话,反编译 bootlaoder 修改一下,再刷机,是不是也就解锁 bootaloder 了 |
14
skylancer 2016-12-29 10:57:50 +08:00
我看了半天 13 楼我怎么觉得这是 HTC 的机器
|
15
besto 2016-12-29 10:59:14 +08:00
@makendk 不知道你在说啥, bootloader 不是很懂,但是反编译 bootloader 是什么鬼?
我的理解是: 默认状态下是 OEM lock 的状态+原始镜像。进入 fastboot 状态( adb shell+reboot bootloader),做 oem unlock ,然后可以烧录兼容镜像(用 Key 签名的镜像),后面就好办了。 |
17
ChangeTheWorld 2016-12-29 11:05:32 +08:00
|
18
skylancer 2016-12-29 11:06:01 +08:00
@makendk 因为你这个解锁方式几乎只有在 HTC 上出现.. LG 我也没印象有这样的解锁方式(看来 G5 才开始),所以我才觉得奇怪。另外我一般不建议动 system ,几个原因。一能 OTA ,二在有锁的情况下如果别的分区可写那还有别的方式可以 root 。比如可以直接改 boot(kernel),直接映射 /su(预先制作好 img)同时把 selinux policy 给肛了。这也是所谓 systemless root 的工作方式
|
19
makendk OP @besto 这个机器是进入 fastboot 模式刷入官方解锁文件 然后就解锁 bootlaoder 了 这样才可以刷入第三方 recovery 再在 recovery 下刷 su 解锁包或者自制的.zip 卡刷包
我意思是 直接把官方底包里面的 OEM lock 改成 OEM unlock 状态 再刷入手机,这样手机是不是就是解锁状态了,可以无限制的刷第三方 recovery |
20
besto 2016-12-29 11:25:10 +08:00
@makendk
做完 fastboot oem unlock 之后可以直接烧录所有分区(当然还会有一些检查),为何要进入 recovery 。 oem lock/unlock 的状态是在手机里,并不是原始镜像上( dm-verity 的检查倒是在 boot.img 里)。 参考这个 boot flow : https://source.android.com/security/verifiedboot/verified-boot.html 不同厂商实现不一样,很少有完全符合标准的。 |
21
makendk OP @besto 那您看我现在的条件下有什么方法 root 或者说可以获得对 system 分区的写入权限
|
22
makendk OP |
23
makendk OP @ChangeTheWorld 那都是在官方解锁 bootloader 的,只有 830 850 等版本可以解锁,大多数版本到目前为止官方不给解锁
|
24
tempdban 2016-12-30 11:53:32 +08:00 via Android
besto 已经和你解释过其中的原理了但是我并不是要你关闭 selinux
我的做法是启动时在 init.rc 里把 su 的守护进程启动,并给 selinux 规则打补丁。 具体可以研下 supersu |