¿Podemos get información del comstackdor de un binary elfo?

¿Hay alguna posibilidad de saber cómo se creó un binary en Linux? (y u otro Unix)

Comstackdor, versión, hora, banderas etc …

Miré readelf y no pude encontrar mucho, pero podría haber otras forms de analizar el código binary / sección, etc.

¿Algo que sepa cómo extraer?

No hay una manera universal, pero puede hacer una suposition educada buscando cosas que solo hace un comstackdor.

GCC es el más fácil; escribe una sección .comment que contiene la cadena de versión de GCC (la misma cadena que obtienes si ejecutas gcc --version ). No sé si hay una manera de mostrarlo con readelf , pero con objdump es:

 objdump -s --section .comment /path/binary 

Me acabo de dar count de que ignoré el rest de tu pregunta. Las banderas generalmente no se guardan en ningún lado; probablemente estarían en una sección de comentarios, pero nunca lo he visto hecho. Hay un lugar en el encabezado COFF para una timestamp, pero no hay un equivalente en ELF, así que no creo que el time de compilation esté disponible.

Qué tal si:

 readelf -p .comment a.out 

Puedes intentar usar el command de strings . Creará una gran cantidad de salida de text; al marcarlo, puede adivinar el comstackdor.

pubuntu@pubuntu:~$ strings -a a.out |grep -i gcc
GCC: (Ubuntu 4.4.3-4ubuntu5) 4.4.3

Aquí sé que está comstackdo con gcc pero siempre puedes networkingirigir las strings salida a un file y examinarlo.

Hay una muy buena utilidad llamada peid para Windows pero no puedo encontrar ninguna alternativa para ella en Linux.

También puede usar esta secuencia de commands inteligente que count los numbers de varias instrucciones de CPU utilizadas por el binary. Se basa en el análisis de la salida objdump. Tenga en count que puede llevar bastante time terminar si lo usa en un binary grande.

Hay dos methods. Ambos darán el mismo resultado

 objdump -s --section .comment path/to/binary 

Usando el command readelf, readelf -S binary mostrará los 40 encabezados de sección en el binary. Tenga en count el número de serie del .comment sección .comment . En mi sistema, mostró como 27 (puede ser diferente para su caso)

readelf -x 30 path/to/binary -> que mostrará el volcado hexadecimal de la sección '.comment'. En ese vuelco, puede ver el comstackdor utilizado para build el binary.

readelf u objdump ambos pueden hacer esto.

El file ELF comstackdo por gcc agregará .note.ABI-tag y .note.gnu.build-id dos secciones. ambos podrían mostrarse por

 objdump -sj .note.ABI-tag ELFFILE objdump -sj .note.gnu-build-id ELFFILE 

la opción "s" significa que se visualiza el contenido completo, "j" para indicar el nombre de la sección. Este estilo obtiene contenido hexadecimal de esas secciones.

 readelf -n 

mostrará el contenido humano de ELFFILE una vez. la opción "n" significa NOTAS.

Elija uno como su gusto.

Por cierto, use objcopy, puede agregar su propia sección en el file elf.