文件,更改了
rwx
属性并尝试执行它,但没有成功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
如果我列出目录的内容,该文件实际上就存在。我确实注意到一些缺少的库:
root@debian-mips:~/myfiles/# ./generator
-bash: ./generator: No such file or directory
,所以我从提取的路由器固件文件中复制了丢失的
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 => 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)
从路由器提取的固件中再次复制它: >
此时一切似乎都不错:
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
但是,我仍然无法执行该文件。
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)
库文件删除thos后,我的工作变得更加混乱ei复制并尝试了类似的方法:
root@debian-mips:~/myfiles# file generator
generator: ELF 32-bit MSB executable, MIPS, MIPS32 version 1 (SYSV), dynamically linked (uses shared libs), stripped
同样令人失望的是“没有这样的文件或目录消息” ...
值得赞赏的原因是,在这一切之后,感觉就像是死路一条。我必须手动找到它并dpkg,这样毕竟可以给出以下结果: />
#1 楼
尝试使用readelf
比较固件二进制文件和任何“马耳他”二进制文件,以发现差异。 示例:
$ readelf -a gdb | more
ELF Header:
Magic: 7f 45 4c 46 01 02 01 00 00 00 00 00 00 00 00 00
Class: ELF32
Data: 2's complement, big endian
Version: 1 (current)
OS/ABI: UNIX - System V
ABI Version: 0
Type: EXEC (Executable file)
Machine: MIPS R3000
Version: 0x1
Entry point address: 0x431fd0
Start of program headers: 52 (bytes into file)
Start of section headers: 4016720 (bytes into file)
Flags: 0x5, noreorder, cpic, mips1
...
评论
我有足够的名声只能评论自己:) @Cyrax:vmlinux-2.6.32-5-4kc-malta是非常具体的ELF文件。我的意思是将提取的文件(生成器)与来自debian-mips环境的任何常规文件(/ bin / bash)进行比较。请注意两个文件的“程序头”部分中的字符串“请求程序解释器”。
–伊戈尔·马秋(Igor Matyuh)
18-10-2在23:43
#2 楼
由于具有固件映像,因此一种更简单的方法是chroot
进入设备的根文件系统(例如# chroot path/to/firmware /bin/sh
)。这样可以减轻可能难以解决的任何动态加载问题。唯一的要求是,必须为正确的体系结构安装qemu二进制文件。
评论
你能告诉我们strace ./generator的输出吗?确保以递归方式解决.sos的所有依赖项
你是怎么挖出来的?