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