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

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

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

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

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

关于通用检测

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

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