我需要了解链接器是如何工作的,以及链接器如何制作一个包含所有不同部分和段的 .exe。更准确地说,我希望至少能够使用十六进制编辑器制作一个包含以下代码的 .exe。
int main()
{
}
请建议我一些必要的阅读。我有 John Levine 的 Linkers & Loaders。
我需要了解链接器是如何工作的,以及链接器如何制作一个包含所有不同部分和段的 .exe。更准确地说,我希望至少能够使用十六进制编辑器制作一个包含以下代码的 .exe。
int main()
{
}
请建议我一些必要的阅读。我有 John Levine 的 Linkers & Loaders。
Ian Lance Taylor 编写了一个新的 ELF 链接器,名为gold
. 他在一系列博客文章中描述了链接器执行的一般任务。
这与 PE 链接器的功能在细节上有所不同,但总体思路都是相同的(与“链接器和加载器”中的相同)。
我想至少能够制作一个包含以下代码的.exe,我的双手使用十六进制编辑器
我不确定在这种情况下你为什么想要一个链接器。阅读PE 文件格式的描述,构造必要的头文件,写一个.text
包含 的小节xor %eax,%eax; ret
,设置该节的入口点,...,利润?
(静态)链接器如何工作:获取所有必要的目标文件(模块),合并/组合/展平地址,以便模块间调用可能且正确,构建它们以满足可执行格式要求,并可能进行链接时间优化。
要创建可执行文件(请注意,这里我不是指任何特定格式),您必须知道可执行文件格式,通常由标题和部分以及任何所需的启动代码组成(编译器通常已经将其作为目标文件提供,预编译)。对于 PE (.exe) 文件,MSDN有很好的解释。