【发布时间】:2012-11-17 21:32:03
【问题描述】:
我正在编写一些作业(101 级)。当我尝试编译代码时,我从位防御者那里得到了一些病毒警报:
#include <stdio.h>
int main ( void ) {
int numbers [10];
int i, temp;
for (i = 1; i <= 10; ++i)
numbers[i] = 0;
printf("Enter up to 10 integers. input '-1' to finish \n");
for (i = 0; i < 10; i++) {
scanf("%d", &temp);
if (temp == -1) {
break;
} else {
numbers [i] = temp - 1;
}
}
for (i = 1; i <= 10; ++i)
printf("the numbers are: %d\n", numbers[i]);
return 0;
}
我认为问题出在这段代码上:
for (i = 1; i <= 10; ++i)
numbers[i] = 0;
为什么会出现木马病毒警报?我做了什么?
【问题讨论】:
-
别以为这和你的功课有关系,你好像有病毒在跑。
-
哇,如果这真的是因为你的代码,这是一个非常偏执的病毒扫描程序。你正在访问不属于你的应用程序的内存。数组索引从 0 开始。
-
您超出了数组边界,但如果您的病毒扫描程序能够检测到这一点,我会感到非常惊讶。
-
@KerrekSB 我仍然对扫描仪为什么会拾取它感兴趣。更具体地说,为什么它认为缓冲区溢出= Meur.GZ
-
@JanDvorak:注意它是 Heur(用于启发式),而不是 Meur。因此,它通过启发式分析检测通用木马。