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



当我注意到一些奇怪的事情时,我试图用 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。此实现对全局内存执行大量写入,每个写入可能都是远存储。如果病毒试图破坏程序状态,它就会这样做。

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

相关内容

  • 没有找到相关文章

最新更新