返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C/C++恶意代码盘点之文件自动删除
  • 792
分享到

C/C++恶意代码盘点之文件自动删除

2024-04-02 19:04:59 792人浏览 安东尼
摘要

目录前言1、MoveFileEx重启删除源代码实现2、利用批处理命令删除具体流程源代码实现前言 恶意代码的分类包括计算机病毒、蠕虫、木马、后门、Rootkit、流氓软件、间谍软件、广

前言

恶意代码的分类包括计算机病毒、蠕虫、木马、后门、Rootkit、流氓软件、间谍软件、广告软件、僵尸(bot) 、Exploit等等,有些技术经常用到,有的也是必然用到。

上次咱们分享了一部分,那么今天我们就分享一下文件自动删除。

自删除功能对病毒木马来说同样至关重要,它通常在完成目标任务之后删除自身,不留下任何蛛丝马迹,自删除的方法有很多种,常见的有利用MoveFileEx重启删除和利用批处理删除两种方式。

1、MoveFileEx重启删除

MOVEFILE_DELAY_UNTIL_REBOOT这个标志只能由拥有管理员权限的程序或者拥有本地系统权限的程序使用,而且这个标志不能MOVEFILE_COPY_ALLOWED一起使用,并且,删除文件的路径开头需要加上“\?\"前缀。

源代码实现

#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 构造自删除批处理文件,该批处理文件的功能就是先利用choice或ping命令延迟一定的时间,之后才开始执行删除文件操作,最后执行自删除命令。

2 在程序中创建一个新进程并调用批处理文件,程序在进程创建成功后,立刻退出整个程序。

源代码实现

#include "stdafx.h"
#include <Windows.h>
BOOL CreateChoiceBat(char *pszBatFileName)
{
    int iTime = 5;
    char szBat[MAX_PATH] = { 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};
    // 构造批处理内容
    
    ::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';
    // 构造批处理文件路径
    ::wsprintf(szBatFileName, "%s\\temp.bat", szCurrentDirectory);
    // 构造调用执行批处理的 CMD 命令行
    ::wsprintf(szCmd, "cmd /c call \"%s\"", szBatFileName);
    // 创建自删除的批处理文件
    if (0 == iType)
    {
        // choice 方式
        bRet = CreateChoiceBat(szBatFileName);
    }
    else if (1 == iType)
    {
        // ping 方式
        bRet = CreatePingBat(szBatFileName);
    }
    // 创建新的进程, 以隐藏控制台的方式执行批处理
    if (bRet)
    {
        STARTUPINFO si = { 0 };
        PROCESS_INFORMATioN pi;
        si.cb = sizeof(si);
        //指定wShowWindow成员有效
        si.dwFlags = STARTF_USESHOWWINDOW;
        //此成员设为TRUE的话则显示新建进程的主窗口
        si.wShowWindow = FALSE;
        BOOL bRet = CreateProcess(
            //不在此指定可执行文件的文件名
            NULL,
            //命令行参数
            szCmd,
            //默认进程安全性
            NULL,
            //默认进程安全性
            NULL,
            //指定当前进程内句柄不可以被子进程继承
            FALSE,
            //为新进程创建一个新的控制台窗口
            CREATE_NEW_CONSOLE,
            //使用本进程的环境变量
            NULL,
            //使用本进程的驱动器和目录
            NULL,
            &si,
            &pi);
        if (bRet)
        {
            //不使用的句柄最好关掉
            CloseHandle(pi.hThread);
            CloseHandle(pi.hProcess);
            // 结束进程
            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;

到此这篇关于C/C++恶意代码盘点之文件自动删除的文章就介绍到这了,更多相关C/c++文件自动删除内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C/C++恶意代码盘点之文件自动删除

本文链接: https://lsjlt.com/news/168113.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C/C++恶意代码盘点之文件自动删除
    目录前言1、MoveFileEx重启删除源代码实现2、利用批处理命令删除具体流程源代码实现前言 恶意代码的分类包括计算机病毒、蠕虫、木马、后门、Rootkit、流氓软件、间谍软件、广...
    99+
    2024-04-02
  • win8中c盘windows.old文件夹删除释放C盘空间
    不用想方设法去获取win8系统最高权限,直接删除C盘windows.old文件夹 ,彻底释放C盘空间 鼠标右键点击C盘-->属性,选择“磁盘清理” 在弹出的“C:的...
    99+
    2022-06-04
    文件夹 空间 windows
  • C++ leetcode之删除并获得点数的示例代码
    参考链接  https://leetcode-cn.com/problems/delete-and-earn/ https://leetcode-cn.com/proble...
    99+
    2024-04-02
  • C#之多余控件事件及代码删除问题
    目录多余控件事件及代码删除一、选中控件-F4到属性-事件-选中想要删除的事件名称,删除;二、回到后台程序,删除事件代码即可注意:以上两步不可以反总结多余控件事件及代码删除 很多时候,...
    99+
    2023-01-28
    C#多余控件事件 C#代码删除 C#控件
  • win7如何删除c盘临时文件
    要删除Windows 7中C盘上的临时文件,可以按照以下步骤进行操作:1. 打开Windows资源管理器,可以通过按下Win键+E来...
    99+
    2023-08-24
    win7
  • win10如何删除c盘没用的文件
    要删除C盘上没有用的文件,可以按照以下步骤进行操作:1. 打开“文件资源管理器”,点击“此电脑”或者“我的电脑”图标。2. 在左侧面...
    99+
    2023-09-02
    win10
  • win7如何删除c盘没用的文件
    要删除Win7中C盘的无用文件,可以按照以下步骤进行操作:1. 打开资源管理器,点击“计算机”或“我的电脑”图标。2. 在资源管理器...
    99+
    2023-09-02
    win7
  • 电脑c盘哪些文件可以删除
    这篇文章主要介绍“电脑c盘哪些文件可以删除”,在日常操作中,相信很多人在电脑c盘哪些文件可以删除问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”电脑c盘哪些文件可以删除”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-07-01
  • Win8.1通过删除C盘中的Windows.old文件来给C盘瘦身
      不少升级到Win8.1系统的用户反映,升级Win8.1系统之后C盘空间越来越少。这是什么原因呢原来在升级Win8.1系统过程中,系统会对旧系统进行系统文件备份,得出一个体积不少的Windows.old文...
    99+
    2022-06-04
    盘中 来给 瘦身
  • win7可以删除的c盘文件有哪些
    在Windows 7中,有些文件可以被删除,但需谨慎操作,因为这些文件可能会影响系统的正常运行。以下是一些可以删除的C盘文件的示例:...
    99+
    2023-10-18
    win7
  • win10系统c盘哪些文件可以删除
    在Windows 10系统的C盘中,有一些可以删除的文件包括:1. 临时文件:Windows会自动生成一些临时文件,可以删除以节省空...
    99+
    2023-08-21
    win10
  • C#怎么移动、复制和删除文件
    本篇内容主要讲解“C#怎么移动、复制和删除文件”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#怎么移动、复制和删除文件”吧!C#高级编程:文件操作类大家都知道,移动和删除文件或文件夹可以使用F...
    99+
    2023-06-17
  • win10/win7系统C盘哪些文件可以删除
    在Windows 10和Windows 7系统的C盘中,有一些可以删除的文件,以释放磁盘空间。以下是一些可以考虑删除的文件:1. 临...
    99+
    2023-08-31
    Win10
  • 电脑C盘可以删除的文件用那些
    电脑C盘上可以删除的文件包括:1. 临时文件:Windows系统会在C盘上创建一些临时文件,这些文件通常可以安全删除。2. 回收站文...
    99+
    2023-09-07
    电脑
  • 电脑c盘可以删除的文件有哪些
    这篇文章主要讲解了“电脑c盘可以删除的文件有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“电脑c盘可以删除的文件有哪些”吧!电脑c盘可以删除的文件:首先c盘中的Program Files...
    99+
    2023-07-01
  • windows中c盘可以删除的文件有哪些
    今天小编给大家分享一下windows中c盘可以删除的文件有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。c盘可以删除的文...
    99+
    2023-07-01
  • windows中c盘临时文件可不可以删除
    今天小编给大家分享一下windows中c盘临时文件可不可以删除的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们...
    99+
    2023-03-01
    windows
  • windows中c盘的users文件夹能不能删除
    本篇内容介绍了“windows中c盘的users文件夹能不能删除”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!c盘的users是用户文件夹,...
    99+
    2023-07-04
  • win7系统电脑c盘什么文件可以删除
    win7是一款特别好的出色系统软件,有着很多好用的作用.使用时间长了,win7系统软件C盘会积聚许多文件,因为C盘全是系统软件文件,不清楚什么能删,下边一起来看看win7系统电脑C盘什么文件可以删除的详细介绍。C盘哪些文件能删除开启C盘,点...
    99+
    2023-07-14
  • java代码实现C盘文件统计工具
     概述 工作电脑用了3年多了,100G的C盘也快吃不消了,每次打开看到C盘红了,总要用清理工具清理一下子. 不知道怎么最近清理工具清理了也没有什么效果,把temp下面的文...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作