我决定玩弄一个旧的婴儿监视器,纯粹是为了了解这些东西(IE 嵌入式设备)是如何工作的。我成功地提取了闪存,我希望它有一个 uboot 映像和一个 squashfs 文件系统或类似的东西。binwalk 打破了我的希望:
$ binwalk motorola_1.bin
DECIMAL HEXADECIMAL DESCRIPTION
--------------------------------------------------------------------------------
相反,它显然充满了 ARM 指令:
$ binwalk -A motorola_1.bin
DECIMAL HEXADECIMAL DESCRIPTION
--------------------------------------------------------------------------------
300 0x12C ARM instructions, function prologue
328 0x148 ARM instructions, function prologue
404 0x194 ARM instructions, function prologue
428 0x1AC ARM instructions, function prologue
1176 0x498 ARM instructions, function prologue
1580 0x62C ARM instructions, function prologue
现在,在执行此操作之前,我连接到监视器的 UART 接头并显示了某种调试程序,该程序允许我查看相机的当前转换、调整显示设置等。如果我在芯片上运行,该程序打印输出的字符串在我从芯片中提取的二进制文件中都是可见的strings,所以这显然是在那里运行的。如果固件不是某种形式的 linux 映像,我很困惑它是如何运行的。
主板上没有我可以看到的其他闪存芯片,尽管有一个(遗憾的是无法识别的)IC,它显然是某种处理器或 SOC,我认为它可能具有内部闪存部分。
如果这不是某种形式的 linux 映像,那么它可能是什么?纯 ARM 指令意味着它只是一个程序,但我真的不明白它如何在没有操作系统启动的情况下执行程序来运行它。或者我可能只是遗漏了什么?
编辑:如果重要的话,该芯片是 Winbond W25Q16.V - 不完全是用于存储 linux 映像的大型芯片......或者在我看来无论如何。但我知道什么?