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

use*_*430 5 gdb 32bit-64bit

我从其他 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.
Run Code Online (Sandbox Code Playgroud)

这是程序上文件的结果:

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
Run Code Online (Sandbox Code Playgroud)

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

谢谢你的帮助。

Emp*_*ian 3

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

/bin/bash: /root/crackme-01: No such file or directory
Run Code Online (Sandbox Code Playgroud)

几乎总是由缺少程序解释器引起的。你可以像这样看到解释器:

readelf -l /root/crackme-01 | grep interpreter
Run Code Online (Sandbox Code Playgroud)

就您而言,口译员几乎可以肯定是/lib/ld-linux.so.2

我只是想念图书馆

你失踪了libc6:i386,这ld-linux.so.2是的一部分。