1

我需要了解链接器是如何工作的,以及链接器如何制作一个包含所有不同部分和段的 .exe。更准确地说,我希望至少能够使用十六进制编辑器制作一个包含以下代码的 .exe。

int main()
{
}

请建议我一些必要的阅读。我有 John Levine 的 Linkers & Loaders。

4

2 回答 2

4

Ian Lance Taylor 编写了一个新的 ELF 链接器,名为gold. 他在一系列博客文章中描述了链接器执行的一般任务。

这与 PE 链接器的功能在细节上有所不同,但总体思路都是相同的(与“链接器和加载器”中的相同)。

我想至少能够制作一个包含以下代码的.exe,我的双手使用十六进制编辑器

我不确定在这种情况下你为什么想要一个链接器。阅读PE 文件格式的描述,构造必要的头文件,写一个.text包含 的小节xor %eax,%eax; ret,设置该节的入口点,...,利润?

于 2012-06-11T03:01:57.053 回答
1

(静态)链接器如何工作:获取所有必要的目标文件(模块),合并/组合/展平地址,以便模块间调用可能且正确,构建它们以满足可执行格式要求,并可能进行链接时间优化。

要创建可执行文件(请注意,这里我不是指任何特定格式),您必须知道可执行文件格式,通常由标题和部分以及任何所需的启动代码组成(编译器通常已经将其作为目标文件提供,预编译)。对于 PE (.exe) 文件,MSDN有很好的解释。

于 2012-06-10T13:22:35.793 回答