我知道有人问过这个话题,但我已经按照每个步骤进行操作,但似乎都不起作用。
我目前正在尝试了解一个可执行文件的功能,但我没有获得该可执行文件的源代码。这意味着我无法控制它的编译等。它是一个 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 明确告诉我,进入调试器后该文件并不立即存在,而对于文件名,它仅在我尝试运行时才说明。我可以设置断点,并在没有框架或运行程序的情况下做一些有限的事情。
有几点需要注意:
dir /home/ec2-user
我在 bash 原生日期文件上进行了测试,它确实有效,所以这不是 gdb 的问题。
这让我相信以下几件事之一:
如有任何帮助,我们将不胜感激!
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 应用程序”提供了许多可能的答案,尽管我不确定哪一个最合适。
我遇到过类似的东西,我正在尝试用 gdb 反汇编它。我根本无法在 gdb 中运行它,你是如何解决这个问题的?