【问题标题】:Why does my anti-virus call this piece of code a virus? [closed]为什么我的杀毒软件把这段代码称为病毒? [关闭]
【发布时间】:2013-02-13 22:12:30
【问题描述】:

我的防病毒软件将此源的已编译“.exe”识别为病毒 “Gen:变体:Graftor”。谁能解释一下为什么?

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

【问题讨论】:

  • @RichardJ.RossIII 这有必要吗?
  • @Cygwinnian 这样的问题有必要吗?
  • 也许散列只是发生来匹配已知病毒的散列?
  • @Cygwinnian 不,它不是。我忘记了我不在reddit上,所以我适当地编辑了我的评论。
  • @H2CO3 这样的cmets有必要吗?

标签: c


【解决方案1】:

好吧,非托管/本机程序可能会带来安全风险,并且您的防病毒软件可能会将其标记为这样。防病毒软件使用启发式算法 - 因此算法是近似的,它们倾向于采用“尽力而为”的想法,并且在防病毒软件的情况下,像您的样本这样的“误报”比遗漏实际病毒更可取。

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

【讨论】:

  • 我希望这段代码可以编译成一个空的二进制文件。如果有任何病毒包含一个空的二进制文件,使用相同的编译器+设置编译,你会直接命中该文件。
  • 另一个有趣的行为,当我添加一个打印语句打印'a'时。它不再被检测为病毒。
  • 伙计,你玩这个很开心吧? :D
  • 是的,尝试代码是编写更好代码的最佳方式,而且很有趣:D
【解决方案2】:

关于一般检测

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

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

【讨论】:

  • 哦。当我反病毒显示它时,我感到震惊。我只是在试验浮动精度之类的东西。感谢您提供信息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-19
  • 1970-01-01
  • 1970-01-01
  • 2013-05-08
  • 1970-01-01
相关资源
最近更新 更多