注:本文并非教程!如果你想照着操作,请仔细考虑自己在做什么!本文不适合对Android研究毫无基础的人试验!

昨天我入手了一台诺基亚7当天就把bootloader解锁了。我当时还强调,没有去申请解锁码。这并非愚人节玩笑。

那么这是怎么做到的呢?大概讲一讲我的过程。

重新阐述一下我之前电报的动态,本次解锁利用了三个漏洞:
1、售后提权刷机命令(从Android 8.0 更新起提权命令发生变化,更加复杂)
2、原厂固件提取出来的维护用Bootloader
3、可以使用EDL线进入高通紧急下载模式 (从Android 8.0 更新起仅有原型机仍然能使用EDL线)

将以上三个漏洞综合起来利用,就得到了这样的结果。

只要满足条件,理论上讲这套方案也适用于运行 Android 7.1 的夏普 AQUOS S2、诺基亚 6 第二代、诺基亚 8。

第一部分:准备工作

首先,为了确保漏洞 1 和 3 能够被正常利用,请确保你的手机正在运行 Android 7.1 固件,最好能和你手上的固件版本匹配上。
如果已经被升级到了 Android 8.0,请寻求售后支持对你的手机进行刷机,至于降级的借口其实很简单,这里不做过多介绍。
手头要准备解包好的出厂固件(nb0格式),你可以使用改良后的nb0-utils.jar进行解包,具体解包命令这个请各位自行搜索了解。

第二部分:修改 deviceinfo

FIH 生产的手机普遍具有 deviceinfo 和 sutinfo 两个分区。在未解锁的前提下修改此分区,你有这些方法:
1、利用高通紧急下载模式
2、拆卸 EMMC 进入 Mass Storage 模式

显然第二种方式的实现难度很高,没有很强的动手能力是办不到的。
但是,运行 Android 7.1 的诺基亚7仍然可以借助 EDL 线进入高通紧急下载模式。
进入此模式之后,你需要借助高通的工具 QFIL 的分区管理功能,提取 deviceinfo 分区的数据。
提取出来的文件位于 %AppData%\Qualcomm\QFIL\COMPORT_XX。

提取出来之后,请使用任何你熟悉的十六进制编辑器打开提取出来的镜像,跳转到偏移量0x00005101,将这个地方的数值修改为FF,然后将修改后的镜像保存,用 QFIL 回写回去。

提示:如果不方便使用 EDL 线,设法加载维护用 bootloader 并提权之后,可使用 fastboot oem reboot-edl 命令进入高通紧急下载模式。
请只使用你自己的 deviceinfo,并随时做好备份!

第三部分:刷写入维护用 Bootloader

前面我们解包nb0之后可以得到维护用Bootloader。维护用Bootloader单独使用一个压缩包压缩,解压密码是WLBGFIH123。
借助售后刷机工具 OST LA,你可以轻易地进入 Fastboot 模式。
前面的神秘代码,其实就是你的手机序列号的 md5 校验值。这是从诺基亚 6 第一代升级到 8.0 之后试图降级从日志发现的秘密。
那么输入这个命令:
fastboot devices

会得到形如这样的输出结果:

List of devices attached
C1NGAC0123456789 device

前面这个C1NGAC0123456789就是你手机的序列号。参考此前的诺基亚 6 第一代 root 视频教程,你需要自行去网站计算 md5 校验值。
计算出来之后执行这个命令,你的手机就完成了一个阶段的提权。
在原始状态的 bootloader 下执行此命令:
fastboot oem dm-verity 神秘代码

执行完成之后,原始状态下的 Bootloader 就获得了刷入 aboot 分区 (对于 A-Only 分区布局机型) 或 abl 和 xbl 分区 (对于 AB 双分区布局机型,例如这里的诺基亚7)的权限。

Android 8.0 起,如需提权,软件本身的原理是先要使用 OST LA 附带的 fastboot 执行这个命令获取 challenge UID:
fastboot oem dm-veracity

得到这个UID之后,软件会通过FIH服务器获得一个256字节的提权密钥,实际上是通过这种方式刷入的:
fastboot flash veracity veracity.bin

此命令效果就和上述提到的命令等效。

总之提权完成之后,刷入维护用 bootloader:
fastboot flash abl_a C1N-0-0430-abl_service.elf
fastboot flash xbl_a C1N-0-0430-xbl_service.elf
fastboot reboot-bootloader

接下来你的手机就会以维护用 bootloader 的状态运行。

第四部分:解锁 Bootloader

在这之前,请一定要将数据备份好。我因为是刚买来不久,并不需要备份。
请检查开发者选项的允许 OEM 解锁是否被开启。

重新进入 Fastboot 模式,执行这两个命令:
fastboot oem dm-verity 神秘代码
fastboot flashing unlock_critical

接下来你就会看到屏幕上有提示,告诉你解锁之后会发生什么,自行选择确定即可。
手机将会自动重启进 recovery 模式恢复一遍出厂设置。

接着请重新进入 Fastboot 模式,再次执行这两个命令:
fastboot oem dm-verity 神秘代码
fastboot oem unlock-go

你仍然会看到屏幕上出现提示,继续操作,手机将会自动重启进 recovery 模式再恢复一遍出厂设置。
这次屏幕上确实就出现了解锁提示。

这个时候对于 AB 双分区布局机型,因为 Bootloader 和原始的 Bootloader 不匹配了,更新系统可能会失败。
因为你已经完成了诺基亚 7 的彻底解锁,所以接下来你要做的仅仅就是刷回原始 abl 和 xbl。

恢复回原始系统状态之后,你就可以安装后续OTA更新了。
不用担心,即便更新到了后面的 Android 8.1,解锁所需的漏洞会被封堵,但解锁状态依然还在,不要手贱回锁就是了。

特别感谢XDA-Developers 的 @the_laser 为这次试验带来了动力,@heineken78 提供了一些技术性的细节!

最后说明:
未经本人允许,请勿将本文转载至除了 XDA-Developers 之外的任何科技资讯网站。然而,提供本文链接是允许的。
You can’t repost this article to any other site except XDA-developers. However, provide link to there is allowed.