加密固件,需要一些提示

逆向工程 固件 加密
2021-06-15 19:49:48

我对固件逆向工程比较陌生,但这是一段非常有趣的旅程,喜欢它!

我目前正在尝试破解我的 Panasonic Lumix DC-G9 相机的固件,看看我是否可以绕过录制限制。然而,他们似乎在加密固件方面做得很好。

您可以在此处下载 .bin 固件文件

我试过 Binwalk,但输出只显示一个条目,这可能是误报:

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
26453361      0x193A571       gzip compressed data, has header CRC, has 28967 bytes of extra data, last modified: 2052-10-14 16:14:25 (bogus date)

我尝试提取它,但gunzip只报告标题校验和不等于计算的校验和。所以仍然可能是误报。

我还尝试绘制出固件的熵:

熵图

对我来说似乎是加密的?下一步是检查我是否可以阅读基本strings命令的任何提示

MC471
panasonic
MC471
loader1
loader2
loader3
program
storage
postboot1
postboot2
postboot3
postboot4
postboot5
dram_sleep
eep_ow_a
eep_ow_b
eep_adj
eep_fix
music
osdover
osddata
koutei_kao
avchd_info
eep_net_a
eep_net_b
eep_act_a
eep_act_b
zboot
zimage
rootfs1
rootfs2
apu0_data_i
apu0_data_e
apu0_code_i
apu0_code_e
usbcharge
ipu_data
ipu_code
rc_data
rc_code
nr_data
nr_code
hm_c_prog

好像zboot是引导程序?

由于我还是个新手,是否有任何关于我如何在这方面取得进展的提示?我真的希望它不会打开相机并试图调试任何存储密钥的硬件 ROM!

1个回答

假设这是一个固件文件,一个好的第一步是确定执行的开始位置。你可以这样做:

  • 查找处理器/微控制器/片上系统的类型并检查复位向量(尝试搜索产品许可,例如来自 FCC 的许可,其中可能包含内部图像)。
  • 扫描文件中与代码相关的已知字节序列,例如函数序言。
  • 阅读潜在引导加载程序的手册并查找与之相关的代码。例如,链接器文件可能会标识初始化代码所在的位置。

这将能够分析整个代码结构,如果您的熵图是正确的,它可能会被压缩或加密。

根据固件更新的交付方式,此文件可能已加密并由微控制器解密。

这可能发生:

  • 在更新期间,如果现有固件在写入闪存之前解密并验证更新。
  • 在启动时,如果目标系统支持加密固件。

在这两种情况下,分析系统都要困难得多。您通常需要结合硬件黑客和固件逆向工程才能取得进展。