在与Ubuntu合作一年后,这对我来说是第一次。 我接手了一个跟踪维修的汽车服务项目。我可以看到每个文件的完整源代码,但是有一个文件没有扩展名,但在Ubuntu中属性说可执行文件(application / x-executable)。文件中没有扩展名,如.sh,如果我尝试用Geany打开文件,它说它看起来不像文本文件。如果我在VM上使用Visual Studio打开文件,它看起来像一个二进制文件。 Ubuntu如何知道它是一个可执行文件(application / x-executable)“没有扩展名的文件,如何查看源文件以查看该文件正在做什么?
答案 0 :(得分:2)
您需要了解一些概念。
在Linux和其他* nix中,如果用户对该文件具有执行权限,则该文件对于用户是可执行的。
示例可以是shell脚本,python脚本,编译程序和任何其他文件,如果需要,可以为图像赋予执行权限(尽管它可能不是很有用):
chmod +x image.jpg
应用程序或程序是以某种语言编码的指令序列,它可能是脚本语言,因此它不需要编译,您可以使用任何文本编辑器作为geany打开它,或者它可能是机器代码(用编译语言编写程序的结果)。在最后一种情况下,程序是一个二进制文件(即不用ASCII编码的文件或对普通文本编辑器有意义的任何其他编码)。
您可以使用hexdump
等命令查看以十六进制编码的二进制程序的字节,或尝试使用objdump
反汇编程序,但您无法看到原始源代码。
如果您要分析的软件是开源的,并且您从Ubuntu存储库下载它,则可以下载其源代码:
apt-get source name_of_the_package
您可以使用以下命令获取包的名称:
dpkg -S /path/to/the/binary
Linux中的工具和许多其他的O.S.可以通过文件扩展名或通过从文件中读取一些特殊字节来检测文件的类型(前两个或三个字节很多次就足够了),这些被称为幻数。