当我注意到一些奇怪的东西时,我试图用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++;
}
答案 0 :(得分:1)
在病毒软件的防守中,这段代码确实做了几件看似奇怪的事情。如果我对某个程序的病毒概率进行评级,那么您发布的代码似乎很可能。
对于初学者,您将3个主要变量声明为全局变量,而不是在任何本地范围内。这种情况并不常见,但可能是必要的。
然后为数组的每个元素写入相同的值(0)。如果这是为了初始化数组,最好使用memset
或calloc
。这种实现对全局内存进行了大量写入,每次写入都可能是一个很大的存储。如果病毒试图破坏程序状态,病毒就会这样做。
最后,您的程序进入无限循环,其中是从全局内存中读取和写入。这些操作中的每一个都可能是远程负载,其次是远程存储。如果病毒扫描程序在远程负载和每秒远的存储中有任何类型的度量标准,那么您的程序将超出限制。