为什么在 Linux 上以 64 位模式构建的可执行文件显示机器类型为 AMD x86 64?
我在尝试理解 ELF(可执行和链接格式)时遇到了这个问题。 我遵循的步骤 编写了一个简单的应用程序。 main.c 包含 int main(int argc, char **argv){ …
valgrind 堆栈跟踪中缺少符号
我正在使用 valgrind 调试一个通过 dlopen 使用可加载库的二进制文件。 在 debian 稳定版上,堆栈跟踪不包含可加载库内调用的符号。 | | ->11.55% (11…
如何在 llvm 中链接 elf 静态库?
我有一个 lib (*.a) 文件,是用 armcc 以 elf 格式创建的。无法使用 llvm 或 gcc 重新编译它。 (它是为armcc编写的汇编程序)。 将其与 gnu ld 链接…
readelf 与 objdump:为什么两者都需要
我需要了解我正在从事的项目的 ELF 文件布局,并且我注意到这些工具的存在。 为什么所有 Linux 发行版都包含 readelf 和 objdump?这些工具互相补充吗…
获取主可执行文件的 ELF 标头
出于各种目的,我试图在不解析 /proc/self/maps 的情况下获取主可执行文件的 ELF 标头的地址。我尝试解析由 dlopen/dlinfo 函数给出的 link_list 链,…
如何使 GCC 将 .text 部分编译为 ELF 二进制文件中的可写部分?
我希望能够动态更改我正在使用的库中的可执行代码。本质上,我想动态地 NOP 掉某些不需要的函数。 但是,我正在使用的库的 .text 部分是不可写的(大…
Microsoft 编译器和 GNU 编译器在输出可执行文件大小方面的差异
假设我有以下程序: #include int main() { printf("This is a sample C program.\n"); return 0; } 如果我在 Windows 7 32 位机器上使用 Microsoft …
objcopy 参数 --strip-all 删除 ELF 格式的哪些部分?
我确实编译并链接了我的程序,并且得到了 ELF32 小尾数法的格式,其构建如下: ELF Header: Magic: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00…
CentOS 64 位糟糕的 ELF 解释器
我刚刚安装了 CentOS 6 64 位版本,我尝试在 64 位计算机上安装 32 位应用程序并收到此错误: /lib/ld-linux.so.2:错误的 ELF 解释器:没有这样的文…
提取 C 二进制文件中的 _fini
我基本上正在寻找一种在二进制文件中提取 _fini 地址的方法。我能想到的天真的方法是使用 objdump 并解析 _fini。有没有更好的方法来做到这一点(例如…
dylib文件的含义是什么?
我的 C++ 编译器创建包含动态库的“dylib”文件。 .dylib 和 .so 文件有什么区别? Mach-O 格式的文件和 ELF 格式的文件有什么区别?我必须构建文件以…