3.1. 固件解包¶
3.1.1. 固件¶
在电子系统和计算中,固件是一种特定的计算机软件类,它为设备的特定硬件提供低级控制。固件可以为设备的更复杂的软件提供标准化的操作环境,或者对于较不复杂的设备,充当设备的完整操作系统,执行所有的控制、监视和数据操作功能。包含固件的设备的典型例子是嵌入式系统、消费设备、计算机、计算机外设等。几乎所有电子设备都包含固件。
计算机固件是计算机系统中不可缺少的底层基础系统。这些固件往往是以软件的形式固化存储在硬件芯片中。计算机主板上有最重要、最核心的计算机固件,通过称为BIOS(Basic Input / Output System,基本输入输出系统),计算机加电时,中央处理器(CPU)取得并执行的第一条指令,就储存在固件中。
3.1.2. 获取固件¶
直接从开发团队、制造商/供应商或用户获取
使用制造商提供的项目从头编译
从供应商的网站获取
从论坛、博客,或官方评论中获取
设备更新进行中间人(MITM)获取
通过 UART、JTAG、PICit等直接从硬件中提取
嗅探“硬件组件中的串行通信”中的更新服务器请求
通过移动应用程序中的硬编码接口
将固件从引导加载程序(如:U-boot )转储到闪存或通过tftp的网络转储
从主板卸下闪存芯片(如:SPI )或 MCU,以进行离线分析和数据提取
3.1.3. 文件系统¶
常见的文件系统类型有squashfs、ubifs、romfs、rootfs、jffs2、yaffs2、cramfs、initramfs等。