用于修改ELF二进制文件的动态部分的工具

zer*_*lus 6 c linux elf

是否有用于修改ELF二进制文件的动态部分中的共享库条目的工具?我想显式修改二进制文件中的共享库依赖项(即用自定义路径替换现有库的路径)

Dum*_*001 3

将现有库的路径替换为自定义路径

如果这是您自己的库,那么您可能会这样链接它:

$ cc -o prog1 -l/full/path/to/libABC.so prog1.o
Run Code Online (Sandbox Code Playgroud)

而不是正确的:

$ cc -o prog1 -L/full/path/to/ -lABC prog1.o
Run Code Online (Sandbox Code Playgroud)

第一种方法告诉 Linux 链接器应用程序恰好需要该库,并且只能使用该库,并且不能覆盖。第二种方法告诉应用程序需要将安装在系统上某个位置的库,无论是在默认库路径中还是在 $LD_LIBRARY_PATH 指向的路径中(将在运行时查找)。-L 仅在链接时使用。

否则,不要修补 ELF,而是首先检查是否可以使用符号链接替换库。这是常见的技巧:事后很难修改可执行文件,但更改符号链接点的位置却很容易。