c++ - 为什么防病毒软件似乎针对特定数字?

标签 c++ antivirus

<分区>

当我尝试用 C++ 编写一个程序时,我注意到一些奇怪的事情:每次程序的一部分使用一个接近 2048 的数字(我认为高于 2001 且小于 3000)它被检测为可疑文件并发送到胸部由“Avast!”。更改变量名称似乎没有什么不同。我正在制作一个结构以便稍后添加内容 这是它的一个片段。我可以通过它的外观猜测它从哪里获得检测,但它永远不会打扰编译的可执行文件,除非它具有特定的数字范围 为什么会这样?

 int maxstep=2100;
 int maaa[2100];
 int curinst;

int main()
{
cout<<"Initializing maaa..."<<endl;

    for(int i=0; i<maxstep; i++)
    {
        maaa[i]=0;
        //cout<<"MEM:"<<i<<" "<<maaa[i]<<endl;
    }
cout<<"starting core"<<endl;
int stepcnt=0;
for(;;)
{
    if(stepcnt<maxstep)
    {
          curinst=maaa[stepcnt];

    }
    else
    {
        cout<<".";
    stepcnt=0;
    }
stepcnt++;
}

最佳答案

在病毒软件的防御中,这段代码确实做了几件看起来很奇怪的事情。如果我根据成为病毒的可能性对程序进行评级,那么您发布的代码似乎很有可能。

首先,您将 3 个主要变量声明为全局变量,而不是在任何局部范围内。这并不常见,但可能是必要的。

然后您将相同的值 (0) 写入数组的每个元素。如果这是为了初始化数组,memsetcalloc 会更好用。这个实现对全局内存进行了大量写入,每个内存都可能是一个远存储。如果病毒试图破坏程序状态,它就会这样做。

最后,你的程序进入了一个无限循环,在这个循环中从全局内存中读取和写入。这些操作中的每一个都可能是远加载,然后是远存储。如果病毒扫描程序对每秒远负载和远存储有任何类型的指标,则您的程序将超出限制。

关于c++ - 为什么防病毒软件似乎针对特定数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19871992/

相关文章:

C++ 程序 - "Making Change"应用程序产生奇怪的结果

c++ - 是否可以从 Objective-C 获得中间 C 代码?

javascript - 任何人都可以反混淆这个漏洞吗?

go - 如何防止 AVG 暂停我的 goLang 执行?

windows - 防病毒和文件访问冲突 : good programming practices?

c++ - 需要帮助以使用MFC C++创建图形

c++ - 用数组初始化一个类?

c++ - 无符号整数/有符号整数/long long : inexplicable output

c# - 是否存在任何NON-GPL/AGPL病毒扫描库?

security - 如何在 Web 应用程序中保护 HTML 电子邮件?