Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save thiagopilz/4cf74041c72c4e5a607c5983e808dd54 to your computer and use it in GitHub Desktop.
Save thiagopilz/4cf74041c72c4e5a607c5983e808dd54 to your computer and use it in GitHub Desktop.
como descobrir as bibliotecas dinâmicas executáveis q carrega quando executadas!
#!/usr/bin/env bash
#find-out-the-dynamic-libraries-executables-loads.sh
#-------------------------------------------
needs=`readelf -d $1 | \
awk '$2=="(NEEDED)" {
gsub("[][]", "", $5);
hits[$5]=$5
}
END {
for (i in hits) {
printf(sprintf("%s ", i))
}
}'`
ldconfig -p | \
awk -vneeds="$needs" \
'BEGIN{
split(needs,aneeds)
}
{
if (!arr[$1])
arr[$1] = $NF
}
END {
for (i in aneeds) {
need = aneeds[i];
if (arr[need]) {
print need "\t" arr[need]
} else {
print "unfulfilled:", need
}
}
}'
#-------------------------------------------
#HOW TO EXEC:
# chmod -R 777 find-out-the-dynamic-libraries-executables-loads.sh
# ./find-out-the-dynamic-libraries-executables-loads.sh /path/to/file/file.so
#EX:
# ./find-out-the-dynamic-libraries-executables-loads.sh /usr/local/CompusisDFe/x64/libacbrcte64.so
#[root@localhost teste3_JRE]# ./find-out-the-dynamic-libraries-executables-loads.sh /usr/local/CompusisDFe/x64/libacbrcte64.so
#libgtk-x11-2.0.so.0 /lib64/libgtk-x11-2.0.so.0
#libgmodule-2.0.so.0 /lib64/libgmodule-2.0.so.0
#libatk-1.0.so.0 /lib64/libatk-1.0.so.0
#libgdk_pixbuf-2.0.so.0 /lib64/libgdk_pixbuf-2.0.so.0
#libgdk-x11-2.0.so.0 /lib64/libgdk-x11-2.0.so.0
#libgthread-2.0.so.0 /lib64/libgthread-2.0.so.0
#libdl.so.2 /lib64/libdl.so.2
#libpango-1.0.so.0 /lib64/libpango-1.0.so.0
#libglib-2.0.so.0 /lib64/libglib-2.0.so.0
#libgobject-2.0.so.0 /lib64/libgobject-2.0.so.0
#libpangocairo-1.0.so.0 /lib64/libpangocairo-1.0.so.0
#libc.so.6 /lib64/libc.so.6
#libcairo.so.2 /lib64/libcairo.so.2
#libX11.so.6 /lib64/libX11.so.6
#libpthread.so.0 /lib64/libpthread.so.0
#[root@localhost teste3_JRE]#
#-------------------
#-OU DIRETO POR COMANDO SEM SCRIPT!
#DEBUG FILES .SO:
# readelf -d /path/to/file/file.so | grep 'NEEDED'
#EX:
# readelf -d /usr/local/CompusisDFe/x64/libacbrcte64.so | grep 'NEEDED'
# awk '/\.so/{print $6}' /proc/1/maps | sort -u
# docker exec -u 0 acbrweb bash -c "readelf -d /usr/local/CompusisDFe/x64/libacbrcte64.so | grep 'NEEDED'"
# docker exec -u 0 acbrweb bash -c "netstat -tlpn"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment