使用 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
是其中的一部分。
我从其他 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
是其中的一部分。