Un ejecutable ELF mínimo solo requiere el encabezado ELF y al menos un encabezado de programa para ser funcional. Sin embargo, cuando ejecuto strip en un ejecutable corto, decide no tirar la tabla de encabezado de sección o la sección de cadenas de sección, manteniéndolas aunque no tengan ningún propósito (hasta donde yo sé) para la ejecución del programa.
¿Hay alguna razón por la cual estos no se eliminan por tira? ¿Hay alguna otra utilidad que elimine todo lo que no es necesario para que se ejecute el ejecutable? Intenté editar manualmente el código ejecutable de golf que estaba haciendo para eliminar los encabezados de sección, y parece funcionar bien, y es mucho más pequeño.
executable
elf
strip
Mystor
fuente
fuente
Respuestas:
La documentación para GNU binutils
strip
alude a la razón, pero no es explícita, mencionando en la descripción de--only-keep-debug
eseEs decir, a menos que se le indique explícitamente a través de la
-R
opción,strip
retendrá los encabezados de sección para ayudar a otros programas (incluidogdb
) a hacer su trabajo.La página Uso correcto del comando strip (parte de Ingeniería inversa utilizando el sistema operativo Linux ) notas
y luego enumera varias cosas útiles que podrían quedar atrás, para el análisis de un ejecutable "despojado".
En Learning Linux Binary Analysis , esto se reitera, comentando que los encabezados de sección normalmente solo faltan cuando alguien los ha eliminado deliberadamente , y que sin encabezados de sección,
gdb
yobjdump
son casi inútiles.fuente