固件基础
固件结构
Flash 分区
| 分区名称 | 大小(典型) | 内容 |
| u-boot | 256KB-512KB | 引导程序 |
| kernel | 3MB-5MB | Linux 内核 |
| rootfs | 剩余空间 | 根文件系统 |
| nvram | 64KB-128KB | 配置存储 |
| art | 64KB | 无线参数 |
文件系统类型
SquashFS:只读压缩文件系统,常见于原厂固件
JFFS2:可读写,常见于 OpenWRT
UBIFS:大容量 NAND Flash 使用
YAFFS2:早期嵌入式设备使用
固件格式
常见扩展名
.bin:通用二进制格式
.trx:Linksys/华硕固件格式
.chk:Netgear 专用格式
.img:通用镜像格式
固件头部
大多数固件以固定头部开头:
00 00 00 00 4D 49 50 53 # MIPS 标识
或
FF FF FF FF # TP-Link 常见
启动流程
完整启动序列
上电 → CPU 初始化
U-Boot → 读取环境变量
内核加载 → 从 Flash 读取内核
文件系统 → 挂载根文件系统
网络初始化 → 启动网络服务
Web 服务 → HTTP 服务就绪
U-Boot 启动参数
bootcmd=bootm 9f020000
bootargs=console=ttyS0,115200 root=/dev/mtdblock2
中断启动
在启动过程中按特定键可进入:
回车键:进入命令模式
tftp:网络启动
firmware:指定固件位置
Bootloader 介绍
U-Boot
最通用的开源引导程序。
支持多种 CPU 架构(MIPS/ARM/x86)
支持网络启动(TFTP)
可修改启动参数
常见于小米、华为部分机型
setenv ipaddr 192.168.1.1
setenv serverip 192.168.1.100
tftpboot 0x81000000 firmware.bin
erase 0x9f000000 +0x300000
cp.b 0x81000000 0x9f000000 0x300000
Breed
国内路由器常见的闭源引导程序。
界面友好(Web 控制台)
支持多固件备份
内置 TFTP 恢复
常见于 PandoraBox、Padavan 固件
CFE
Broadcom 芯片专用引导程序。
适用于 Netgear、华硕部分机型
串口控制台操作
支持 NFS 网络启动
原厂 Boot
固件修改
提取固件
# 使用 binwalk 提取
binwalk -e firmware.bin
# 或手动解压
tar -xvf openwrt.bin
修改工具
firmware-mod-kit:固件修改工具包
binwalk:固件分析工具
squashfs-tools:SquashFS 文件系统工具
刷入固件
通过 Web 界面上传
通过 TFTP 刷入
通过 U-Boot 命令行
通过 TTL 串口直接写入 Flash
安全检查
固件签名
现代路由器对固件有签名验证:
安全启动:仅允许官方固件
Bootloader 锁:禁止刷写
闪存锁:防止读取
绕过方法
使用 TTL 串口直接刷写
短接 Flash 芯片特定引脚
利用漏洞降级到低版本
相关链接