接头如何工作

时间:2012-06-10 11:57:53

标签: linker executable exe portable-executable

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

int main()
{
}

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

2 个答案:

答案 0 :(得分:4)

Ian Lance Taylor写了一个名为gold的新ELF链接器。他描述了连接器在一系列blog posts中所做的一般任务。

这与PE链接器的细节不同,但一般的想法都是相同的(和“连接器和装载器”中的相同。

  

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

我不确定为什么在这种情况下你想要一个链接器。阅读description of PE file format,构建必要的标题,写一个包含.text的小xor %eax,%eax; ret部分,设置该部分的入口点,......,获利?

答案 1 :(得分:1)

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

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