заменить путь к существующей библиотеке на собственный путь
Если это ваша собственная библиотека, то вы, вероятно, связываете ее так:
$ cc -o prog1 -l/full/path/to/libABC.so prog1.o
вместоправильное:
$ cc -o prog1 -L/full/path/to/ -lABC prog1.o
Первый подход говорит компоновщику Linux, что приложению нужна именно эта библиотека, только эта библиотека и никакое переопределение не должно быть возможным.Второй подход говорит о том, что приложению нужна библиотека, которая была бы установлена где-то в системе, либо по пути к библиотеке по умолчанию, либо по пути, указанному в $ LD_LIBRARY_PATH (будет просматриваться во время выполнения).-L используется только во время соединения.
В противном случае, вместо исправления ELF, сначала проверьте, можете ли вы заменить библиотеку с помощью символической ссылки.Это обычная уловка: потом сложно изменить исполняемый файл, но очень легко изменить, где находятся точки символической ссылки.