本期视频带你秒懂经典链表题——删除倒数第 n 个节点。 我们先回顾最直观的两次遍历解法,再重点讲解更优雅的快慢指针法,并通过例子演示为什么需要引入 dummy 节点。最后结合 Python 代码,帮你理解时间复杂度 O(n)、空间复杂度 O(1) 的优雅实现。 适合算法初学者和准备面试的同学,一次讲清链表删除操作的核心思路。
⚠️点击置顶评论区免费申请👇
广电云逸卡19元/月享192G全国通用+0.15元/分钟通话,办理地址:https://ka.kaduoduohk.com/order/index?uid=dlUzVlQ0OVVwV0U9&pid=745
Q:解除avb后能干嘛? A:最大的用处就是可以无签名刷写boot/recovery分区,并且开机启动过程也不再拥有签名校验(也就是说以后root都不用折腾半天给boot签名了,直接无脑刷进去就行)。如果严格遵循本教程(即严格执行所有步骤) 所有分区都会没有校验,校验链将会彻底失效 Q:如何解除avb校验? A:如果你的机型是dw99, dw100 ,m12 ,s16 ,vp19 ,JC02 Pro可以直接前往评论区加入群聊执行一键解除avb工具,其他机型须按照本教程修补镜像,并将修补好的镜像通过无校验安全分区刷写校验的fdl刷回机器即可解除avb校验 Q:我需要做哪些准备来修补镜像以解除avb校验? A:先通过 SPRDClient /SPRDClient命令行版 /spd_dump /researchdownload 等工具提取本机splloader , uboot , trustos分区原始镜像,并且在电脑上安装IDA9.0 Pro,建议安装Patching或KeyPatch插件(这样修补起来会方便很多),然后就可以开始修补了 Q:我需要编程基础甚至汇编基础吗? A:需要一点。但是即使没基础,一步步按照教程来也能搞定 教程部分: 本教程一共分为三个部分,分别是: 1.修补splloader,使splloader不再对uboot/sml/trustos 进行secureboot签名验证(在trustos可签名的情况下,这一步可选!),并记录下trustos的加载地址 2.修补uboot以解锁bl,实现tos在开机启动过程不再对system和vendor等分区进行验证(这一步可选!) 3.[关键!!!]修补trustos以解除avb验证(必做!!!!!!!!!!!!!!) 在修补前,先讲解一下待会要用到的两个指令的用途: NOP:让cpu啥都不干(其实原理是干一些无用功),我们可以利用这个指令跳过一些逻辑 B:跳转到某个位置,相当于C语言的goto,我们也可以利用这个指令跳过一些逻辑 MOV W0, #0:将W0寄存器内存储的数字设置为0 . 对于汇编新手,你可以将W0,W1,W2等通用寄存器想象成是全局变量,函数调用本质是修改这些变量的值,然后让cpu跳转到某个位置,这个位置本质就是一个函数,然后这个函数内可以访问这些全局变量以执行一些逻辑,函数结束时,汇编规范是将函数的返回值写入W0寄存器,然后返回到原来调用方的位置(实际情况如果参数过多还要考虑压栈出栈这些,这里只是简化一下模型便于理解) 形象伪代码: int func_to_call{ FirstArg = W0 SecondArg = W1//通过访问寄存器来获取参数 ... W0 = 1 //设置W0的值,即函数返回值 return } somefunc{ W0 = 1 W1 = 2 func_to_call() //调用完后,W0的值以被修改成函数返回值 MyVar = W0 //通过W0获取函数返回值 } 修补splloader原理: splloader源码中,nand_boot函数先调用 load_partition_with_header()函数 加载uboot,sml,trustos一系列分区,再调用 secboot_verify()函数 校验分区签名,如果不通过就会先加载bak分区,如果还不通过验证就会while(1);(也就是死循环,表现为机器永远黑屏,不接收外部任何操作和命令)。所以我们只要让设备不加载bak分区且不while1就能跳过验证。因此我们只需要跳过这一段 secboot_verify()的校验即可绕过secureboot验证 修补uboot以解锁bl原理: 在这个例子里,get_lock_status里的MEMORY[0x9XXXXXXX]是一个全局变量,设置为1即为解锁。有的地方不会调用此函数来获取解锁状态,而是通过访问MEMORY[0x9XXXXXXX]获取。uboot的启动函数会调用get_lock_status,也就是每一次开机启动都会先把MEMORY[0x9XXXXXXX]设置为1,这样uboot内其他函数获取bl解锁状态无论是通过调用get_lock_status还是访问MEMORY[0x9XXXXXXX]都会得到同样的结果:该设备已解锁。所以这样我们就解锁了bl 修补trustos以解除avb原理: avb_slot_verify函数为avb校验的主函数,trustos是通过调用avb_slot_verify() 来校验分区签名,因此我们让这个函数永远返回0即可跳过avb校验(还不放心的话还可以修补load_and_verify_vbemta()函数,虽然没啥必要)
z-blog 是《绝区零》部分内容的复刻网页,由熙唔中噫独立开发完成。 刚好为了庆祝绝区零一周年生日(虽然有点晚)代码正式开源 相关链接都在评论区置顶哦~
♥任何疑问都可在评论区咨询博主♥
-
所有安装包、镜像文件都打包好了 三连后免费带走
别瞎买护眼仪!6款2025年热门眼部按摩仪终极横评!【科姬导游说】
【键盘组装五条龙】六把键盘教你组装:内胆组装最终篇
C盘垃圾还有人不会清理?
10000mAh仅182g!黑鲨自带线充电宝如何做到「轻量全能」?
2025年8月最具性价比X99 E5 CPU推荐!游戏还是生产力,我全都要!一图流
综合 0