【发布时间】:2021-12-17 15:56:22
【问题描述】:
我需要确定给定的 ELF 文件是否来自 Go。根据this link:
$ readelf -a traefik.stripped | grep "\.note\.go\.buildid"
这是否比 Go 的原生方式逊色:
$ go tool buildid traefik.stripped
oPIWoPjqt1P3rttpA3ee/ByNXPhvgS37nIoJY-HYB/8b25JYXrgktA-FYgU5MU/0Posfq41xZW9BEPEG4Ub
这两种方法都保证可以处理剥离的二进制文件吗?
【问题讨论】:
-
我确定这取决于您所说的“保证”是什么意思。毫无疑问,可以制作/修改一个欺骗工具的 ELF 二进制文件,以产生假阴性或假阳性。
-
@Flimzy 能否描述一个场景,即在 不影响 ELF 文件功能的情况下删除此部分?
-
我不能。我对 ELF 二进制格式不太熟悉。但我知道这正是病毒作者(和其他人)所做的事情,所以我确信它可以做到。我不知道是否有人有理由这样做。但你问的是保证。我认为没有。
-
这样想:与 Go 编译器生成的相比,如何防止 Python 脚本构建逐字节相同的 ELF 二进制文件?显然,除了时间和动机之外,什么都没有。
-
我不知道。这是一个非常不同的问题。 strip 如何/为什么表现出它的行为方式与欺骗启发式的技术可能性几乎没有关系。