【问题标题】:Change where in elf file code execution starts更改 elf 文件代码执行的开始位置
【发布时间】:2022-01-07 11:57:37
【问题描述】:

我想更改 elf 文件执行的开始位置。例如,我在一个 elf 文件中有一个基本的 hello world 程序。实际代码位于文件中 0x1000 字节的偏移处。我想将该代码移动到 0x900 偏移量并修改文件,使其在 0x900 开始执行。我知道这听起来有点没用,但它确实有目的。

【问题讨论】:

    标签: elf


    【解决方案1】:

    首先你将你的程序编译/组装(clang/as/...)成一个hello.o ELF 目标文件。此时,您通常会让编译器驱动程序完成工作并发出 ELF 可执行文件。

    您可以改为使用链接器 (lld/ld/...) 并使用 --entry 0x900 指定入口点。您也可以使用链接描述文件执行此操作。请注意,如果您这样做,您必须处理编译器驱动程序通常为您处理的一堆东西。 Oracle 链接器手册中的警告说:

    当您直接调用链接编辑器时,您必须提供每个 创建预期输出所需的目标文件和库。这 链接编辑器不对目标模块或库做任何假设 您打算在创建输出时使用。

    【讨论】:

      猜你喜欢
      • 2018-12-12
      • 1970-01-01
      • 2015-01-21
      • 1970-01-01
      • 2023-01-24
      • 2017-08-09
      • 1970-01-01
      • 2012-12-09
      • 2020-09-17
      相关资源
      最近更新 更多