给定一个文件,我想检查这是一个DLL,还是共享对象(Linux)或dylib(Mac OS X),或者是不同的东西。我的主要兴趣是在Linux和Mac OS X上区分可执行文件和DLL。对于Windows,扩展应该足以解决我的问题。
我已经检查过神奇数字技术对Linux不起作用,因为可执行文件和共享对象都具有相同的编号。
答案 0 :(得分:8)
Unix(Linux和Mac OS X)命令file
知道如何识别文件类型。
man file
告诉您用于执行此操作的“神奇”信息,特别是在找到包含该信息的文件的位置。
man 5 magic
详细描述了该文件,并且还应该告诉您它的位置。你可以看看那里,从中拉出你需要的任何东西。和/或仅来自file
来源的婴儿床代码。
更新:
请注意,在Linux上,文件可以同时 可执行文件和共享库
一个例子是/lib/libc.so.6
(可以执行的共享库)
另一个示例:使用-pie
标志构建的任何可执行文件都可以用作共享库。有关详细信息,请参阅this答案。
答案 1 :(得分:1)
使用file
工具(适用于Linux和Mac OS)。
答案 2 :(得分:0)
编写一个程序,尝试加载DLL - 如果成功,那就是一个:)
编辑:好的,这可能也是可执行文件的成功: - /