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 ## 解码后的镜像包括: 正在更新... ogol_56521872_hdr0020_1024x600_RGBA 烧录成功,欢迎! 这些不是背景图ogol_54064240_hdr0020_1024x600_RGBA 片,而是更新时闪烁的图像,真扫兴。 ## 主 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 我们找到了启动时播放的启动动画! ![anm_logo](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/ef985a0d6b090545.gif) 因为它使用标准的容器和编解码器,只要替换文件满足以下条件,就可以被替换为自定义动画: 保持 ≤ 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资源修改, 云资产清单, 启动动画, 固件分析, 固件解包, 嵌入式安全, 文件系统提取, 硬件研究, 背景图片, 车机改装, 车载信息娱乐系统, 逆向工程