我正在尝试运行从 DSL 调制解调器路由器的提取文件系统中挖掘出来的可执行文件。因此,首先我需要有一个 MIPS Linux 机器或采用仿真路径。经过一些研究和努力,我让 QEMU 运行了一个具有网络访问和 USB 支持的 Debian MIPS 系统,以将文件复制到模拟文件系统中:
qemu-system-mips -M malta -kernel vmlinux-2.6.32-5-4kc-malta -hda debian_squeeze_mips_standard.qcow2 -append "root=/dev/sda1 console=tty0" -net nic -net tap -usb -device usb-host,hostbus=1,hostaddr=8
所以我复制了文件,更改了rwx
属性并尝试执行它,但没有成功
root@debian-mips:~/myfiles/# ./generator
-bash: ./generator: No such file or directory
如果我列出目录的内容,该文件实际上存在。在那之后,我确实注意到了一些缺少的库:
root@debian-mips:~/myfiles# ldd generator
libcrypto.so.0.9.8 => /usr/lib/libcrypto.so.0.9.8 (0x2aaad000)
libc.so.0 => not found
libd1.so.2 => /lib/libd1.so.2 (0x2ac2d000)
libz.so.1 => /usr/lib/libz.so.1 (0x2ac41000)
libc.so.6 => /lib/libc.so.6 (0x2ac67000)
/lib/ld-uClibc.so.0 => /lib/ld.so.1 (0x55550000)
所以我libc.so.0
从提取的路由器固件文件中复制了缺失的内容:
cp libc.so.0 /usr/lib
然后还有另一个丢失的文件:
root@debian-mips:~/myfiles# ldd generator
libcrypto.so.0.9.8 => /usr/lib/libcrypto.so.0.9.8 (0x2aaad000)
libc.so.0 => /usr/lib/libc.so.0 (0x2ac2d00)
libd1.so.2 => /lib/libd1.so.2 (0x2ac8f000)
libz.so.1 => /usr/lib/libz.so.1 (0x2aca3000)
libc.so.6 => /lib/libc.so.6 (0x2acc9000)
/lib/ld-uClibc.so.0 => /lib/ld.so.1 (0x55550000)
ld-uClibc.so.0 => not found
从路由器提取的固件中再次复制它:
cp ld-uClibc.so.0 /usr/lib
此时一切似乎都很好:
root@debian-mips:~/myfiles# ldd generator
libcrypto.so.0.9.8 => /usr/lib/libcrypto.so.0.9.8 (0x2aaad000)
libc.so.0 => /usr/lib/libc.so.0 (0x2ac2d00)
libd1.so.2 => /lib/libd1.so.2 (0x2ac8f000)
libz.so.1 => /usr/lib/libz.so.1 (0x2aca3000)
libc.so.6 => /lib/libc.so.6 (0x2acc9000)
ld-uClibc.so.0 => /usr/lib/ld-uClibc,so,0 (0x2ae4b000)
/lib/ld-uClibc.so.0 => /lib/ld.so.1 (0x55550000)
但是,我仍然无法执行该文件。关于它的一些附加信息:
root@debian-mips:~/myfiles# file generator
generator: ELF 32-bit MSB executable, MIPS, MIPS32 version 1 (SYSV), dynamically linked (uses shared libs), stripped
我在库文件中删除了我复制的那些文件并尝试了这样的事情:
ln -s /lib/libc.so.6 /lib/libc.so.0
root@debian-mips:~/myfiles# ldd generator
libcrypto.so.0.9.8 => /usr/lib/libcrypto.so.0.9.8 (0x2aaad000)
libc.so.0 => /lib/libc.so.0 (0x2ac2d000)
libd1.so.2 => /lib/libd1.so.2 (0x2adaf000)
libz.so.1 => /usr/lib/libz.so.1 (0x2adc3000)
/lib/ld-uClibc.so.0 => /lib/ld.so.1 (0x55550000)
仍然是同样令人失望的“没有这样的文件或目录消息”......任何形式的帮助都会受到赞赏,因为在这一切之后感觉就像一个死胡同......
@ SYS_V Debian Mips 发行版似乎没有 strace 并且 apt-get 安装失败。我不得不手动找到它并 dpkg 它,毕竟这给出了:
[11036.872000] ------------[ cut here ]------------
[11036.884000] WARNING: at /build/linux-2.6-KrPu_f/linux-2.6-2.6.32/debian/build/source_mips_none/kernel/sched.c:2628 wake_up_process+0x48/0x50()
[11036.904000] Modules linked in: ipv6 loop mtdchar uhci_hcd ehci_hcd cfi_cmdset_0001 cfi_probe gen_probe cfi_util sg physmap mtd psmouse i2c_piix4 usbcore se_mood chipreg serio_raw evdev map_funcs nls_base cdrom i2c_core
[11037.180000] Call Trace:
[11037.196000] [<8010bb24>] dump_stack+0x8/0x34
[11037.208000] [<80138a10>] warn_slowpath_common+0x70/0xb0
[11037.216000] [<8013534c>] wake_up_process+0x48/0x50
[11037.232000] [<801116ac>] arch_ptrace+0x214/0x770
[11037.244000] [<801457e8>] sys_ptrace+0x9c/0x260
[11037.256000] [<80102210>] stack_done+0x20/0x3c
[11037.268000]
[11037.280000] ---[ end trace a7daf16cd1f695f3 ]---
[11823.624000] CE: MIPS Increasing min_delta_ns to 51830 nsec
[11823.624000] CE: MIPS Increasing min_delta_ns to 77744 nsec
并在那里无限提示,需要 ctrl+c 返回到 linux 提示。