我从其他SO线程中了解到gdb可以在64位架构上调试32位和64位二进制文件,但是当我运行它时,我遇到以下问题:
Starting program: /root/crackme-01
/bin/bash: /root/crackme-01: No such file or directory
During startup program exited with code 127.
以下是程序文件的结果:
crackme-01: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=9feb70a8647779984dc69b1e5c90bd757343fb29, stripped
还有什么我应该做的调试吗?
感谢您的帮助。
答案 0 :(得分:3)
GDB只能调试可以自行启动的程序。在您的情况下,程序根本无法启动(在您的进程的用户空间中没有执行任何单个指令,execve
系统调用失败)。这样:
/bin/bash: /root/crackme-01: No such file or directory
几乎总是由缺少程序解释器引起的。您可以这样看解释器:
readelf -l /root/crackme-01 | grep interpreter
在您的情况下,解释器几乎肯定是/lib/ld-linux.so.2
。
我只是错过了这些库
您遗失了libc6:i386
,其中ld-linux.so.2
是其中的一部分。
答案 1 :(得分:0)
我刚刚错过了here
所解释的库我需要安装32位libs:
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386