Firmware Extractor:多格式Android固件提取的一站式解决方案
面向ROM开发者与安全研究员的专业工具套件
在Android固件分析领域,开发者常面临格式碎片化、工具链复杂、提取流程冗长等痛点。Firmware Extractor作为开源解决方案,通过整合20+专业工具模块,实现了从各类厂商固件中一键提取系统镜像的能力,其核心优势在于对三星.tar.md5、LG.kdz、OPPO.ozip等15+特殊格式的原生支持,以及A/B分区payload.bin、动态分区super.img等复杂结构的自动化处理,显著降低了固件分析的技术门槛。
核心价值解析
跨厂商格式兼容能力
场景:某ROM开发团队需要为不同品牌设备构建自定义系统
问题:三星、LG、华为等厂商采用私有固件格式,传统工具需手动切换适配
解决方案:工具内置kdztools(LG专用)、ruuveal(三星加密镜像处理)等模块,自动识别固件类型并调用对应解析引擎,实现"一键拖入,全格式支持"的无缝体验⚙️
动态分区深度解析
场景:安全研究员需要从Android 12+设备固件中提取vendor分区
问题:动态分区super.img采用稀疏格式与逻辑分区表,传统工具无法直接解包
解决方案:集成lpunpack与simg2img工具链,先将稀疏镜像转换为原始镜像,再按动态分区表拆分出system、vendor、product等独立分区,完整保留文件系统结构
环境配置与核心操作
环境准备
# 克隆项目仓库(包含所有工具子模块)
git clone --recurse-submodules https://gitcode.com/gh_mirrors/fi/Firmware_extractor
cd Firmware_extractor
# 赋予执行权限
chmod +x extractor.sh patcher.sh
chmod +x tools/* # 确保所有工具可执行
基础提取流程
# 基本用法:提取固件到指定目录
./extractor.sh /path/to/firmware.zip ./output_dir
# 高级选项:强制使用指定工具(如处理LG KDZ格式)
./extractor.sh --tool kdztools /path/to/firmware.kdz ./output_dir
# 验证提取结果
ls ./output_dir # 应包含boot.img, system.img等关键镜像
file ./output_dir/system.img # 确认文件类型为ext4文件系统
结果验证方法
- 检查输出目录文件完整性:至少包含boot、system、vendor等核心镜像
- 使用
file命令验证镜像格式:显示"Android sparse image"或"ext4 filesystem" - 挂载验证(需root权限):
mount -o loop system.img /mnt可正常访问文件系统
专业工具模块技术解析
payload-dumper-go
工具原理:基于Go语言实现的A/B分区解析器,通过解析payload.bin中的manifest文件,提取包含的镜像条目
适用场景:处理Google Pixel系列及原生Android设备的OTA更新包
使用限制:需要完整的payload.bin与对应的metadata文件,不支持加密OTA包
simg2img与lpunpack组合
工具原理:simg2img将Android稀疏镜像(sparse image)转换为原始镜像(raw image),lpunpack则依据super.img中的lp_metadata解析动态分区
适用场景:Android 10+设备的动态分区提取
使用限制:需要设备特定的分区布局信息,部分厂商定制化动态分区可能导致解析失败
厂商专用工具集
| 工具名称 | 支持格式 | 核心功能 | 局限性 |
|---|---|---|---|
| kdztools | LG .kdz | 解密并提取KDZ固件中的bin文件 | 不支持最新LG加密算法 |
| ruuveal | 三星.tar.md5 | 移除三星固件签名校验 | 需要对应型号的密钥文件 |
| pacExtractor.py | MTK .pac | 解析联发科打包格式 | 对新型号支持有限 |
典型应用案例
ROM定制开发流程
- 使用Firmware Extractor提取官方固件的system、vendor分区
- 通过patcher.sh对system.img进行解包修改
- 重新打包生成自定义ROM镜像
- 使用工具链中的packsparseimg生成可刷写的稀疏镜像
安全漏洞分析场景
- 提取boot.img进行内核漏洞分析
- 解析system分区中的预装应用APK
- 通过ext2rd工具直接读取ext4镜像中的敏感文件
- 利用otadump分析OTA差分更新包的安全机制
社区支持与贡献指南
Firmware Extractor采用MIT开源协议,欢迎通过以下方式参与项目建设:
- 问题反馈:提交issue时需包含固件格式、错误日志及设备型号
- 代码贡献:通过PR提交新格式支持或工具优化,需遵循PEP 8编码规范
- 文档完善:补充新工具使用说明或格式解析原理
- 密钥分享:贡献新厂商设备的密钥文件至tools/keyfiles目录
项目核心维护者会在48小时内响应issue,重大功能更新周期为季度迭代。用户可通过项目内置的./extractor.sh --update命令获取工具链最新版本。
通过持续优化格式支持与提取效率,Firmware Extractor已成为Android固件分析领域的基础设施工具,其模块化设计确保了对新设备、新格式的快速适配能力,为移动生态系统的开源探索提供了关键技术支撑。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0444
源启盛夏_AtomGit暑期开发者成长计划「源启盛夏」暑期校园开发者成长计划旨在激活校园开源力量,通过积分激励、认证扶持、资源倾斜等形式,引导高校组织和开发者完成「入驻 — 建项目 — 做贡献 — 获认证 — 得资源」的完整闭环。无论你是想带领社团入驻平台的组织者,还是希望用代码贡献证明自己的开发者,都能在这里找到属于你的成长路径。Markdown00
jiuwenswarmJiuwenSwarm 是一款基于openJiuwen开发的智能AI Agent,它能够将大语言模型的强大能力,通过你日常使用的各类通讯应用,直接延伸至你的指尖。Python0760
Hy3Hy3 是由腾讯混元团队研发的快慢思考融合的混合专家模型,总参数量 295B,激活参数 21B,MTP 层参数 3.8B。4 月底发布 Hy3 Preview 后,我们在 50 多个业务中获得了广泛的反馈,修复了各种体验问题,进一步提升了后训练的质量和规模。今天,我们发布 Hy3。它展现出显著强于同尺寸并比肩旗舰(参数规模往往是 Hy3 的 2~5 倍)开源模型的智能水平,显著提升了在各类产品和生产力任务中的实用价值。Python00
AscendNPU-IRAscendNPU-IR是基于MLIR(Multi-Level Intermediate Representation)构建的,面向昇腾亲和算子编译时使用的中间表示,提供昇腾完备表达能力,通过编译优化提升昇腾AI处理器计算效率,支持通过生态框架使能昇腾AI处理器与深度调优C++0310
DragonOSDragonOS is an operating system developed from scratch using Rust, with Linux compatibility. It is designed for **Serverless** scenarios. 使用Rust从0自研内核,具有Linux兼容性的操作系统,面向云计算Serverless场景而设计。Rust00