24得票2回答
使用clang++,-fvisibility=hidden和typeinfo以及类型抹除

这是我在Mac OS X上使用clang++时遇到的问题的简化版本。为了使问题更真实,对其进行了严格编辑(第一次尝试描述该问题时并未展现问题)。 失败原因: 我有一个大型C++软件,其中目标文件中有大量符号,因此我使用“-fvisibility=hidden”来保持我的符号表小。众所周知,...

24得票5回答
如何获取自定义ELF节的起始和结束地址?

我在 Linux 上使用 C 语言工作。我看到了 gcc 的 __section__ 属性的用法(尤其是在 Linux 内核中),可以将数据(通常是函数指针)收集到自定义 ELF 节段中。如何检索并使用放置在这些自定义节段中的 "东西"?

24得票1回答
a.out、.ELF、.EXE和.COFF之间的使用差异

看到问题标题不要误解我的意思 - 我知道它们是什么(可移植可执行文件格式)。但我的兴趣范围略有不同。 我的困惑 我涉及重新主机化/重新定位最初来自第三方的应用程序。问题在于,有时目标代码的格式也是 .elf、.COFF 格式,并且仍然称为“可执行和可链接”。 我主要是 Windows ...

24得票4回答
gcc是否有选项可以在ELF二进制文件中添加版本信息?

我是指gcc是否可以将一些源代码版本信息插入ELF二进制文件中,例如作为一个段(section)或类似的方式。 我不想改变我的源文件,而是想在Makefile中使用gcc选项来添加一些信息。

23得票5回答
向ELF文件添加节(section)

我需要能够向ELF文件添加任意节(section)。但是由于此程序中不能使用GPL代码,因此BFD不可行。我可以使用libelf/gelf来读取节,但这些文档相当匮乏,而且我无法弄清如何添加一个节。有人知道怎么做吗?我不想编写自己的ELF代码。

23得票3回答
何时需要使用 GAS ELF 指令 .type、.thumb、.size 和 .section?

我正在为基于ARM Cortex-M3的微控制器编写汇编程序(使用Thumb 2指令集),使用GNU as。 在一些示例代码中,我发现了像 .size、.section 和 .type 这样的指令,我明白它们是ELF指令。举个例子: .section .text.Reset_Han...

22得票3回答
如何在没有任何符号信息的情况下找到elf可执行文件的主函数入口点?

我在 Ubuntu-Linux 11.10 平台上开发了一个小的 C++ 程序。 现在我想要进行逆向工程,但我是初学者。我使用这些工具:GDB 7.0、hte 编辑器和十六进制编辑器。 第一次很容易就做到了。在符号信息的帮助下,我找到了主函数的地址,并完成了所有需要的工作。 然后我去掉了可执...

22得票2回答
加载时 ELF 重定位

我正在Linux下编写一个简单的用户空间ELF加载器(为了“好玩”)。目前我的加载器非常简单,并且只设计用于加载包含位置无关代码的静态链接ELF文件。 通常,当程序由内核的ELF加载器加载时,它会被加载到自己的地址空间中。因此,数据段和代码段可以按照ELF段中指定的正确虚拟地址加载。 然而...

22得票1回答
如何移除特定的ELF节(section),而不会剥离其他符号?

我有一个 ELF 32 位 x86 文件,其中包含一个 .eh_frame 部分,尽管我试图1删除它。 我想删除 .eh_frame 部分,而不触动其他部分中的任何符号,包括未使用的符号。 strip 似乎没有 --remove-only 选项,并且它总是会修改其他部分。 如何在不修改文...

22得票6回答
不同的段(如堆、栈、文本)与物理内存有什么关系?

当C程序被编译并创建目标文件(ELF)时,目标文件包含不同的段,例如bss、data、text和其他片段。我理解这些ELF的节是虚拟内存地址空间的一部分。如果我理解有误,请纠正我。 此外,编译后的程序将与虚拟内存和页表相关联。页表将ELF中存在的虚拟内存地址与加载程序时的实际物理内存地址关联...