首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >取消定义可重定位ELF符号表中的符号的工具

取消定义可重定位ELF符号表中的符号的工具
EN

Stack Overflow用户
提问于 2020-08-20 08:22:52
回答 1查看 173关注 0票数 1

有没有什么实用程序可以修补ELF符号表中的任意符号,从而使已定义的符号变得未定义?例如,下面是我要处理的文件的readelf --syms

代码语言:javascript
运行
复制
Symbol table '.symtab' contains 8 entries:
   Num:    Value          Size Type    Bind   Vis      Ndx Name
     0: 0000000000000000     0 NOTYPE  LOCAL  DEFAULT  UND 
     ...
     5: 0000000000000000    13 FUNC    WEAK   DEFAULT    3 my_message
     6: 0000000000000000    19 FUNC    GLOBAL DEFAULT    5 print_msg
     7: 0000000000000000     0 NOTYPE  GLOBAL DEFAULT  UND puts

下面是未定义my_message的相同二进制文件的预期输出:

代码语言:javascript
运行
复制
Symbol table '.symtab' contains 8 entries:
   Num:    Value          Size Type    Bind   Vis      Ndx Name
     0: 0000000000000000     0 NOTYPE  LOCAL  DEFAULT  UND 
     ...
     5: 0000000000000000     0 NOTYPE  GLOBAL DEFAULT  UND my_message
     6: 0000000000000000    19 FUNC    GLOBAL DEFAULT    5 print_msg
     7: 0000000000000000     0 NOTYPE  GLOBAL DEFAULT  UND puts

ELF文件本身是可重定位的。修改应该只改变符号表。包含原始符号定义的实际部分应保持不变。我已经检查过GNU Binutils和objcopy可能是我正在寻找的,但到目前为止,我还没有想出任何选项(或组合)来给我提供上述行为。

事实上,这样的工具应该足够简单易于实现(即使没有像BFD这样的额外库),但我想知道是否有一些现有的东西我可能会错过。

EN

回答 1

Stack Overflow用户

发布于 2020-08-20 15:33:27

您可以查看ELFIO库的“匿名器”示例。该示例重写了符号的名称。重写symbol的类型也可以类似地实现。但将需要处理“.symtab”节。

这不完全是一个工具,而是一个允许实现这种工具的库。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63496685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档