La documentación para GNU binutilsstrip
alude a la razón, pero no es explícita, mencionando en la descripción de --only-keep-debug
ese
Nota: los encabezados de sección de las secciones eliminadas se conservan, incluidos sus tamaños, pero el contenido de la sección se descarta. Los encabezados de sección se conservan para que otras herramientas puedan hacer coincidir el archivo debuginfo con el ejecutable real, incluso si ese ejecutable se ha reubicado en un espacio de direcciones diferente.
Es 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 (incluido gdb
) a hacer su trabajo.
La página Uso correcto del comando strip (parte de Ingeniería inversa utilizando el sistema operativo Linux ) notas
Ejecutar el strip
comando en un ejecutable es el método de protección de programa más común. En su operación predeterminada, el strip
comando elimina la tabla de símbolos y cualquier información de depuración de un ejecutable. Así es como se usa típicamente. Sin embargo, todavía hay información útil que no se elimina.
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
y objdump
son casi inútiles.