GNU/Linux >> Linux の 問題 >  >> Linux

ELF バイナリの動的セクションを変更するためのツール

<ブロック引用>

既存のライブラリへのパスをカスタム パスに置き換えます

これがあなた自身のライブラリである場合、おそらく次のようにリンクします:

$ cc -o prog1 -l/full/path/to/libABC.so prog1.o

適切な代わりに:

$ cc -o prog1 -L/full/path/to/ -lABC prog1.o

最初のアプローチは、アプリケーションが正確にそのライブラリを必要とし、そのライブラリのみが必要であり、オーバーライドが不可能であることを Linux リンカに伝えます。 2 番目のアプローチは、システムのどこかにインストールされるライブラリがアプリケーションに必要であることを示します。デフォルトのライブラリ パスまたは $LD_LIBRARY_PATH (実行時に検索されます) で指定されたパスのいずれかにインストールされます。 -L はリンク時にのみ使用されます。

それ以外の場合は、ELF にパッチを適用する代わりに、シンボリック リンクを使用してライブラリを置き換えることができるかどうかを最初に確認してください。これは通常のトリックです:後で実行可能ファイルを変更するのは難しいですが、シンボリック リンク ポイントの場所を変更するのは非常に簡単です。


patchelf あなたが望むものです

$ patchelf --replace-needed LIB_ORIGIN  LIB_NEW  ELF_FILE

効果を見るには

$ readelf -d ELF_FILE

ツールのインストールは簡単です:

$ sudo apt-get install patchelf readelf

Linux
  1. ネットワークのトラブルシューティングにSSツールを使用する

  2. Nutty –Ubuntu用のネットワーク診断ツール

  3. Deepinシステムモニター–DeepinOS用のスタイリッシュなシステムモニターツール

  1. Linux 上の C++ 動的共有ライブラリ

  2. ELF ファイルへのセクションの追加

  3. libtool の .la ファイルは何のためのものですか?

  1. LinuxでJNIアプリケーションの動的ライブラリをコンパイルするには?

  2. ssh 用の teamviewer のようなツール?

  3. BlueZ 用 Bluetooth ライブラリ (Windows)