¿Cómo comprobar si un archivo es un archivo DLL?
Pregunta
Dado un fichero, Quiero comprobar si se trata de una DLL o un objeto compartido (Linux) o una dylib (Mac OS X), o algo diferente. Mi interés principal es diferenciar ejecutable y DLL en Linux y Mac OS X. Para las ventanas, la extensión debe ser suficiente para que mi problema.
Ya comprobado que la técnica de número mágico no funciona para Linux como ejecutable y objetos compartidos ambos tienen el mismo número.
Solución
El Unix (Linux y Mac OS X) file
comando sabe cómo identificar los tipos de archivo.
man file
le informa acerca de la información 'magia' se utiliza para hacer esto, y en particular cuando el archivo con la información que se encuentra.
man 5 magic
describe el archivo en detalle y también debe decirle donde vive. Puede echar un vistazo allí y nada de tracción que necesita de ella. Y / o código de la cuna de la fuente de file
.
Actualización:
Tenga en cuenta que en Linux un archivo podría ser ambos un ejecutable y una biblioteca compartida al mismo tiempo.
Un ejemplo es /lib/libc.so.6
(una biblioteca compartida que puede ser ejecutado).
Otro ejemplo: cualquier ejecutable generado con la bandera -pie
puede ser utilizado como una biblioteca compartida. Ver esta respuesta para más detalles.
Otros consejos
Utilice la herramienta file
(para el sistema operativo Linux y Mac).
Escribir un programa, intentará cargar el archivo DLL - si tiene éxito, es uno :)
Editar: Muy bien, este puede ser que también tenga éxito para ejecutables: - /