関連する質問が2つあります。
lsof
を使用すると、両方を実行できます。どのプロセスがライブラリを開いているか、マップしているかを確認するには、次のようにします。
lsof /path/to/lib.so
また、プロセスが開いているファイルやマップしているファイル(共有ライブラリを含む)を確認するには、次のようにします。
lsof -p <pid>
プロセスに何がロードされているかを確認する別の方法は、/proc/PID/maps
ファイル。これは、マップされた共有オブジェクトを含む、アドレス空間にマップされたすべてを示します。
_Sudo grep libcairo.so /proc/*/maps
_
すべての_/proc/PID/maps
_ Richが言及 を一度に探索するための良い方法です。出力例:
_/proc/8390/maps:7f0a9afae000-7f0a9b0bc000 r-xp 00000000 fc:00 274690 /usr/lib/x86_64-linux-gnu/libcairo.so.2.11400.6
/proc/8390/maps:7f0a9b0bc000-7f0a9b2bc000 ---p 0010e000 fc:00 274690 /usr/lib/x86_64-linux-gnu/libcairo.so.2.11400.6
/proc/8390/maps:7f0a9b2bc000-7f0a9b2bf000 r--p 0010e000 fc:00 274690 /usr/lib/x86_64-linux-gnu/libcairo.so.2.11400.6
/proc/8390/maps:7f0a9b2bf000-7f0a9b2c0000 rw-p 00111000 fc:00 274690 /usr/lib/x86_64-linux-gnu/libcairo.so.2.11400.6
/proc/8466/maps:7f0a9afae000-7f0a9b0bc000 r-xp 00000000 fc:00 274690 /usr/lib/x86_64-linux-gnu/libcairo.so.2.11400.6
/proc/8466/maps:7f0a9b0bc000-7f0a9b2bc000 ---p 0010e000 fc:00 274690 /usr/lib/x86_64-linux-gnu/libcairo.so.2.11400.6
/proc/8466/maps:7f0a9b2bc000-7f0a9b2bf000 r--p 0010e000 fc:00 274690 /usr/lib/x86_64-linux-gnu/libcairo.so.2.11400.6
/proc/8466/maps:7f0a9b2bf000-7f0a9b2c0000 rw-p 00111000 fc:00 274690 /usr/lib/x86_64-linux-gnu/libcairo.so.2.11400.6
_
さらにawk
とbash-fuを使用すると、出力をさらに絞り込むことができます。
このメソッドは、Ubuntu 18.04でdlopen
を使用して開かれたライブラリを この最小限のセットアップ でテストされ、sleep(1000)
でハッキングされたライブラリも表示します。
Rootで次のコマンドを実行して、完全なリストを表示できます。
cat /proc/*/maps | awk '{print $6;}' | grep '\.so' | sort | uniq
これは、lsofを持たないユーザー向けです。