如何从这个固件 bin 文件中提取操作系统文件

逆向工程 反编译 固件
2021-07-10 08:39:54

我正在尝试更改我们正在使用的一台调制解调器的设置。我尝试了 binwalk 和 FMK,但它们无法提取任何内容。binwalk 的输出似乎是误报:

binwalk modem.bin 

DECIMAL     HEX         DESCRIPTION
-------------------------------------------------------------------------------------------------------
1226103     0x12B577    LZMA compressed data, properties: 0x04, dictionary size: 16777216 bytes, uncompressed size: 33554432 bytes
1403399     0x156A07    LZMA compressed data, properties: 0x01, dictionary size: 33554432 bytes, uncompressed size: 67108864 bytes
1403495     0x156A67    LZMA compressed data, properties: 0x88, dictionary size: 33554432 bytes, uncompressed size: 553648128 bytes

binwalk -e modem.bin 

DECIMAL     HEX         DESCRIPTION
-------------------------------------------------------------------------------------------------------
WARNING: Extractor.execute failed to run '7zr e -y '12B577.7z'': [Errno 2] No such file or directory
1226103     0x12B577    LZMA compressed data, properties: 0x04, dictionary size: 16777216 bytes, uncompressed size: 33554432 bytes
WARNING: Extractor.execute failed to run '7zr e -y '156A07.7z'': [Errno 2] No such file or directory
1403399     0x156A07    LZMA compressed data, properties: 0x01, dictionary size: 33554432 bytes, uncompressed size: 67108864 bytes
WARNING: Extractor.execute failed to run '7zr e -y '156A67.7z'': [Errno 2] No such file or directory
1403495     0x156A67    LZMA compressed data, properties: 0x88, dictionary size: 33554432 bytes, uncompressed size: 553648128 bytes

而 FMK 给了我:找不到支持的文件系统!正在中止...

我不认为它是加密的,因为字符串给出了很多词。我所知道的关于这个固件的所有信息是它的操作系统是 pSOS 2.1 并且在摩托罗拉/飞思卡尔 PowerQUICC MPC860 上运行......

有人可以查看该文件并帮助我提取它吗?

BIN 文件

另外我有一个调制解调器的 .map 文件,它可能被错误地发送,它是列表文件 不知道这个文件的种类是什么??!!.map 文件

2个回答

固件文件是一个原始二进制映像,可能会直接写入闪存。它是未压缩的。要将其加载到 IDA 中,只需选择 ppc 处理器(PowerQUICC 是一种 Power Architecture,因此 ppc 反汇编器支持)至于映射文件 - 它是调试信息。维基解释..

调试地图。这些通常是纯文本文件,指示已编译二进制文件的给定版本的函数的相对偏移量。

为了在 IDA 中正确查看它,您必须找到正确的加载地址(找到它的方法很多,请阅读处理器内存映射)。


请记住,由于这是一个原始二进制图像,IDA 本身在反编译它时做得很差(没有头文件告诉它代码在哪里......)。您需要帮助(最好)使用 IDAPython 来手动定义函数。函数可以通过调用和返回约定来标识:此架构的一种可能的调用约定:

stwu      r1, -0x18(r1)
mflr      r0

*0x18 将根据所需的堆栈大小从函数更改为函数。并返回:

blr

1.4 MB 文件的未压缩大小为 553 MB 表明这可能是误报。

非均匀熵和大量字符串也意味着这个文件根本没有打包:

$ strings modem.bin | tail
tcp_output
tcp_output REXMT
tcp_usrreq
pNA+ NI Loopback Driver
33333
~(JEN
UUUUU>
>f7ir
shutdown requested
Libra - unknown destination instrument ID

此文件可能包含机器代码,请尝试将其按原样加载到反汇编程序中。