lief-patchelf: インタープリタと依存関係の修正のためのクロスプラットフォームELFエディタ
ELFインタープリターパスを変更し、DT_NEEDEDエントリを追加または削除し、WindowsまたはLinuxホストからRPATHまたはSONAME値を編集します。LIEFプロジェクトの一環としてRomain Thomasによって作成されたこのツールは、LIEFのセグメント指向のリライトエンジンを使用して、古典的なNixOS patchelf CLIをRustで再実装しています。シェル補完とマニュアルページをサポートしており、互換性や分析のために正確なクロスホストバイナリエディットが必要なセキュリティ研究者、パッケージ作成者、DevOpsエンジニアに適しています。
ELFバイナリ内でツールが実際に変更するもの
ツールは具体的なELFフィールドを編集します:動的リンカー(インタプリタ)パス、DT_NEEDED依存関係エントリ、RPATHおよびRUNPATH文字列、そしてライブラリのSONAMEです。また、参照されているライブラリを含まないディレクトリを削除することでRPATHを縮小することもできます。これらの操作はコマンドラインから実行され、元のpatchelfインターフェースとの互換性を維持するため、古典的なCLIを呼び出すスクリプトはツールを変更することなく受け入れます。
混合ファイルシステムにおける書き換えプロセスの信頼性
ツールはセクションベースの方法ではなく、LIEFライブラリからのセグメントベースの書き換えエンジンを使用しており、バイナリが非標準または最適化されたセグメントレイアウトを持つ場合のレイアウトの破損を減少させます。Rustで書かれているため、バイナリ書き換え中のメモリ安全性の利点があります。Windows、Linux、macOS向けのクロスプラットフォームビルドにより、ネイティブLinux環境を実行できない場合でも、ターゲットランタイムとは異なるホスト上でELFファイルをパッチできます。
安全性、システムへの影響、およびワークフロー要件
ツールはELFファイルに直接操作するスタンドアロンCLIであり、オンラインシステム変更を試みることはありません。元のユーティリティとのコマンドラインの平等性を保持しているため、自動化されたパイプラインは既存のスクリプトと同じ方法で呼び出すことができます。配布には事前コンパイルされたバイナリまたはRustツールチェーンを介したソースビルドが提供されているため、ユーザーは基本的なコマンドラインの経験が必要であり、ソースからコンパイルすることを選択した場合にのみRustツールチェーンが必要です。
技術的ユーザーへの実用的な推奨
このツールは、非LinuxホストからELFメタデータを編集しなければならないエンジニアにとって正確なオプションです。patchelf CLIに依存するワークフローに適しています。変更をバイナリのコピーに対してテストし、デプロイ前に適切なランタイムまたはエミュレーターでパッチを適用した実行可能ファイルを実行してください。推奨します。





