¿Hay alguna posibilidad de saber cómo se construyó un binario, bajo Linux? (y otro Unix)
Compilador, versión, tiempo, banderas, etc…
Miré readelf
y no pude encontrar mucho, pero podría haber otras formas de analizar el código binario/sección, etc...
¿Algo que sepas cómo extraer?
Respuesta aceptada:
No existe una manera universal, pero puede hacer una suposición bien fundamentada buscando cosas que solo haya hecho un compilador.
GCC es el más fácil; escribe un .comment
sección que contiene la cadena de versión de GCC (la misma cadena que obtiene si ejecuta gcc --version
). No sé si hay una forma de mostrarlo con readelf
, pero con objdump
es:
objdump -s --section .comment /path/binary
Me acabo de dar cuenta de que ignoré el resto de tu pregunta. Las banderas generalmente no se guardan en ningún lado; probablemente estarían en una sección de comentarios, pero nunca he visto que se haga eso. Hay un lugar en el encabezado COFF para una marca de tiempo, pero no hay equivalente en ELF, por lo que tampoco creo que el tiempo de compilación esté disponible