DerrickDW/car710w-research
GitHub: DerrickDW/car710w-research
记录了对Jensen CAR710W车载主机固件的逆向分析过程,成功定位并解析了启动动画、背景图片等UI资源的存储格式与提取方法。
Stars: 0 | Forks: 0
# car710w-研究
对我车上的 Jensen CAR710W 主机固件进行逆向工程,以定位并修改 UI 资源,如启动动画和背景图片。
## 2026-03-08 - 首次深入固件
目标:Jensen CAR710W 固件
目的:定位启动动画资源或背景资源,以及任何其他我能发现的内容。
## 使用的工具
-wsl
-binwalk
-unsquashfs
-ffprobe
-ffmeg
## 固件获取
-从制造商网站下载
-ISPBOOOT.BIN
-ISPBOOOT_UPDATE_U.BIN
## 执行的命令
```binwalk ISPBOOOT.bin```
返回了以下内容
-8577024 0x82E000 Squashfs filesystem, little endian, version 4.0, compression:gzip (non-standard type definition), size: 2187539 bytes, 501 inodes, blocksize: 32768 bytes, created: 2022-11-17 11:11:23
10768384 0xA45000 Squashfs filesystem, little endian, version 4.0, compression:gzip (non-standard type definition), size: 250942 bytes, 2 inodes, blocksize: 32768 bytes, created: 2022-11-17 11:11:23
11022336 0xA83000 Squashfs filesystem, little endian, version 4.0, compression:gzip (non-standard type definition), size: 35088130 bytes, 746 inodes, blocksize: 32768 bytes, created: 2022-11-17 11:11:24
46112768 0x2BFA000 Squashfs filesystem, little endian, version 4.0, compression:gzip (non-standard type definition), size: 7848662 bytes, 107 inodes, blocksize: 32768 bytes, created: 2022-11-17 11:11:23
以及部分文件结构
7680276 0x753114 Unix path: /dev/vc/0
7761726 0x766F3E Unix path: /sys/module/sp_spinand/parameters/hwcfg
7836400 0x7792F0 Unix path: /sys/kernel/debug/gc/galcore_trace
值得注意的内容
-U-Boot images
-Linux kernal (4.9.217)
-存储在固件镜像中的原始分区
所有重要分区
-uboot
-env
-ecos
-kernel
-rootfs
-opt
-spsdk
-spapp
-nvm
-pq
-logo
-tcon
-runtime_cfg
-vi
-isp_logo
-vendordata
-pat_logo
-verison_info
-vd_restore
-anm_logo => 重点
-userdata
这些分区通过固件刷写脚本直接写入 NAND
```unsqaushfs rootfs.squashfs```
rootfs 结构示例:
/bin
/etc
/lib
/usr
/init.rc
/init.gui.rc
这证实了:
Linux 用户空间环境
基于 Busybox
使用 DirectFB 的自定义显示堆栈
## 在追踪启动动画之前,我首先尝试获取背景图片
切分出 isp_logo
```grep -oba OGOL ISPBOOOT.BIN```
固件包含一个容纳更新镜像的 PART 容器
结构:
PART/
/isp_begin.bin
/isp_ok.bin
/isp_failed.bin
内部的镜像使用专有的 OGOL 格式。
-4 bytes magic = OGOL
-32 byte header
-raw pixel data
-分辨率 1024x600
-像素顺序 ABGR
## 解码后的镜像包括:
正在更新...
烧录成功,欢迎!
这些不是背景图
片,而是更新时闪烁的图像,真扫兴。
## 主 Logo 区域
-不过,在 logo 区域存在多个 OGOL blob
-发现的偏移量:
54064240
56521872
58979504
59597968
60213424
60828880
61444336
有些只能部分解码,但似乎包含分层或平铺的资源,而不是完整的图像。
需要进一步调查。
## 启动动画 (anm_logo) = 今晚的重大发现。
```tail -c +$((62063664 + 1)) ISPBOOOT.BIN > anm_logo.mkv```
返回结果
anm_logo_0x95000.bin: Matroska data
DECIMAL HEXADECIMAL DESCRIPTION
0 0x0 EBML file, Matroska data
视频属性
容器:Matroska (.mkv)
分辨率 1072x600 => 奇怪的发现,图像分辨率不同
像素格式:yuv420p
帧率:24FPS
时长 4 秒
比特率:~1220kb/s
我们找到了启动时播放的启动动画!

因为它使用标准的容器和编解码器,只要替换文件满足以下条件,就可以被替换为自定义动画:
保持 ≤ 0x95000 字节
使用兼容的编解码器/分辨率
时长大致相似
这使得启动动画定制变得简单直接。
下一步是替换它,重建固件并将其刷入主机。
## 相关 UI 渲染代码
二进制分析揭示了背景渲染函数:
Draw_Background_From_Nand
Set_Background_Transparency
Stop_Animation_Logo
它们位于:
libpfc_service.so
libsppfc.so
这些强烈暗示 UI 背景是从 NAND 分区读取的,而不是嵌入的资源。
可能涉及的分区:
logo
pat_logo
runtime_cfg
vendordata
需要进一步调查。
## CarPlay 子系统
发现的 CarPlay 相关文件:
/etc/carplay/oemIcon.png
/etc/carplay/oemIcon120.png
二进制文件中存在的 CarPlay 服务:
apple_carplay_server
libspcarplay.so
这些可能控制:
CarPlay 背景
OEM 图标
主题资源
存在替换 CarPlay UI 资源的可能性。
## 关键结论
这个固件出人意料地易于修改:
基于 Linux 的系统
SquashFS rootfs
用于启动动画的标准视频容器
原始帧缓冲图像
资源没有明显的加密
已确认可自定义的组件:
启动动画
固件更新屏幕
CarPlay 图标资源
潜在的 UI 背景
## 今晚总共花费时间:1.5小时
烧录成功,欢迎!
这些不是背景图
片,而是更新时闪烁的图像,真扫兴。
## 主 Logo 区域
-不过,在 logo 区域存在多个 OGOL blob
-发现的偏移量:
54064240
56521872
58979504
59597968
60213424
60828880
61444336
有些只能部分解码,但似乎包含分层或平铺的资源,而不是完整的图像。
需要进一步调查。
## 启动动画 (anm_logo) = 今晚的重大发现。
```tail -c +$((62063664 + 1)) ISPBOOOT.BIN > anm_logo.mkv```
返回结果
anm_logo_0x95000.bin: Matroska data
DECIMAL HEXADECIMAL DESCRIPTION
0 0x0 EBML file, Matroska data
视频属性
容器:Matroska (.mkv)
分辨率 1072x600 => 奇怪的发现,图像分辨率不同
像素格式:yuv420p
帧率:24FPS
时长 4 秒
比特率:~1220kb/s
我们找到了启动时播放的启动动画!

因为它使用标准的容器和编解码器,只要替换文件满足以下条件,就可以被替换为自定义动画:
保持 ≤ 0x95000 字节
使用兼容的编解码器/分辨率
时长大致相似
这使得启动动画定制变得简单直接。
下一步是替换它,重建固件并将其刷入主机。
## 相关 UI 渲染代码
二进制分析揭示了背景渲染函数:
Draw_Background_From_Nand
Set_Background_Transparency
Stop_Animation_Logo
它们位于:
libpfc_service.so
libsppfc.so
这些强烈暗示 UI 背景是从 NAND 分区读取的,而不是嵌入的资源。
可能涉及的分区:
logo
pat_logo
runtime_cfg
vendordata
需要进一步调查。
## CarPlay 子系统
发现的 CarPlay 相关文件:
/etc/carplay/oemIcon.png
/etc/carplay/oemIcon120.png
二进制文件中存在的 CarPlay 服务:
apple_carplay_server
libspcarplay.so
这些可能控制:
CarPlay 背景
OEM 图标
主题资源
存在替换 CarPlay UI 资源的可能性。
## 关键结论
这个固件出人意料地易于修改:
基于 Linux 的系统
SquashFS rootfs
用于启动动画的标准视频容器
原始帧缓冲图像
资源没有明显的加密
已确认可自定义的组件:
启动动画
固件更新屏幕
CarPlay 图标资源
潜在的 UI 背景
## 今晚总共花费时间:1.5小时标签:Binwalk, Jensen CAR710W, Linux内核, Squashfs, UI资源修改, 云资产清单, 启动动画, 固件分析, 固件解包, 嵌入式安全, 文件系统提取, 硬件研究, 背景图片, 车机改装, 车载信息娱乐系统, 逆向工程