使用 GDB 在 64 位机器上调试 32 位二进制文​​件,找不到文件

debugging a 32bit binary on a 64bit machine with GDB, file not found

我从其他 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

我还应该做些什么来调试它吗?

感谢您的帮助。

我只是缺少解释的库 here

我需要安装 32 位库:

sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386

GDB只能调试能自启动的程序。在您的情况下,程序根本无法启动(在用户 space 中没有为您的进程执行任何指令,execve 系统调用失败)。这个:

/bin/bash: /root/crackme-01: No such file or directory

几乎都是缺少程序解释器造成的。你可以看到这样的解释器:

readelf -l /root/crackme-01 | grep interpreter

在你的情况下,解释器几乎可以肯定是 /lib/ld-linux.so.2

I was just missing the libraries

您缺少 libc6:i386,其中 ld-linux.so.2 是其中的一部分。