【问题标题】:How linkers work链接器如何工作
【发布时间】:2012-06-10 11:57:53
【问题描述】:

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

int main()
{
}

请给我一些必要的阅读建议。我有 John Levine 的链接器和加载器。

【问题讨论】:

    标签: linker executable exe portable-executable


    【解决方案1】:

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

    这在细节上与 PE 链接器的作用不同,但总体思路都相同(与“链接器和加载器”中的相同。

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2016-03-14
        • 1970-01-01
        • 1970-01-01
        • 2014-11-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多