pra*_*een 1 shared-libraries binutils objcopy readelf
我需要更改共享库 (.so) 文件中的某些符号,如下例所示:我需要将abc.so 文件中的符号重命名为 symbol xyz。我有一个工具可以在头文件中替换它,我面临的唯一挑战是更改我的 .so 共享库。对于共享库,是否有任何工具或命令可以帮助我反汇编 .so 文件、更新符号并再次重新组装为 .so 文件?对于共享库,我们需要一种重建符号表的机制。如果有任何工具可以完成我的任务,需要帮助吗?
仅供参考:更改源是最好的方法,但对于短期的解决方案来说,它可以帮助在符号级别替换代码字。
小智 5
objcopy无法重命名共享库上的符号,只能在目标文件 ( .o) 中重命名。
Patchelf 中添加了更改共享库中名称的功能:https://github.com/NixOS/patchelf/commit/da035d6acee1e5a608aafe5f6572a67609b0198a
它应该在下一个版本(0.17.2 之后)中可用。同时,您可以按照https://github.com/NixOS/patchelf#compiling-and-testing中的说明构建该工具
要使用它,请创建一个每行具有两个名称(旧名称和新名称)的映射文件,并使用以下命令调用 Patchelf:
$ patchelf --output libPatched.so --rename-dynamic-symbols map_file libOriginal.so
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1693 次 |
| 最近记录: |