我尝试使用Binwalk提取从闪存转储的二进制固件映像的内容,但是Binwalk不显示任何内容。
我尝试了命令

binwalk -Me file.bin
binwalk --dd='.*' file.bin


固件映像未显示任何人类可读的字符串。 strings命令返回Entropy也许二进制图像既未加密也不压缩?



#1 楼

我试过了:

$> binwalk --opcodes Image1.bin

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
348           0x15C           MIPS instructions, function epilogue
516           0x204           MIPS instructions, function epilogue
652           0x28C           MIPS instructions, function epilogue
780           0x30C           MIPS instructions, function epilogue
1160          0x488           MIPS instructions, function epilogue
1268          0x4F4           MIPS instructions, function epilogue
2208          0x8A0           MIPS instructions, function epilogue
....


所以,对我来说,它真的像是原始的MIPS二进制文件。我猜想该固件是用于路由器或类似设备的固件。原始二进制文件”只是其中包含原始操作码的文件,没有任何特定的可识别格式(例如ELF,PE或Mach-O)。原始格式仅打算直接映射到内存中,而无需先通过操作系统。这在嵌入式软件世界中非常普遍。

评论


是的,它的固件用于eMTA调制解调器MIPS cpu。哪种基于Linux的反汇编程序工具适合于此? (对于Windows平台,我肯定使用它的IDA Pro)。有没有办法将原始操作码转换为可读的汇编代码?

– minto
18年7月30日在10:16



我可以建议您阅读此SO问题的答案。它提供了一些很好的提示来解决您的问题。并且,一旦确定原始格式,您实际上就不需要将原始格式转换为其他格式。只需将其拆卸即可。 :)

–恐怖
18年7月30日在10:49



在这种情况下,固件的其他部分(引导加载程序,Perm.Nonvol,动态Nonvol)也应为原始二进制文件格式,也可以为其他格式吗?其中至少一个(动态非卷)具有可读的字符串。

– minto
18年7月30日在12:09

固件可能分为两部分:一部分用于系统的内存转储,另一部分将是位于可读写大容量存储器中的文件系统。但是,这纯粹是猜测,我没有足够的信息可以说出更多的猜测。

–恐怖
18年7月30日在12:16

对于其他文件,Bootloader和Permnonvol文件具有相同的格式,binwalk --opcodes显示它们是带有操作码的原始二进制文件。 Dynnonvol文件不同,没有操作码,binwalk --dd ='。*'提取了6个文件。因此,在我的情况下,闪存设备区域具有不同的格式。

– minto
18年7月31日在21:24