Skip to content

Instantly share code, notes, and snippets.

@arteze
Created December 30, 2023 16:33
Show Gist options
  • Save arteze/8c16e7f86c733558d221e287a724cbd5 to your computer and use it in GitHub Desktop.
Save arteze/8c16e7f86c733558d221e287a724cbd5 to your computer and use it in GitHub Desktop.
Script de bash que busca un símbolo recursivamente con readelf
#!/bin/bash
function buscar_palabra_recursiva {
local ruta=$1
local palabra=$2
local pila=$3
# Verifica si la ruta existe
if [ ! -f "$ruta" ]; then
echo "La ruta '$ruta' no existe."
return
fi
# Muestra la información de la biblioteca
# echo "Biblioteca: $ruta"
# Realiza la búsqueda de la palabra en el resultado de strings
if strings "$ruta" | grep -q -i "$palabra"; then
# Si encuentra la palabra, imprime la pila en verde fuerte
echo -e "\e[1;32m$(echo "$pila" | tr " " "\n")\n$ruta\e[0m"
fi
# Obtén la lista de bibliotecas NEEDED sin corchetes
bibliotecas=$(readelf -d "$ruta" | grep NEEDED | sed 's/.*\[//;s/\]//')
# Itera sobre la lista de bibliotecas
for lib in $bibliotecas; do
# Encuentra la ruta en el sistema
ruta_lib=$(ldconfig -p | grep -w "$lib" | awk '{print $4}')
if [ -n "$ruta_lib" ]; then
# Llamada recursiva para la biblioteca necesaria
buscar_palabra_recursiva "$ruta_lib" "$palabra" "$pila $ruta"
else
echo "No se encontró la ruta para $lib"
fi
done
}
# Verifica que se proporcionen dos argumentos
if [ $# -ne 2 ]; then
echo "Usage: $0 <ruta_libreria> <palabra>"
exit 1
fi
echo "Buscando símbolo"
buscar_palabra_recursiva "$1" "$2" ""
echo "Fin"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment