July 21, 2009

Sapere se un binario è strippato (in linux)

Ci sono (almeno) due modi per sapere se un binario è strippato (senza simboli di debug) oppure no.

Il migliore, a mio avviso, è mediante l’utilizzo di scanelf:

Per verificare uno o più file:

[email protected] ~ % scanelf --quiet --symlink --section ".symtab" --format "#k%F" /lib/*
/lib/libpthread-2.9.so

Oppure in maniera ricorsiva:

[email protected] ~ % scanelf --quiet --symlink --recursive --section ".symtab" --format "#k%F" /lib
/lib/libpthread-2.9.so
...

Vedere quali file non sono strippati (l’opposto di prima):

[email protected] ~ % scanelf --quiet --symlink --section "\!.symtab" --format "#k%F" /lib/*
/lib/libthread_db-1.0.so
...

L’unica pecca di questo modo è che bisogna installare pax-utils, disponibile in ogni distribuzione mediante il proprio package manager.