|
Post by account_disabled on Jan 30, 2024 11:30:53 GMT 8
为了充分掌握Android启动和恢复映像的作用,我们首先需要了解Android手机的一般启动过程。虽然嵌入式软件不再是我在 TextNow 的日常工作的一部分,但我在之前的一份工作中曾经担任过嵌入式工程师的帽子,并且在业余时间涉足嵌入式电子产品,因此我非常熟悉现代微处理器启动例程。我必须提醒您,这是一篇技术性很强的文章,但希望对寻找有关这一切如何组合在一起的参考材料的人有用,并提供指向在需要时更深入研究的链接。当我学习它时,这种类型的帖子会非常有用 Android 启动过程 当处理器通电并复位时,它会醒来并需要弄清楚要做什么。在现代处理器中,通常有一个非常小的程序嵌入到处理器中,其功能是验证下一个组件的完整性。第一个组件有时称为 安全启动 ROM, 其工作是确保它加载的下一个组件是可信的、经过验证的软件。 这可以防止对系统软件的不必要的篡改,从而提高设备的安全性。验证通常涉及某种使用公钥/私钥方案的加密,私钥通常由制造商严格保密。 注意: 通常公钥是由手机制造商在组装时编程的,并且其内容永远无法更改,因此要求处理器 WhatsApp 号码数据 始终运行指定的引导加载程序,并在组装时烧录公钥的私有副本。 安全启动 ROM 加载的下一个组件就是人们通常所说的引导 加载程序。正如我提到的,引导加载程序通常使用手机制造商的私钥进行签名,并且它有一些工作: 1. 将启动映像从非易失性存储器(现在通常是 NAND 闪存)加载到易失性存储器 (RAM) 中并运行。 2. 或者,该映像在加载之前需要进行加密验证(如今越来越多的手机甚至不提供解锁引导加载程序以运行未签名映像的方法)。 3. 提供将新启动和其他映像闪存到非易失性存储器的能力,以便将来升级和从故障中恢复。 在屏幕上显示某种信息,并可选择提供用户交互的界面。 在某些摩托罗拉、谷歌和其他制造商的设备上,这通常称为 快速启动模式。 Android 启动映像 现在我们进入启动过程的最后一个部分 - 将启动或恢复映像加载到 RAM 中并运行它。 从技术上讲,启动映像和恢复映像之间没有结构差异。唯一的区别是加载哪个内核和哪个初始 ramdisk,但它们的打包方式相同。我们将回到如何将它们打包以制作整洁的启动映像。 运行启动映像涉及几个子步骤: 1. 密码验证 2. 在所需的内存地址加载(Linux)内核 3. 在所需的内存地址加载初始ramdisk 4.跳转到内核起始地址 加密验证通常是制造商特定的,并且通常很难对这种方法进行逆向工程,尽管并非不可能 - 之前已经在某些手机上完成过这种操作(例如,较旧的 Kit-Kat 时代的 LG 手机)。
|
|