瑞星卡卡安全论坛技术交流区反病毒/反流氓软件论坛 【误杀求助】瑞星08误杀自编程序

1   1  /  1  页   跳转

【误杀求助】瑞星08误杀自编程序

【误杀求助】瑞星08误杀自编程序

今天升级了一下,进行安检后发现自己编写的一些程序变当作病毒删除了,
例子如下:以下是一个猜数字程序源代码,但经过dev—c++4.9.9.2编译后认为是病毒:
瑞星版本:20.15.60
当作:Trojan.PSW.Win32.GameOnline.cn

#include <stdlib.h>
#include <stdio.h>
#include <time.h>

struct right_place {int right; int place;};

int main (void)
{
  int creatDialog (int x, int *p );

  void rndProduce (int numDft[]);
  struct right_place numCompare (int numDft[], int numIn[]);

  int dialog, quitOrContinue, allQuit;
  int numDft[4], numIn[4], result[2];
  struct right_place compareBack;
 
  creatDialog (1, NULL);
 
  allQuit = 1;
  while (allQuit == 1)
  {
     creatDialog (7, NULL);
    rndProduce (numDft);
    quitOrContinue = 1;
    while (quitOrContinue == 1)
    {
        dialog = 2;
        while (dialog == 2)
        {
          creatDialog (2, numIn);
          dialog = creatDialog (3, numIn);         
        }
        compareBack = numCompare (numDft, numIn);
        result[0] = compareBack.right ;
        result[1] = compareBack.place ;
        quitOrContinue = creatDialog (4, result);
    }
    if (quitOrContinue == 2)
        allQuit = creatDialog (5, numDft);
     if (quitOrContinue == 3)
       allQuit = 1;
     if (quitOrContinue == 4)
        allQuit = 2;    
  }

  if (allQuit == 2)
    creatDialog (6, NULL);

  getchar ();
  return 0;
}

int creatDialog (int x, int *p)
{
  int back;
  int i;
  switch (x)
  {
     case 0:
         printf ("************************************************************************\n");
         break;
        case 1:
                 creatDialog (0, NULL);
                printf ("欢迎玩猜数字游戏!\n版本2.0\n作者:andyzhshg\n制作日期:2007.9.1\n");
                creatDialog (0, NULL);
                 printf ("在本游戏中,你需要输入四个数字,\n然后电脑会给出你猜测的正确情况。");
                 printf ("电脑会用它之前生成的\n四位数与之你的输入比较,然后告诉你");
                 printf ("你猜对了几个数字,包\n括数值和顺序的信息.\n");
                break;
     case 2:
         creatDialog (0, NULL);
         printf ("请输入你猜测的四位数字(用空格、回车、或Tab隔开):\n");
                for (i = 0; i < 4; i++, p++)
                scanf ("%i", p);
         break;
        case 3:
                creatDialog (0, NULL);
                 printf ("你输入的数字是:%i %i %i %i ,确认请输入“1”,重新输入按“2”。\n", *p, *(p + 1), *(p + 2), *(p + 3));
                scanf ("%i", &back);
                return back;
                break;
        case 4:
                creatDialog (0, NULL);
                printf ("你输入的数字中:\n数值和位置都正确的有%i个,\n数值正确但位置不正确的有%i个.\n", *p, *(p+1));
                 if ((*p) == 4)
                 {
                     printf ("恭喜你,答对了!\n");
                     printf ("继续游戏吗?继续请输入“1”,退出游戏请输入“2”。\n");
                     scanf ("%i", &back);
                    if (back == 1)
                         return 3;
                     if (back == 2)
                         return 4;
                 }
                 else
                 {
                    printf ("继续吗?继续请输入“1”,显示正确答案请输入“2”。\n");
                    scanf ("%i", &back);
                    return back;
                 }
                break;
        case 5:
                 creatDialog (0, NULL);
                printf ("正确答案是:%i %i %i %i,再接再厉啊!\n", *p, *(p + 1), *(p + 2), *(p + 3));
                printf ("继续游戏吗?继续请输入“1”,退出游戏请输入“2”。\n");
                scanf ("%i", &back);
                return back;
                break;
        case 6:
                 creatDialog (0, NULL);
                printf ("感谢你玩本游戏,再见!\n按任意键退出\n");
                break;
         case 7:
                 creatDialog (0, NULL);
                 printf ("新的游戏开始了!GOOD LUCK!\n");
                 break;
     default:
         break;
  }
}

void rndProduce (int numDft[])
{
  int i;
  srand( (unsigned)time( NULL ) ) ;
  for ( i = 0; i < 4; i++)
  numDft = rand () % 10;
  //printf ("%i %i %i %i\n", numDft[0], numDft[1], numDft[2], numDft[3]);
}

struct right_place numCompare (int numDft[], int numIn[])
{
  int i, j;
  struct {int Dft; int In;} flag[4] = { 1, 1, 1 ,1 ,1, 1, 1, 1 };
  struct right_place result = { 0, 0 };
  for (i = 0; i < 4; i++)
    if (numDft == numIn)
    {
        (result.right)++;
        flag.Dft = 0;
        flag.In = 0;
    }
  for (i = 0; i < 4; i++)
       for (j = 0; j < 4; j++)
         if (flag.Dft && flag[j].In && numDft == numIn[j])
         {
             (result.place)++;
            flag.Dft = 0;
             flag[j].In = 0;
         }
  return result;
}



[用户系统信息]Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
最后编辑2008-02-13 16:39:06
分享到:
gototop
 

看后有所感悟,莫非在我机子里屡杀不败的Trojan.DL.Win32.Agent.znj病毒,也是瑞星误报吗
gototop
 

我也是用瑞星的升到20.15.60没有发现这个问题!是不是你已经中毒了!
gototop
 

楼上的你用的是dev—c++4.9.9.2编译的吗?

编译后的文件是:NumberGuess2.0.exe,更本无法运行,一运行瑞星就跳出病毒。
但同样用VC编译则没有问题。

你意思是说编译器,自己编译生成病毒了?
但同样有些程序编译后没有问题啊
例如;
求n皇后问题:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

long sum = 0, upperlim = 1;

void test(long row, long ld, long rd)
{

if (row != upperlim)
{
long pos = upperlim & ~(row | ld | rd);
while (pos)
{
long p = pos & -pos;

pos -= p;
test(row + p, (ld + p) << 1, (rd + p) >> 1);
}
} else
sum++;
}

int main(int argc, char *argv[])
{
time_t tm;
int n=8 ;

/*if (argc != 1)

if (n=0)
{
  printf("请输入方阵数");
  scanf("%d",&n);
}*/
  if (argc != 1)
    n = atoi(argv[1]);
  else
    {
    printf("请输入方阵数\n");
    scanf("%d",&n);   
    }
  tm = time(0);
    if ((n < 1) || (n > 32))
      {
          printf(" 只能计算1-32之间\n");
          exit(-1);
      }
  printf("%d 皇后\n", n);
  upperlim = (upperlim << n) - 1;

  test(0, 0, 0);
  printf("共有%ld种排列, 计算时间%d秒 \n", sum, (int) (time(0) - tm));
  getch();
}

有高手能帮我分析下吗?
gototop
 

用dev—c++的朋友帮忙试试看吧,是否也有这种问题啊,会不会编译器调用某个文件后,瑞星出现误杀啊?
拜托了!
gototop
 

我的也是!!是不是中了ARP病毒呢??该代码用DEVCPP编译也会报是病毒!!!
#include "message.h"

int blog = 0;    //  用于判断是否已经打开了一个文件

int main(int argc, char *argv[])
{
char ch;
FILE *head = NULL;
struct student stu[3001];    //  最多容纳3000名学生信息
struct student *p = stu;

while ( message (), (ch = getchar ()) != '0' )
{
while ( getchar() != '\n' );
switch (ch)
{
case '1' : head = news (head); break;
case '2' : head = open (head); break;
case '3' : head = save (head); break;
case '4' : head = close (head); break;
case '5' : add (p, head); break;
case '6' : del (p, head); break;
case '7' : revise (p, head); break;
case '8' : seek (p, head); break;
case '9' : qsorts (p, head); break;
default : puts ("输入错误!"); system ("PAUSE");
}
}

return 0;
}


void message (void)
{
system("CLS");
puts ("              欢  迎  使  用  学  籍  管  理  系  统");
puts ("--------------------------------------------------------------------------------");
puts ("  1.新建文件\t  2.打开文件\t  3.保存文件\t  4.关闭文件\t  5.追加记录");
puts ("  6.删除记录\t  7.修改记录\t  8.查找记录\t  9.数据排序\t  0.退出系统");
puts ("--------------------------------------------------------------------------------");
puts ("请输入要执行指令序号:");
}


FILE * news (FILE *fp)                //  新建文件
{
char name[81];
puts ("请输入文件名:");

fgets (name, 80, stdin);    //  用fgets输入以增加安全性
name[strlen (name) - 1] = '\0'; //  去掉fgets产生的回车
strcat (name, ".txt");
if ( (fp = fopen (name, "r")) != NULL )
{
fprintf (stderr, "文件%s已经存在\n", name);
fp = NULL;
}

else if ( (fp = fopen (name, "ab+")) == NULL )
fprintf (stderr, "不能创建文件%s\n", name);

else
puts ("文件创建成功");

    system ("PAUSE");
    return fp;
}


FILE * open (FILE *fp)                //  打开文件
{

char name[81], *p;

if ( blog )
puts ("已经打开了一个文件,不能重复打开!");

    else
    {
puts ("请输入要打开的文件名:");
    fgets (name, 80, stdin);        //  用fgets输入以增加安全性
    name[strlen (name) - 1] = '\0';  //  去掉fgets产生的回车
    p = name;                        //  把指针指向文件名的最后四个字符
    p += strlen (name) - 4;

    if ( strlen (name) < 4 || !strcmp (name, ".txt") )  //  判断输入的文件名是否有后缀,没有则加之
        strcat (name, ".txt");
    if ( fopen (name, "r") == NULL )
    fprintf (stderr, "没有文件%s!\n", name);

    else
    {
    printf ("打开文件%s成功\n", name);
    fp = fopen (name, "ab+");
    }

    blog = 1;
}

system ("PAUSE");
return fp;
}


FILE * save (FILE *fp)  //  保存文件
{
return fp;
}


FILE * close (FILE *fp)  //  关闭文件
{
if ( fp == NULL )
puts ("没有打开文件");

else
{
blog = 0;
fclose (fp);
fp = NULL;
puts ("文件关闭成功!");
}

system ("PAUSE");
return fp;
}


void add (struct student *p, FILE *fp)    //  追加记录
{
}


void del (struct student *p, FILE *fp)    //  删除记录
{
}


void revise (struct student *p, FILE *fp) //  修改记录
{
}


void seek (struct student *p, FILE *fp)  //  查找记录
{
}


void qsorts (struct student *p, FILE *fp) //  数据排序
{
}
gototop
 

建议把这些上报到瑞星吧.
在邮件中心:http://up.rising.com.cn/webmail/index.htm

进入"产品支持"的"其他问题"里把这个情况向瑞星工程师说明一下,他们会联系你的。
gototop
 

Trojan.DL.Win32.Agent.znj难道是瑞星的特产??
gototop
 
1   1  /  1  页   跳转
页面顶部
Powered by Discuz!NT