获取 VTech/LeapFrog LeapStart/Magibook 的固件
获取 VTech/LeapFrog LeapStart/Magibook 的固件
2025-04-03 · leloubil's blog 这是一篇非常短的博客文章,关于我的第一个逆向工程项目,在这个项目中我还没有真正逆向任何东西,但我只是刚刚开始! 一位家人要求我向他为儿子购买的 LeapStart 添加额外的书籍数据,这就是这里的起点。
设备概述 #
该设备在英文中被称为 LeapFrog LeapStart,在法语中被称为 VTech MagiBook(我来自法国,所以我拥有的是法语版本)。该设备是一种儿童阅读辅助工具。
它由一个大的塑料框架和一支带有尖头的笔组成。打开电源后,你可以将兼容的书籍放在设备上,并使用笔触摸页面。然后,设备将阅读页面上的文本,播放声音,或根据书籍执行其他操作。
该设备具有 micro USB 端口、音频插孔、电源按钮和音量按钮。
我为什么对此感兴趣? #
作为一种逆向工程实践!我将在几个月后毕业,除了学校项目的微型二进制文件外,我还没有做过任何“真正的”逆向工程。 我也被阅读书籍的工作方式所吸引,它是通过识别页面上印刷的非常小的点阵图案来实现的,如果你想了解更多关于这方面的信息,请查看这个视频系列(法语):https://www.youtube.com/watch?v=TWPTnmCAc6c 他还解释了硬件,我不会这样做,因为我没有相关的知识。 我对固件感兴趣!
获取固件 #
要开始逆向固件,我首先需要获取它。从设备中提取它超出了我的能力范围,那么在哪里可以找到呢?好吧,当使用 VTech Software 添加书籍数据时,它还对设备进行了固件更新。
这意味着固件在我的电脑上!
在我的电脑上搜索与 VTech/LeapStart 相关的文件后,我在此位置找到了一个缓存文件夹:C:\ProgramData\VTech\DA\VtechStart\LFC_Downloads\cache
然后,我开始使用 binwalk 分析此文件夹中的文件。
我发现了一些有趣的文件,似乎包含音频数据,但是,我不确定它们是如何存储的,是否经过压缩以及使用了哪种编解码器。
更重要的是,我还发现了这些有趣的文件(在实际上是 zip 压缩文件和/或 tar 压缩文件的缓存文件中):
- 'System'
- 'FileSys'
- 'InstLib/LibGodzilla.bin'
- 'InstLib/InstGodzilla.bin'
- 'delo2_surgeon.cbf'
我将暂时关注这些文件,因为它们似乎是固件文件。
FileSys #
FileSys 文件实际上是一个 FAT32 文件系统镜像。挂载它时,它具有以下结构:
.
├── AppManifest
├── BookManifest
├── MusicManifest
├── apps (folder)
├── audio (folder)
├── books (folder)
├── music (folder)
└── system (folder)
└── manifest.cb
这里的所有文件都只有 1 kb,我还没有在其中找到有趣的数据/字符串。
System #
我不确定这个文件_到底_是什么,但是使用 binwalk 并带有 -A 标志来查找操作码,它找到了很多 ARM 函数序言。我假设这是一种 ARM 二进制文件,但是没有任何头部或其他信息,我还没有弄清楚它到底是什么。 但是,我确实在其中找到了一些有用的字符串:
- 一些 C++ 信息:"std::basic_string<char, std::char_traits, std::allocator >"
- 一些日志 (?)
- 一些暗示设备中使用的内核的字符串:"uC/OS-II Idle"
- 一些文件路径:\system\MfgTest\Coords.txt
下一步 #
虽然这小部分已经花了不少时间,但它让我能够更深入地研究这两个文件。我将尝试查找有关此 System 文件的更多信息,包括:
- 使用的 ISA:我目前不知道有任何工具可以根据原始二进制文件来猜测它
- 实际的文件格式:它似乎不仅仅是代码,因此我将研究 uC/OS-II 以及其固件文件是如何构建的
- 进行一些实际的逆向工程:在完成上述步骤后,我将实际逆向工程固件的部分内容,以了解其工作原理。我的主要目标是点识别代码和音频播放代码。我还想尝试在上面放置自定义音频,但这可能比我想象的要复杂。
感谢您阅读这篇简短的第一篇文章!
#reverse-engineering[](https://leloubil.prose.sh/<https:/leloubil.prose.sh?tag=reverse-engineering>)
#firmware[](https://leloubil.prose.sh/<https:/leloubil.prose.sh?tag=firmware>)
#leapstart[](https://leloubil.prose.sh/<https:/leloubil.prose.sh?tag=leapstart>)
#vtech[](https://leloubil.prose.sh/<https:/leloubil.prose.sh?tag=vtech>)
#magibook[](https://leloubil.prose.sh/<https:/leloubil.prose.sh?tag=magibook>)
published with prose.sh