在 chrooted 环境中运行 mips 二进制文件时的库问题

逆向工程 固件 linux 米普 奇木 仿真
2021-06-17 06:56:23

背景

在我努力改造我的路由器的过程中,我试图在 QEMU MIPS 系统中模拟路由器的固件。我已将 debian-mips 安装到运行良好的虚拟磁盘上。它是一个 MIPS32 大端系统。我对 debian 系统没有任何问题。我已经提取了根文件系统并将其上传到 debian-mips 系统。

问题

我的问题是当我尝试从路由器固件运行任何二进制文件时:

root@debian-mips:~/firm# chroot . ./bin/busybox.old 
./bin/busybox.old: can't load library 'libcms_boardctl.so'

但是,我知道它在那里:

root@debian-mips:~/firm# ls -l ./lib/public/
total 1512
-rwxrwxrwx 1 root root    7280 Jun 28 18:27 libcms_boardctl.so
-rwxrwxrwx 1 root root   11320 Jun 28 18:27 libcms_msg.so
-rwxrwxrwx 1 root root  148944 Jun 28 18:27 libcms_util.so
-rwxrwxrwx 1 root root 1083432 Jun 28 18:27 libcrypto.so.0.9.8
-rwxrwxrwx 1 root root  275712 Jun 28 18:27 libssl.so.0.9.8

也许我的 google-fu 缺乏,但互联网上关于 chrooting MIPS 环境的信息并不多。感谢您的时间。

编辑添加文件信息:

root@debian-mips:~/firm# file public/libcms_boardctl.so 
public/libcms_boardctl.so: ELF 32-bit MSB shared object, MIPS, MIPS32 version 1 (SYSV), dynamically linked, corrupted section header size
1个回答

好吧,我不确定为什么这是答案,但在 /lib 中有两个目录:./lib/public 和 ./lib/private

只需运行该命令即可cp -r ./lib/public/* ./lib/private/* ./lib让您的二进制文件正常运行。

希望这个问题能帮助将来遇到我的问题的任何人,因为我找不到发生此事件的另一个实例。如果有人有更多信息为什么会发生这种情况,请给我留言:)