先说一个情况,强行用官方 ROM 刷机成功后红米 Note 4,如果连通互联网,则会在很短的时间内被再次远程锁定。也就是说,刷机成功,只代表了刷机这个操作是“绕过”了账户锁,而并没有“解除”账户锁。 所有的经历,除了前一篇文章中总结的绕过账户锁强刷 ROM 的主线,还有不少要补充的内容,一并汇总于此。
1. hexed ROM
生造了这个词,意即“用十六进制编辑工具编辑过的 ROM”。在跟 STATUS_SEC_IMG_TYPE_MISMATCH
对抗时,发现网上已有人尝试过一个我头脑中冒出的想法:编辑 ROM 的元信息以及相关分区的映像,把目标分区的前一个分区搞大,利用连续性强行覆盖。以下链接与此相关:
- https://www.droidwin.com/fix-verified-boot-is-enabled-error-in-sp-flash-tool/,这篇讲的比较详细;
- https://www.youtube.com/watch?v=ELXYLP17aUs,这是一个视频教程,来自一个名为 Hovatek 的公司/团队/组织,他们似乎专门从事这个领域的事情;
- https://www.getdroidtips.com/bypass-verified-boot-enabled-error/,这是另一篇相关的文章;
这些操作我没有亲手实践,有两个原因:一是红米 Note 4 的官方 ROM 中,cust 分区的前一个分区情况比较特别,没有相应的映像文件与之对应,需要自行构造,然后再把 cust.img
的内容后附上去,二是这种方法还需要备份恢复分区表信息,这两者都导致整体上有了需要应对并验证的额外环节。更何况到后期,我已经从其他现象得出结论(如本文开头所说),即便强刷 ROM 成功,其实小米账户锁也并未真正解除,而这种编辑 ROM 的方法也只是使得强刷可以成功的一种方法而已,纠缠于此的意义不大。
2. sideload mode
过程中间曾经下载到过一个工具,号称可以禁用掉小米账户。其操作步骤为,首先把手机切换到 Recovery 模式下,连接到 PC,点击该工具的 Bypass MI Account
按钮;然后重启手机到正常模式,不要联网,把 USB debugging 打开后再连接到 PC,点击该工具的 Disable MI Account
按钮。
一开始尝试的时候,发现红米 Note 4 没有 Recovery 模式,但却误打误撞进入了 sideload 模式(同时按音量上+电源键开机,并一直按音量上键),意外发现这个模式下,该工具也可以成功连接到手机并执行前半部分的操作。但重启后手机仍然处于锁定状态,无法继续进行。
再到后来,强刷 ROM 成功后,发现因联网而又被锁定,就特意绕回来把上述步骤完整试了一下。事实证明:这个工具宣称的功能无效,并不能把小米账号禁用掉。但是这个过程促使我更深入思考账户锁的工作机制。
3. IMEIs, MEID, MAC, Bluetooth MAC 等
在上一篇文章中也提到,标识设备的各种编号被无意中擦除掉了。所以特意查阅了一下,究竟哪些行为会导致这个结果。不出所料地,已经说到过的从偏移 0 处开始执行的手动格式化操作一定会,而且在刷饥时,如果不是选择“Download Only”模式而选择“Format All+Download”模式也会,很不幸,在若干次的刷机测试过程中,这个模式我也不是没试过。疏忽在于,没有在比较早的阶段想办法把这些信息备份出来。
这些信息从固件中丢失之后,如果开机,则系统会随机生成 MAC,前半部分时熟悉的“00:08:22”,开启蓝牙后,蓝牙的 MAC 也会随机生成,因此基本的网络/连接能力都得到了保持。但是,对于 IMEI 和 MEID 系统不会自行发挥,所以状态栏里就会显示诸如“无效的 IMEI”这样的文本。另外,还可能会在 WiFi 接入点列表里永远多一个“NVRAM WARNING Err=0x10”条目(如何修复这个多出来的条目,可以参考 https://forum.xda-developers.com/t/sprout4-permanent-fix-of-invalid-imei-and-wifi-nvram-warning-err-0x10-tutorials.3250044/)。
缺失的 IMEI 跟 MEID 可以使用另外的工具补上,一个叫 MauiMETA,一个叫 Modem META,都是 MTK 自己的工具,而且有理由相信后者就是前者的继任者,应该就是同一个工具。它们连接手机的方式跟 SP Flash Tool 一样,也是先在界面里点击要执行的操作,使工具处于等待状态,然后把已经关机的手机用 USB 连接到 PC 上,然后自动识别、自动驱动后开始执行等待着的操作。用工具里的“IMEI Download”功能和“MEID Download”功能即可以把缺失的 IMEI 和 MEID 补上,如果执行 MEID Download 时候有问题,那可能是你没有选对 Modem,或者该机型没有哪个卡槽是支持 CDMA 制式的。操作可以参考 https://www.doncaprio.com/fix-unknown-baseband-lost-imei-on-xiaomi-redmi-note-4/。
4. 账户锁究竟是什么
第一次强刷完成而且开机也成功后甚是欣喜,甚至一鼓作气把 IMEI 和 MEID 都补上了,结果连通网络后很快又被锁机,迎来了惊愕。一瞬间我甚至怀疑,难道我找来的 IMEI 和 MEID 真的也是另一台已经被锁了的同型号手机吗?否则的话,小米使如何判定本机是否需要锁定呢?带着这个疑问,再次格式化+刷机后特意没有补写 IMEI 和 MEID,竟然照样在连通网络后被锁!打量手机的信息,里里外外也就只剩下一个设备序列号了。这个 ID 我一直有偏见,以为它很不稳定可靠,可能被随意改变,所以没有太注意过它。于是在前前后后的操作记录中查看痕迹,还真让我发现了。从折腾一开始,在某个命令提示符下我曾经输入 adb devices
来查看连接到 PC 的手机,其显示的序列号,和眼下已经被刷过几十遍的手机里当前显示的序列号,毫无二致。
可以想见,小米的服务器里,一定有一个数据表,里面是所有被账户锁定的手机的序列号,以及其相关联的账号。要解除账户锁,要么从该数据记录中将此条删除,要么刷机之后永久地把设备的序列号改掉!前者当然可能性不大,后者应该是可求之道。然而一通粗略的了解下来,改这个东东貌似要比 IMEI 那些复杂不少。首先是,这个序列号没有一个单独的条目,似乎是隐藏在 Barcode 之中,而且即便是一条 Barcode,里面除了序列号以外,还有其它信息同时存在(如 P/N),而且它们的排列顺序以及间隔,乃至总长度,都是有没有公开的格式要求的(可以参看 https://forum.xda-developers.com/t/change-wifi-bt-imei-serial-number-of-any-mtk-android-phone.3058850/)。截至目前,修改序列号这个工作还没有完成。
5. 其它
前边有提到分区表。这个信息有的 ROM 里是没有的,那就需要从设备上现取。方法和工具可以参考 https://www.getdroidtips.com/backup-firmware-files-wwr-mtk-sp-flash-tool-mediatek-device/。提及的工具名为 WWR MTK Tool,能干的活有:
- Dump firmware file.
- Split dumps to .img file.
- Split the ROM file into a portion based on the Scatter file.
- Finds the PMT, PGPT (SGPT) sections.
- Flash .img files.
- Calculates partition details, starts, and lengths from Recovery_log.
- Creates backup copies of partitions.
- Write IMEI.
- Erase FRP.
- Build a Stock ROM.zip file.
- Unlocks Bootloader.
- Unlocks Device.
- Extract RAW preloader and firmware.
- Build Scatter files.
不过该文中链接的下载信息已经失效,要下载工具的话,可以参考 https://www.gsmfirmware.net/2020/07/wwr-mtk-tool.html。