GDB:找不到文件/找不到所需文件

问题描述 投票:0回答:2

我知道有人问过这个话题,但我已经按照每个步骤进行操作,但似乎都不起作用。

我目前正在尝试了解一个可执行文件的功能,但我没有获得该可执行文件的源代码。这意味着我无法控制它的编译等。它是一个 ELF 64 位 LSB 饼可执行文件,ARM aarch64 文件。

为此,我回想起我的计算机体系结构课程,其中我们学习了如何使用 gdb 单步调试程序。我目前正在尝试使用它,但遇到了一个奇怪的错误,当我尝试在 gdb 调试器中运行时,遇到了类似的错误:

/bin/bash: line 1: /home/ec2-user/filename: cannot execute: required file not found

我说“类似的东西”是因为我在 Ubuntu22 实例和 Amazon Linux 实例中都尝试过这一点。两者都返回与上述错误相同的风格。我进行了理智测试

gdb thisfiledoesnotexist

gdb 明确告诉我,进入调试器后该文件并不立即存在,而对于文件名,它仅在我尝试运行时才说明。我可以设置断点,并在没有框架或运行程序的情况下做一些有限的事情。

有几点需要注意:

  1. 我的文件位于〜/
  2. 我在 ~/ 目录中运行 gdb
  3. 我在调试器中运行了
    dir /home/ec2-user
  4. 我进行了“正常”安装,所以只需 sudo yum/apt install

我在 bash 原生日期文件上进行了测试,它确实有效,所以这不是 gdb 的问题。

这让我相信以下几件事之一:

  1. 这个可执行文件不能很好地与 gdb 配合使用,但它也不能与 lldb 配合使用
  2. 我未能正确配置 gdb。
  3. 我在 bin/bash 中缺少一些东西来允许这个可执行文件运行

如有任何帮助,我们将不胜感激!

linux assembly gdb
2个回答
3
投票

ELF 64-bit LSB pie executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /system/bin/linker64, 

问题(最有可能)是您的系统上不存在

/system/bin/linker64

这可能是一个 Android 二进制文件(使用 Bionic

libc
),并且您正在尝试在“常规”Linux 上运行它。

搜索 “在 linux 上运行 android 应用程序”提供了许多可能的答案,尽管我不确定哪一个最合适。


0
投票

我遇到过类似的东西,我正在尝试用 gdb 反汇编它。我根本无法在 gdb 中运行它,你是如何解决这个问题的?

© www.soinside.com 2019 - 2024. All rights reserved.