gpt4 book ai didi

c - 将符号表中的符号名称替换为可重定位 ELF 目标文件中的新的较长名称

转载 作者:太空宇宙 更新时间:2023-11-03 23:19:39 25 4
gpt4 key购买 nike

这是针对可重定位的 ELF 目标文件,而不是完全链接的 ELF 或 ELF 共享库。

目前如果有main.c这样的程序:

int main() {
foo();
return 0;
}

并用gcc -c main.c编译,它会生成一个main.o

我想将对 foo 的调用替换为 foolfood(更长的名称)目标文件已经创建。

因为目前如果我们延伸超过 foo 的长度 3,可重定位的 ELF 将被破坏。

我该怎么做?

最佳答案

I want to replace the call to foo with fool or food (a longer name) after the object file is already created.

这是很有可能的,但远非微不足道。

首先,您需要将 .symtab 部分复制到文件的末尾,并将所需的字符串 food\0 附加到它。

其次,您需要更新节表,并将原始 .symtab 的偏移量和长度替换为上一步添加的节的偏移量和大小。

最后,您需要找到符号(在 .symtab 部分)并用 food 字符串的偏移更新它的 st_name在第一步添加。

仅此而已。

关于c - 将符号表中的符号名称替换为可重定位 ELF 目标文件中的新的较长名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44038772/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com