在 VMware 上加载 ARM (MIPS-MIPS32) Linux 文件系统?

Load ARM (MIPS-MIPS32) Linux filesystem on VMware?

我有一个 Linux MIPS 架构的固件。是否可以在 VMWare 中加载这样的固件映像? 我正在尝试进行逆向工程,但碰壁了。 这是 binwalk 输出:

8212          0x2014          uImage header, header size: 64 bytes, header CRC: 0xD384760C, created: 2021-12-01 11:10:32, image size: 1975811 bytes, Data Address: 0x81001000, Entry Point: 0x813E4860, data CRC: 0xE74BA6F, OS: Linux, CPU: MIPS, image type: OS Kernel Image, compression type: lzma, image name: "Linux Kernel Image"
8276          0x2054          LZMA compressed data, properties: 0x5D, dictionary size: 33554432 bytes, uncompressed size: 5748736 bytes
1984088       0x1E4658        Squashfs filesystem, little endian, version 4.0, compression:xz, size: 10883970 bytes, 2239 inodes, blocksize: 131072 bytes, created: 2021-12-02 11:17:54

我已经设法从 .bin 文件中提取了原始文件系统,但无法进一步提取。我将如何在 VMware 中加载这样的东西?由于架构差异,它甚至可能吗? 它有一个 squashfs-root 文件,还有一些二进制文件。我自己在 windows(通过 WSL 做所有事情),但并不害羞 Linux。这是二进制文件的一些 LS 输出:

如前所述,我能够使用 7zip 从二进制文件中提取文件。但这会删除其他 1E4658.squashfs 文件、2054 文件和 2054.7z,并且只会从 squashfs-root.

中解压缩 linux 文件系统

1E4658.squashfs 文件,似乎是整个文件系统的副本。 (我想也许是为了验证?我不知道。)

它是我的 TP-link deco 的固件。如果有人有进一步逆向工程的任何技巧,请分享!! :)

How would I go about loading something like this in VMware?
Would it even be possible due to architecture differences?

VMware 模拟 x86 桌面 PC。

您可以将软盘、CD-ROM 或 DVD 映像附加到 VMware 以模拟此类媒体。

如果您在包含可以提取固件映像文件的工具(类似于 7z)的虚拟机(在 VMware 中运行)中安装了一些操作系统,则复制固件映像是有意义的到虚拟机 - 在这种情况下,该文件只是 VMware 的“常规”文件(就像文本文档或 PNG 图像一样)。

但是,VMware 本身无法对 ARM 或 MIPS 的固件映像做任何事情。

I am able to extract the files with 7zip from the binary, as stated. But this removes the ... files ...

看了你的截图,我怀疑我是否理解正确。

如果我正确理解“binwalk”输出,第一个文件从偏移量 8212(十六进制 0x2014)开始,第二个文件从偏移量 8276 开始,SquashFS 图像从偏移量开始。

因此,如果您想要文件 2014,您可以使用 dd 工具从固件映像中提取该文件:

dd if=firmware_image of=output_filename bs=1 count=64 skip=8212

(将 firmware_image 替换为固件映像的文件名,并将 output_filename 替换为文件 2014 所需的文件名;示例:2014.bin

对于第二个文件使用:count=1975812(因为文件的大小是:1984088-8276=1975812)和skip=8276。对于 SquashFS 映像,使用 skip=1984088 并省略 count= 参数(这意味着:解压到文件末尾)。

然而:

2014 文件的内容已经被“binwalk”显示:

uImage header, header size ... name: "Linux Kernel Image"

该文件除此行信息外不再包含任何数据。

2054 文件是操作系统内核映像。这样的图像不包含任何可以读取的“有用”信息。

并且内核映像将在其预期的设备上工作 - 它不会在“MIPS-based 路由器”上工作,但它只会在MIPS-based 路由器“Example Industries Inc, ABC-1234-D”。