为什么我的反病毒会将这段代码称为病毒?

时间:2013-02-13 22:12:30

标签: c

我的防病毒软件将此源的已编译“.exe”标识为病毒 “Gen:Variant:Graftor”。任何人都可以解释原因吗?

void main()
{
 float x=3.0/7.0;
 double y=3.0/7.0;
 int a= (x==y);
}

2 个答案:

答案 0 :(得分:2)

嗯,非托管/本机程序可能会带来安全风险,并且可能是您的防病毒软件标记了这一点。 Antiviruses使用启发式算法 - 所以算法是近似的,它们往往是在“尽力而为”的想法上工作,并且在防病毒的情况下,像你的样本一样“误报”比丢失实际的病毒更可取。

另一种可能性是编译程序的方式,有很多编译器优化,有些与安全性有关 - 所以你的程序随机化了内存的某些部分等等。也许防病毒看看C程序是如何编译的你的安全标志没有打开?嗯...

答案 1 :(得分:1)

关于通用检测

与更传统的检测(也称为签名或单文件检测)不同,通用检测不会识别唯一或单个的恶意程序。相反,通用检测会查找广泛适用的代码或行为特征,这些特征指示文件可能是恶意的,因此单个通用检测可以有效地识别数十个甚至数百个恶意软件。

这是误报。由于恶意软件和合法软件上使用的当前恶意软件和文件压缩/保护实用程序的复杂性,这些有时会出现在每个防病毒产品中。