HackerNews

静的バイナリにLD_PRELOADを挿入できないと思っているあなたへ:考え直してみてください

Think you can't interpose static binaries with LD_PRELOAD? Think again

https://balintreczey.hu/blog/think-you-cant-interpose-static-binaries-with-ld_preload-think-again/


静的バイナリにLD_PRELOADを直接使用することはできませんが、QEMUのユーザ空間エミュレーターを利用することで可能になります。QEMUを特別にコンパイルすることで、すべてのシステムコールをlibcを通して呼び出すように設定でき、これにより静的バイナリが動的に動作するようになります。これにより、従来はキャッシュできなかった静的リンクツールもFirebuildによってトレースやキャッシュが可能になります。また、Firebuildはexec()呼び出しを介して静的バイナリを動的に変換し、ユーザがコマンドを実行する際もこれをサポートします。最終的に、これらの方法を使うことでビルド過程を効率化し、以前は手間だった静的バイナリの扱いを簡略化することができるようになりました。