-1

如何在内核或用户空间中检测到该二进制文件属于某种解释器语言,如 python、Perl 或 java,而不是简单的二进制文件,如 ls、clear、df 等。

4

3 回答 3

0

尝试使用readelf. 我过去成功地使用过它。它可以区分二进制文件或解释文件,以及二进制文件编译的平台。--program-headers可能有用。

于 2021-08-27T07:31:02.927 回答
0

您可以使用“字符串”从二进制文件中打印可打印的字符序列。这应该会给你一些关于它是用什么语言编写的很好的线索。

strings mybinaryfile
于 2021-08-27T08:41:05.380 回答
0

我刚刚使用以下file命令完成了测试:

对于 Python 文件:

Linux Prompt>file "./Program Files/.../test_XOR.py"
./Program Files/.../test_XOR.py: Python script, ASCII text executable, with CRLF, LF line terminators

对于 Java 文件(*.jar 库):

Linux Prompt>file "./Program Files/.../fontbox.jar"
./Program Files/.../fontbox.jar: Java archive data (JAR)

对于另一个 Java 文件(*.class 文件):

Linux Prompt>file "./Program Files/.../JREProperties.class"
./Program Files/.../JREProperties.class: compiled Java class data, version 52.0 (Java 1.8)

对于 Perl 文件:

Linux Prompt>file "./Program Files/.../docx2txt.pl"
./Program Files/Git/usr/bin/docx2txt.pl: Perl script text executable

因此,如您所见,解析file命令的结果可能是您的解决方案。

在第一条评论后编辑

在我的回答中,我以为您在谈论将由 Python、Java 或 Perl 启动的文件,但您似乎对这些文件本身感兴趣。

我能给你的唯一建议是在该机器上获取Python,Java或的校验Perl和,并使用可疑文件的校验和进行验证,如下例所示:

Linux Prompt>cksum $(which perl)
3199833323 3478464 /usr/bin/perl

Linux Prompt>cp /usr/bin/perl /mnt/c/Temp_Folder/Kopietje

Linux Prompt>cksum /mnt/c/Temp_Folder/Kopietje
3199833323 3478464 /mnt/c/Temp_Folder/Kopietje
于 2021-08-27T09:24:31.730 回答