LinearTeam
LinearTeam

XF学生机解锁BootLoader方案A

前言

本篇文章需要你有一定的IDA基础,嗯,没有也行。只要你能装个IDA,能正常打开,安装了keypatch插件,跟着文章一步步走也是能成功的。

这篇文章对比Tomking CVE那个仓库的Releases中的脚本少了exec_addr这一步,也就是没有覆盖BootROM签名校验这一步,这得益于XF的学生机的BootROM对于Splloader没有校验,所以就算是省了点事。

大部分的品牌的机器解锁BootLoader会连带着解锁AVB(Android Verified Boot),但是我们的紫光不会,就挺恶心人的……所以说你看完整篇教程,你能不需要签名自由刷写的分区只有System、Vendor,如果你需要刷写其他分区,比如Boot,那你需要解锁AVB:XF学生机如何解锁AVB

本篇文章的作者在这方面是一个十足的小白,如有错误请尽快指出,万分感谢!

提取平板的Splloader、U-Boot和Miscdata分区

没啥好说的,进FDL2,r splloaderr ubootr miscdata就行,如果你不会这一步,我劝你最好还是退出这篇文章,别看了。

为什么要备份miscdata呢,因为存储状态储存在miscdata分区,uboot的set_lock_status函数就是看的这里来判断锁定状态。所以说,如果你以后想锁回去了,那就刷回解锁前备份的miscdata、uboot就可以了,splloader刷不刷都行。

修改Splloader

打开IDA Pro,它会先弹出这个窗口,版本号可能不一样,我用的是9.2:

https://www.linearteam.top/wp-content/uploads/2025/12/QQ_1766235704879.png

随后便会来到这里:

https://www.linearteam.top/wp-content/uploads/2025/12/QQ_1766235742211.png

我们点击New,然后选择你备份的splloader.bin,如图所示:

https://www.linearteam.top/wp-content/uploads/2025/12/QQ_1766235892406-1024x545.png

点击打开后它会弹出这个窗口:

https://www.linearteam.top/wp-content/uploads/2025/12/QQ_1766235918179.png

我们往上翻,找到ARM Little-endian,点击它:

https://www.linearteam.top/wp-content/uploads/2025/12/QQ_1766236067511.png

然后点击OK,弹出提示选择Yes,会弹出这个窗口:

https://www.linearteam.top/wp-content/uploads/2025/12/QQ_1766236161745.png

这里我们把ROM start addressLoading address改成0x5500,如图所示:

https://www.linearteam.top/wp-content/uploads/2025/12/QQ_1766236244145.png

然后点击OK,弹出提示选择Yes,它便开始加载,中途提示全选OK就行了,直到它下方的Output出现The initial autoanalysis has been finished.

https://www.linearteam.top/wp-content/uploads/2025/12/QQ_1766236445254-1024x545.png

就证明已经加载完了,这时我们按下Shift+F12,会出现字符串列表:

https://www.linearteam.top/wp-content/uploads/2025/12/QQ_1766236541422-1024x545.png

然后再按下Ctrl+F,下方就出现了搜索框:

https://www.linearteam.top/wp-content/uploads/2025/12/QQ_1766236598557-1024x545.png

然后我们输入uboot,按下回车,会发现搜索出了uboot和uboot_back:

https://www.linearteam.top/wp-content/uploads/2025/12/QQ_1766236692041-1024x545.png

我们点击两下那个黄色高亮的uboot,跳转到文本模式的汇编代码窗口:

https://www.linearteam.top/wp-content/uploads/2025/12/QQ_1766236776528-1024x545.png

然后我们点击两下后面的这个函数(不同机子splloader的函数名是不一样的,点击指定位置就行,不要死磕),如图所示:

https://www.linearteam.top/wp-content/uploads/2025/12/QQ_1766236889211-1024x545.png

然后会跳转到图形模式的汇编代码窗口:

https://www.linearteam.top/wp-content/uploads/2025/12/QQ_1766237046224-1024x545.png

然后我们按下F5,转成伪代码:

https://www.linearteam.top/wp-content/uploads/2025/12/QQ_1766237085023-1024x545.png

然后我们看下面那个if块,点击两下我指的位置的函数(不同机子splloader的函数名是不一样的,点击指定位置就行,不要死磕),如图所示:

https://www.linearteam.top/wp-content/uploads/2025/12/QQ_1766237289471-1024x545.png

然后跳转到这个函数的伪代码:

https://www.linearteam.top/wp-content/uploads/2025/12/QQ_1766237345554-1024x545.png

然后点击两下我圈出的位置的函数(不同机子splloader的函数名是不一样的,点击指定位置就行,不要死磕),如图所示:

https://www.linearteam.top/wp-content/uploads/2025/12/QQ_1766237404067-1024x545.png

然后跳转到这里:

https://www.linearteam.top/wp-content/uploads/2025/12/QQ_1766237439955-1024x545.png

点击一下我圈的位置的那个函数(不同机子splloader的函数名是不一样的,点击指定位置就行,不要死磕),如图所示:

https://www.linearteam.top/wp-content/uploads/2025/12/QQ_1766237457967-1024x545.png

按下Tab,跳转到图形模式的汇编代码窗口:

https://www.linearteam.top/wp-content/uploads/2025/12/QQ_1766237508554-1024x545.png

点击我圈出来的这一行,如图所示:

https://www.linearteam.top/wp-content/uploads/2025/12/QQ_1766238114072-1024x614.png

然后按下Ctrl+Alt+K,弹出一个窗口:

https://www.linearteam.top/wp-content/uploads/2025/12/QQ_1766238247444.png

然后在Assembly输入MOV W0, #0,让它强制返回0,即验证成功,如图所示:

https://www.linearteam.top/wp-content/uploads/2025/12/QQ_1766238399944.png

然后点击Patch,它会再次弹出一个这样的窗口,我们点击Cancel,这时候你会发现那一行后面带了这些东西:

; Keypatch modified this from:
; STP X29, X30, [SP,#var_60]!

就像这样:

https://www.linearteam.top/wp-content/uploads/2025/12/QQ_1766238853006-1024x614.png

这是为了让你知道修改前的指令,代表已经修改完成,不必在意,属正常现象。

然后点击改过的那一行的下一行,按下Ctrl+Alt+K,还是会出现那个窗口,然后Assembly输入RET,如图所示:

https://www.linearteam.top/wp-content/uploads/2025/12/QQ_1766239054987.png

点击Patch,还是会再次弹出一个这样的窗口,也是点击Cancel,如果这一行后面也出现刚刚那些东西,那就是修改完成了,如图所示:

https://www.linearteam.top/wp-content/uploads/2025/12/QQ_1766239100658-1024x614.png

最后我们保存修改到新文件,点击我框出来的按钮,如图所示:

https://www.linearteam.top/wp-content/uploads/2025/12/QQ_1766239162890-1024x614.png

然后点击Patch program,点击Apply patches to input file…,弹出一个窗口:

https://www.linearteam.top/wp-content/uploads/2025/12/QQ_1766239375708.png

勾选上下面的Create backup,如图所示:

https://www.linearteam.top/wp-content/uploads/2025/12/QQ_1766280182950.png

然后点击OK。这样,我们的splloader就改完了,修改输入到了splloader.bin,而splloader.bin.bak是原镜像的备份,也就是没有被修改过的。

最后我们关闭IDA Pro,会弹出来一个窗口,就像这样:

https://www.linearteam.top/wp-content/uploads/2025/12/QQ_1766239737874.png

如果你想留着你的工程文件,方便下次看改了哪里,那就直接点OK,如果你不想留着,那就点击DONT SAVE the database

修改U-Boot

还是一样的操作,打开IDA Pro,打开你备份的uboot.bin,选择ARM Little-endian,这里的ROM start addressLoading addres0x9efffe00,如图所示:

https://www.linearteam.top/wp-content/uploads/2025/12/QQ_1766240162653.png

还是点击OK,还是点击YES,还是等待它加载完成,还是按下Shift+F12,还是按下Ctrl+F,这里我们搜索VerifiedBoot-UNLOCK

https://www.linearteam.top/wp-content/uploads/2025/12/QQ_1766240435783-1024x614.png

还是点击这个结果两下,跳转到文本模式的汇编代码窗口:

https://www.linearteam.top/wp-content/uploads/2025/12/QQ_1766240530857-1024x614.png

然后点击两下圈出来的位置(不同机子uboot的函数名是不一样的,点击指定位置就行,不要死磕),如图所示:

https://www.linearteam.top/wp-content/uploads/2025/12/03e67f87d6e50bd4bb7766efbf0050f5.png

然后就会跳转到图形模式的汇编代码窗口,这时我们按下空格,往下翻,找到这里:

https://www.linearteam.top/wp-content/uploads/2025/12/QQ_1766240747612-1024x614.png

点击一下我圈出来的这一行,如图所示:

https://www.linearteam.top/wp-content/uploads/2025/12/QQ_1766240841536-1024x614.png

还是按下Ctrl+Alt+K,还是会出现那个窗口,然后Assembly中把CBZ W0,改为B,让它永远都走成功分支,如图所示:

https://www.linearteam.top/wp-content/uploads/2025/12/QQ_1766241980644-1.png

点击Patch,还是会再次弹出一个这样的窗口,也是点击Cancel,如果这一行后面也出现刚刚那些东西,那就是修改完成了,就像这样:

https://www.linearteam.top/wp-content/uploads/2025/12/QQ_1766242060868-1024x614.png

还是保存修改到新文件,还是关闭IDA Pro。这样,uboot也就改完了,修改输入到了uboot.bin,而uboot.bin.bak是原镜像的备份,也就是没有被修改过的。

刷入Splloader、U-Boot(解锁BootLoader)

也没啥好说的,进入FDL2,w splloader 你修改的splloader.binw uboot 你修改的uboot.bin就行,重启应该就能看到解锁提示了。

机器死了怎么救

小白改起来当然会有一点点问题,但是这一点小问题足以导致机器死掉(砖了),这时候,我们长按音量键+电源键15秒,然后立即插入电源线,这个长按15秒强制重启是不经过系统的,一定能成功,加上音量-和电源线就能进入BootROM,但请注意,插慢了设备标识符请求失败,插快了U2S就是残废。但是也没什么大不了的,重新来一遍就好了嘛……

怎么回锁BootLoader

刷回解锁前备份的miscdata和uboot即可。

没有标签
首页      未分类      XF学生机解锁BootLoader方案A
Avatar photo

worryzu

文章作者

发表回复

textsms
account_circle
email

LinearTeam

XF学生机解锁BootLoader方案A
前言 本篇文章需要你有一定的IDA基础,嗯,没有也行。只要你能装个IDA,能正常打开,安装了keypatch插件,跟着文章一步步走也是能成功的。 这篇文章对比Tomking CVE那个仓库的Relea…
扫描二维码继续阅读
2025-12-20