プログラムにリンクされているライブラリは、lddコマンドで調べられます。
例えば、whoamiコマンドでは下記のように3つのライブラリがリンクされています。
$ ldd /usr/bin/whoami linux-gate.so.1 => (0xb7849000) libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb76db000) /lib/ld-linux.so.2 (0xb784a000) $
さらにnmコマンドでライブラリに定義されている名前を引くことができます。
オプションを付けないで実行するとダイナミックシンボルが見つかりません。
$ nm /lib/tls/i686/cmov/libc.so.6 nm: /lib/tls/i686/cmov/libc.so.6: no symbols $
ダイナミックシンボルも参照するようにオプションを付けるとシンボルを見ることができます。
libc.so.6は、C言語の標準ライブラリでprintfのような標準ライブラリが見つかります。
$ nm -D /lib/tls/i686/cmov/libc.so.6 | grep fprintf 00049b80 W _IO_fprintf 0003f830 T _IO_vfprintf 000fba50 T __fprintf_chk 000fbcc0 T __vfprintf_chk 00049b80 T fprintf 0003f830 T vfprintf $ nm -D -A /lib/tls/i686/cmov/libc.so.6 | grep fprintf /lib/tls/i686/cmov/libc.so.6:00049b80 W _IO_fprintf /lib/tls/i686/cmov/libc.so.6:0003f830 T _IO_vfprintf /lib/tls/i686/cmov/libc.so.6:000fba50 T __fprintf_chk /lib/tls/i686/cmov/libc.so.6:000fbcc0 T __vfprintf_chk /lib/tls/i686/cmov/libc.so.6:00049b80 T fprintf /lib/tls/i686/cmov/libc.so.6:0003f830 T vfprintf $ nm -D -A /lib/tls/i686/cmov/libc.so.6 | grep "T getpwuid" /lib/tls/i686/cmov/libc.so.6:0009e470 T getpwuid /lib/tls/i686/cmov/libc.so.6:001271d0 T getpwuid_r /lib/tls/i686/cmov/libc.so.6:0009eaa0 T getpwuid_r $ nm -D -A /lib/tls/i686/cmov/libc.so.6 | grep getuid /lib/tls/i686/cmov/libc.so.6:000a0670 W getuid $