通常会触发防病毒软件的非致命代码是什么?(误报)

6

我不知道为什么,但以前我没有问题,现在突然间,我写了一个很久以前的可怕的新手程序,触发了 Malwarebytes... :(

这个问题不是重复的,因为所涉及的程序是 (ANSI) C 而不是 Delphi...

这里有一个病毒总扫描结果 (5 / 45)

Jotti's 恶意软件扫描结果 (1 / 22)

这是我的旧源代码 :P

#include <stdio.h>
#include <string.h>
/* This script is by Joe DF*/
main()
{
    char input[999];
    int charcount = 100;
    gets(input);
    printf("%d\n", strlen(input));
    printf("%d", numlen(charcount));
}

numlen(int num)
{
    char temp[999];
    sprintf(temp, "%d", num);
    int count = strlen(temp);
    return count;
}

这可能只是一个简单的错误...但为什么?在我看来这似乎无害!即使这只是个错误,通常会触发假阳性的原因是什么?是文件的签名吗?时间戳?


你尝试在全新安装的操作系统上运行这个程序了吗? - Anish Ramaswamy
@AnishRam 待会儿会尝试... - Joe DF
2个回答

0

我相信你的编译代码被病毒感染并复制了自身。这与你的代码无关。如果你重新编译代码并重新扫描,恶意软件警告将会消失。


好的,实际上我立即重新编译了它,运行了它,然后Malwarebytes立刻阻止了执行并显示“Trojan.Menti”...除非我有一个病毒藏在某个地方...嗯,我现在正在运行完整系统扫描! :O - Joe DF
你也可以尝试在其他机器上编译它。但是,摆脱病毒很重要。 - Pradeep Pati
1
嗯,很奇怪,如果我编译另一个我最近制作的C程序...它似乎是干净的...所以我认为这可能只是一个误报...嗯 - Joe DF
1
我怀疑制造感染你电脑的病毒的人是否足够聪明,能够创建一个修改后的C编译器,可以修改其生成的可执行文件,使其具有模拟病毒恶性特性的自我复制过程。但是,病毒制造者都是一些狡猾的家伙。 - Keshav Saharia
1
@KeshavSaharia,经典的例子是Ken Thompson的《Reflections on Trusting Trust》(https://www.ece.cmu.edu/~ganger/712.fall02/papers/p761-thompson.pdf)。 - dfeuer
@KeshavSaharia:亲眼见过。它比那个简单得多。它修改二进制文件以感染其他二进制文件。这不是什么聪明的做法。一个文件复制程序会被感染,从而感染每个它复制的二进制文件。 - Joshua

-1

如果您确定您的代码不是恶意的,而且这只是误报,那么您应该获得证书并签署您的应用程序,这样它就可以正常运行了!

大多数情况下,病毒总扫描结果会标记编译器生成的空exe文件为1到5级别的风险...但是当您使用有效证书对代码进行签名后,这些问题都将不复存在!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接