最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C/C++惡意代碼盤點之文件自動刪除

 更新時間:2022年09月21日 15:59:28   作者:編程小魚六六六  
惡意代碼的分類包括計算機病毒、蠕蟲、木馬等,有些技術(shù)經(jīng)常用到,有的也是必然用到。今天我們就分享一下文件自動刪除,感興趣的可以了解一下

前言

惡意代碼的分類包括計算機病毒、蠕蟲、木馬、后門、Rootkit、流氓軟件、間諜軟件、廣告軟件、僵尸(bot) 、Exploit等等,有些技術(shù)經(jīng)常用到,有的也是必然用到。

上次咱們分享了一部分,那么今天我們就分享一下文件自動刪除。

自刪除功能對病毒木馬來說同樣至關(guān)重要,它通常在完成目標任務(wù)之后刪除自身,不留下任何蛛絲馬跡,自刪除的方法有很多種,常見的有利用MoveFileEx重啟刪除和利用批處理刪除兩種方式。

1、MoveFileEx重啟刪除

MOVEFILE_DELAY_UNTIL_REBOOT這個標志只能由擁有管理員權(quán)限的程序或者擁有本地系統(tǒng)權(quán)限的程序使用,而且這個標志不能MOVEFILE_COPY_ALLOWED一起使用,并且,刪除文件的路徑開頭需要加上“\?\"前綴。

源代碼實現(xiàn)

#include "stdafx.h"
#include <Windows.h>
BOOL RebootDelete(char *pszFileName)
{
    // 重啟刪除文件
    char szTemp[MAX_PATH] = "\\\\?\\";
    ::lstrcat(szTemp, pszFileName);
    BOOL bRet = ::MoveFileEx(szTemp, NULL, MOVEFILE_DELAY_UNTIL_REBOOT);
    return bRet;
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    if (FALSE == RebootDelete("C:\\Users\\Test\\Desktop\\520.exe"))
    {
        printf("Set Reboot Delete Error.\n");
    }
    else
    {
        printf("Set Reboot Delete OK.\n");
    }
 
    system("pause");
    return 0;
}

2、利用批處理命令刪除

del %0

批處理命令會將自身批處理文件刪除而且不放進回收站。

具體流程

1 構(gòu)造自刪除批處理文件,該批處理文件的功能就是先利用choice或ping命令延遲一定的時間,之后才開始執(zhí)行刪除文件操作,最后執(zhí)行自刪除命令。

2 在程序中創(chuàng)建一個新進程并調(diào)用批處理文件,程序在進程創(chuàng)建成功后,立刻退出整個程序。

源代碼實現(xiàn)

#include "stdafx.h"
#include <Windows.h>
BOOL CreateChoiceBat(char *pszBatFileName)
{
    int iTime = 5;
    char szBat[MAX_PATH] = { 0 };
    // 構(gòu)造批處理內(nèi)容
    /*
        @echo off
        choice /t 5 /d y /n >nul
        del *.exe
        del %0
    */
    ::wsprintf(szBat, "@echo off\nchoice /t %d /d y /n >nul\ndel *.exe\ndel %%0\n", iTime);
    // 生成批處理文件
    FILE *fp = NULL;
    fopen_s(&fp, pszBatFileName, "w+");
    if (NULL == fp)
    {
        return FALSE;
    }
    fwrite(szBat, (1 + ::lstrlen(szBat)), 1, fp);
    fclose(fp);
    return TRUE;
}
BOOL CreatePingBat(char *pszBatFileName)
{
    int iTime = 5;
    char szBat[MAX_PATH] = {0};
    // 構(gòu)造批處理內(nèi)容
    /*
        @echo off
        ping 127.0.0.1 -n 5
        del *.exe
        del %0
    */
    ::wsprintf(szBat, "@echo off\nping 127.0.0.1 -n %d\ndel *.exe\ndel %%0\n", iTime);
    // 生成批處理文件
    FILE *fp = NULL;
    fopen_s(&fp, pszBatFileName, "w+");
    if (NULL == fp)
    {
        return FALSE;
    }
    fwrite(szBat, (1 + ::lstrlen(szBat)), 1, fp);
    fclose(fp);
    return TRUE;
}
BOOL DelSelf(int iType)
{
    BOOL bRet = FALSE;
    char szCurrentDirectory[MAX_PATH] = {0};
    char szBatFileName[MAX_PATH] = {0};
    char szCmd[MAX_PATH] = {0};
    // 獲取當前程序所在目錄
    ::GetModuleFileName(NULL, szCurrentDirectory, MAX_PATH);
    char *p = strrchr(szCurrentDirectory, '\\');
    p[0] = '\0';
    // 構(gòu)造批處理文件路徑
    ::wsprintf(szBatFileName, "%s\\temp.bat", szCurrentDirectory);
    // 構(gòu)造調(diào)用執(zhí)行批處理的 CMD 命令行
    ::wsprintf(szCmd, "cmd /c call \"%s\"", szBatFileName);
    // 創(chuàng)建自刪除的批處理文件
    if (0 == iType)
    {
        // choice 方式
        bRet = CreateChoiceBat(szBatFileName);
    }
    else if (1 == iType)
    {
        // ping 方式
        bRet = CreatePingBat(szBatFileName);
    }
    // 創(chuàng)建新的進程, 以隱藏控制臺的方式執(zhí)行批處理
    if (bRet)
    {
        STARTUPINFO si = { 0 };
        PROCESS_INFORMATION pi;
        si.cb = sizeof(si);
        //指定wShowWindow成員有效
        si.dwFlags = STARTF_USESHOWWINDOW;
        //此成員設(shè)為TRUE的話則顯示新建進程的主窗口
        si.wShowWindow = FALSE;
        BOOL bRet = CreateProcess(
            //不在此指定可執(zhí)行文件的文件名
            NULL,
            //命令行參數(shù)
            szCmd,
            //默認進程安全性
            NULL,
            //默認進程安全性
            NULL,
            //指定當前進程內(nèi)句柄不可以被子進程繼承
            FALSE,
            //為新進程創(chuàng)建一個新的控制臺窗口
            CREATE_NEW_CONSOLE,
            //使用本進程的環(huán)境變量
            NULL,
            //使用本進程的驅(qū)動器和目錄
            NULL,
            &si,
            &pi);
        if (bRet)
        {
            //不使用的句柄最好關(guān)掉
            CloseHandle(pi.hThread);
            CloseHandle(pi.hProcess);
            // 結(jié)束進程
            exit(0);
            ::ExitProcess(NULL);
        }
    }
    return bRet;
}
int _tmain(int argc, _TCHAR* argv[])
{
    // 程序自刪除
    BOOL bRet = DelSelf( 0 );
    if (FALSE == bRet)
    {
        printf("Selft Delete Error!\n");
    }
    else
    {
        printf("Selft Delete OK!\n");
    }
    system("pause");
    return 0;

到此這篇關(guān)于C/C++惡意代碼盤點之文件自動刪除的文章就介紹到這了,更多相關(guān)C/C++文件自動刪除內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • error LNK2019: 無法解析的外部符號 問題的解決辦法

    error LNK2019: 無法解析的外部符號 問題的解決辦法

    error LNK2019: 無法解析的外部符號 問題的解決辦法,需要的朋友可以參考一下
    2013-05-05
  • C++實現(xiàn)聊天小程序

    C++實現(xiàn)聊天小程序

    這篇文章主要為大家詳細介紹了C++實現(xiàn)聊天小程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • C++類常量和類枚舉

    C++類常量和類枚舉

    這篇文章主要介紹了C++類常量和類枚舉,給類當中定義一些常量,可以給所有類的對象使用,比如說我們在類當中定義一個數(shù)組,希望可以定義一個常量,用來初始化數(shù)組的長度,那么下面我i嗎就來看看過程當如何吧
    2022-01-01
  • C語言實現(xiàn)電子郵件地址驗證程序

    C語言實現(xiàn)電子郵件地址驗證程序

    這篇文章主要介紹了C語言實現(xiàn)電子郵件地址驗證程序,利用的是POSIX正則表達式,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2015-11-11
  • C++ string類getline()用法實例詳解

    C++ string類getline()用法實例詳解

    C++ getline()是一種標準庫函數(shù),用于從輸入流中讀取字符串或行,它是<string>標頭的一部分,本文介紹C++ string類getline()用法詳解,感興趣的朋友一起看看吧
    2024-03-03
  • C語言中帶頭雙向循環(huán)鏈表基本操作的實現(xiàn)詳解

    C語言中帶頭雙向循環(huán)鏈表基本操作的實現(xiàn)詳解

    無頭單向非循環(huán)鏈表結(jié)構(gòu)簡單,一般不會單獨用來存數(shù)據(jù)。而帶頭雙向循環(huán)鏈表的結(jié)構(gòu)較為復雜,一般用在單獨存儲數(shù)據(jù)。本文將介紹帶頭雙向循環(huán)鏈表的基本操作,需要的可以參考一下
    2022-11-11
  • 深入理解C++編程中的局部變量和全局變量

    深入理解C++編程中的局部變量和全局變量

    這篇文章主要介紹了深入理解C++編程中的局部變量和全局變量,是C++入門學習中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-09-09
  • C語言數(shù)組超詳細講解中篇三子棋

    C語言數(shù)組超詳細講解中篇三子棋

    數(shù)組是一組有序的數(shù)據(jù)的集合,本篇將帶你結(jié)合數(shù)組來實現(xiàn)三子棋小游戲,上手實練更快的能夠掌握數(shù)組使用,感興趣的朋友來看看吧
    2022-04-04
  • C語言函數(shù)指針詳解

    C語言函數(shù)指針詳解

    大家好,本篇文章主要講的是C語言函數(shù)指針詳解,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2022-01-01
  • C++詳細講解內(nèi)存管理工具primitives

    C++詳細講解內(nèi)存管理工具primitives

    文章向大家介紹C++內(nèi)存管理primitives,主要包括primitives使用實例、應(yīng)用技巧、基本知識點總結(jié)和需要注意事項,具有一定的參考價值,需要的朋友可以參考一下
    2022-06-06

最新評論

天柱县| 洪江市| 留坝县| 仪征市| 澜沧| 沙洋县| 南康市| 乌兰察布市| 尼玛县| 长岭县| 翁牛特旗| 周至县| 张北县| 灵寿县| 许昌市| 榕江县| 抚顺县| 永仁县| 视频| 牡丹江市| 康定县| 赤水市| 武胜县| 双峰县| 灌南县| 武安市| 大同县| 扬州市| 麻阳| 台湾省| 海盐县| 保康县| 五河县| 新巴尔虎左旗| 洛宁县| 开原市| 旬阳县| 高唐县| 东乌珠穆沁旗| 贺兰县| 湖南省|